Tải bản đầy đủ (.docx) (26 trang)

báo cáo đề tài cờ caro

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (708.84 KB, 26 trang )

ĐỀ TÀI: CỜ CARO GVHD: MAI NGỌC
CHÂU
LỜI MỞ ĐẦU
Hiện nay, mạng Lan phát triển rất mạnh cả trong trường học, các cơ quan tổ
chức và ở cả các hộ gia đình. Chính điều đó kéo theo nhu cầu giải trí trong
mạng Lan cũng phát triển theo. Chính vì vậy, một chương trình Game phục vụ
cho nhu cầu trên là rất cần thiết.
Cờ caro là một trò chơi truyền thống vẫn được nhiều người ưa chuộng dù có
nhiều trò chơi với đồ họa hấp dẫn hơn. Cờ carô rất đơn giản nhưng lại đòi hỏi
nhiều sự thông minh và tính toán nước đi khéo léo ở người chơi. Bạn phải
nghĩ ra những phương án chiến lược và bạn sẽ giành chiến thắng trên bàn cờ!
Yêu cầu đề ra:
Yêu cầu đặt ra là xây dựng chương trình Chat hoạt động trong mạng Lan sử
dụng Socket và Multithreading đòi hỏi các chức năng nghiệp vụ sau:
 Chơi cờ caro online
 Chơi cờ caro offline ( với máy)
 Chơi cờ caro ofline ( với 1 người khác)
 Chế độ chat, kết bạn, tính điểm, thăng cấp,…
1
ĐỀ TÀI: CỜ CARO GVHD: MAI NGỌC
CHÂU
NHẬN XÉT CỦA GIÁO VIÊN




































2
ĐỀ TÀI: CỜ CARO GVHD: MAI NGỌC
CHÂU
MỤC LỤC

3
ĐỀ TÀI: CỜ CARO GVHD: MAI NGỌC
CHÂU
Chương I: CÁC KHÁI NIỆM CƠ BẢN
1. Giới thiệu về socket
Là một giao diện lập trình ứng dụng (API : application program interfaces)
mạng , là một phương pháp để thiết lập kết nối truyền thông giữa một chương
trình yêu cầu dịch vụ ( client) và một chương trình cung cấp dịch vụ (server)
trên mạng LAN, WAN hay Internet.
Socket nằm giữa chương trình ứng dụng
với tầng vận chuyển. Nó cho phép ta
chọn giao thức sử dụng ở tầng vận chuyển
là TCP hay UDP cho chương trình ứng
dụng của mình.
1.1 Các lớp cơ bản
Class Namespace Desciption
IPAddress System.Net Cung cấp địa chỉ giao thức Internet
IPEndPoint System.Net Đại diện cho một thiết bị đầu cuối
mạng như địa chỉ IP và số cổng.
TcpListener System.Net.Sockets Lắng nghe cho các kết nối từ
mạnglưới khách hàng TCP.
Socket System.Net.Sockets Thực hiện các giao diện Berkeley
socket
TcpClient System.Net.Sockets Cung cấp các kết nối khách hàng
với các dịch vụ mạng TCP.
NetworkStream System.Net.Sockets Cung cấp các dòng cơ bản của dữ
liệu để truy cập mạng.
1.2 Socket hướng kết nối (TCP Socket)
• Có 1 đường kết nối ảo giữa hai tiến trình
• Một trong hai tiến trình phải đợi tiến trình kia yêu cầu kết nối.

• Có thể sử dụng để liên lạc theo mô hình client/server
• Trong mô hình Client/Server thì Server lắng nghe và chấp nhận một yêu cầu
kết nối
• Các gói tin chuyển đi tuần tự
1.3 Kết nối Server-Client với TCP/IP
ĐỀ TÀI: CỜ CARO GVHD: MAI NGỌC
CHÂU
 Server:
• Tạo một đối tượng System.Net.Sockets.TcpListener để bắt đầu “lắng nghe”
trên một cổng cục bộ.
• Đợi và chấp nhận kết nối từ client với phương thức AccepSocket(). Phương
thức này trả về một đối tượng System.Net.Sockets.Socket dùng để gửi và nhận
dữ liệu.
• Thực hiện giao tiếp với client.
• Đóng Socket.
Thông thường quy trình này sẽ được đặt trong một vòng lặp (lặp lại bước 2)
để chấp nhận nhiều kết nối cùng lúc (sử dụng Thread) hoặc các kết nối lần
lượt.
 Client:
• Tạo một đối tượng System.Net.Sockets.TcpClient
• Kết nối đến server với địa chỉ và port xác định với phương thức
TcpClient.Connect()
• Lấy luồng (stream) giao tiếp bằng phương thức TcpClient.GetStream().
• Thực hiện giao tiếp với server.
• Đóng luồng và socket.
2. MultiThread
Thread là một chuỗi liên tiếp những sự thực thi (mã lệnh hay câu lệnh) trong
chương trình (ứng dụng). Trong một chương trình C#, dễ thấy việc thực thi
được bắt đầu bằng phương thức main() và tiếp tục cho đến khi kết thúc hàm
ĐỀ TÀI: CỜ CARO GVHD: MAI NGỌC

CHÂU
main(). Cấu trúc này rất hay cho những chương trình có một chuỗi xác định
những nhiệm vụ liên tiếp, nhưng thường thì trong một chương trình ứng có
nhiều hơn một công việc vào cùng một lúc.
Có thể cùng hoạt động trong một không gian địa chỉ => Cùng chia sẻ tài
nguyên chung.
Khai báo thread: using System;
using System.Threading;
Tạo 1 thread : class Program
{
static void Main ()
{
Thread t = new Thread(WriteY);
t.Start();
}
static void WriteY ()
{
while (true)
Console.Write("T");
}
}
Chờ đợi một luồng khác
Bằng việc sử dụng phương thức Join(); ta có thể cho phép chờ đợi một luồng
khác thực hiện xong (để thu thập dữ liệu chẳng hạn - do chia nhỏ công việc
mà), thì luồng đã gọi nó mới tiếp tục được công việc của nó

Một số phương thức cơ bản của class Thread
ĐỀ TÀI: CỜ CARO GVHD: MAI NGỌC
CHÂU
Chương II: THIẾT KẾ CƠ SỞ DỮ LIỆU

1. Table DANHSACHTHANHVIEN
• Chức năng: Lưu thông tin về User (quản lý account, pass, tính điểm, xếp hang
cho User)
• Danh sách các thuộc tính:
2. Table FRIEND
• Danh sách các thuộc tính:
ĐỀ TÀI: CỜ CARO GVHD: MAI NGỌC
CHÂU
Chương III: THIẾT KẾ CÁC THÀNH PHẦN XỬ LÝ
1. Mô hình luồng xử lý đăng nhập:
Mô tả qui trình xử lý:
ĐỀ TÀI: CỜ CARO GVHD: MAI NGỌC
CHÂU
Khi một User yêu cầu đăng nhập hệ thống, Client sẽ gởi Username và
Password cho Server. Server sẽ kiểm tra xem Username và Password có hợp lệ
hay không. Sau đó, Server sẽ kiểm tra Username này đã đăng nhập chưa. Nếu
đăng nhập thành công, Server sẽ lấy danh sách các Friend đang Offline và
Online của User và gởi cho User và cập nhật lại trạng thái đăng nhập của User.
Đồng thời cũng gởi thông báo đến các Users khác có Friend là User này mới
Online.
2. Mô hình luồng xử lý đăng xuất:
ĐỀ TÀI: CỜ CARO GVHD: MAI NGỌC
CHÂU
Mô tả qui trình xử lý:
Khi một User yêu cầu đăng xuất lại hệ thống, Client sẽ hiển thị lại màn hình
đăng nhập và đồng thời gởi thông báo đang xuất đến Server. Server sẽ gởi
thông báo đăng xuất tới các Users có Friend là User này. Bên cạnh đó, Server
kiểm tra tất cả các Groups mà User này đang tham gia. Server sẽ gởi thông báo
hủy đến các Group mà User này là người khởi tạo và sẽ gởi thông báo đăng
xuất đến các Group mà User này chỉ tham gia với tư cách là thành viên. Cuối

cùng, Server sẽ cập nhật lại trạng thái đăng nhập của User.
ĐỀ TÀI: CỜ CARO GVHD: MAI NGỌC
CHÂU
3. Mô hình luồng xử lý gửi tin nhắn
Mô tả qui trình xử lý:
Khi người dùng nhập tin nhắn và nhấn phím Enter (hoặc button Send), Client
sẽ hiển thị tin nhắn trên Tab Chat đồng thời gởi tin nhắn và tên người nhận lên
cho Server. Server sẽ kiểm tra xem người nhận có phải đang Online hay
không. Nếu người nhận đang Online, Server sẽ gởi tin nhắn và tên người gởi.
Khi nhận được tin nhắn, Client sẽ hiển thị tin nhắn thông qua một Tab Chat
(Tab này sẽ được mở nếu nó chưa có trước đó).
ĐỀ TÀI: CỜ CARO GVHD: MAI NGỌC
CHÂU
4. Mô hình luồng xử lý FriendList
Mô tả qui trình xử lý:
Khi người dùng chọn chức năng thêm một Friend vào FriendList, màn hình
thêm FriendList sẽ được mở ra. Người dùng sẽ nhập tên của Friend và sau đó
Client sẽ gởi tên Friend này lên cho Server. Trước tiên, Server sẽ kiểm tra
Friend này có tồn tại hay không. Tiếp theo, sẽ kiểm tra Friend này đã được
thêm vào FriendList trước đó hay chưa. Nếu Friend này chưa có trong
FriendList, Server sẽ thêm Friend này vào FriendList của người dùng. Cuối
cùng, Server sẽ gởi kết quả của công việc về cho Client. Dựa vào kết quả nhận
được, Client sẽ thông báo cho người dùng biết là việc thêm thành công hay
thất bại (có hai nguyên nhân thất bại là Friend không tồn tại và Friend đã có
trong FriendList rồi).
ĐỀ TÀI: CỜ CARO GVHD: MAI NGỌC
CHÂU
5. Xóa một Friend khỏi FriendList:
Mô tả qui trình xử lý:
Khi người dùng chọn chức năng xóa một Friend vào FriendList, màn hình

thêm FriendList sẽ được mở ra. Người dùng sẽ nhập tên của Friend và sau đó
Client sẽ gởi tên Friend này lên cho Server. Trước tiên, Server sẽ kiểm tra
Friend này có tồn tại hay không. Tiếp theo, sẽ kiểm tra Friend này đã được
thêm vào FriendList trước đó hay chưa. Nếu Friend này đã có trong
ĐỀ TÀI: CỜ CARO GVHD: MAI NGỌC
CHÂU
FriendList, Server sẽ xóa Friend này ra khỏi FriendList của người dùng. Cuối
cùng, Server sẽ gởi kết quả của công việc về cho Client. Dựa vào kết quả nhận
được, Client sẽ thông báo cho người dùng biết là việc Xóa thành công hay thất
bại (có hai nguyên nhân thất bại là Friend không tồn tại và Friend chưa có
trong FriendList) đồng thời cập nhật lại màn hình chính.
6. Giải thuật cờ caro
Hình: Mô tả quá trình xử lí trên bàn cờ
Code luận lý:
Xét hàng ngang:
ĐỀ TÀI: CỜ CARO GVHD: MAI NGỌC
CHÂU
private int Ngang(int iX,int iY)
{
int iChanNgang = 0;
int iCountNgang = 0;
NgangTrai(iX, iY, ref iCountNgang, ref iChanNgang);
NgangPhai(iX, iY, ref iCountNgang, ref iChanNgang);
if (iChanNgang == 2)
return 0;
else if (iCountNgang > 4)
return 2;
else if (iCountNgang == 4)
return 1;


return -1;
}
Xét hàng đứng:
private int Dung(int iX, int iY)
{
int iCountDung = 0;
int iChanDung = 0;
DungTren(iX, iY, ref iCountDung, ref iChanDung);
DungDuoi(iX, iY, ref iCountDung, ref iChanDung);
if (iChanDung == 2)
return 0;
else if (iCountDung > 4)
return 2;
else if (iCountDung == 4)
return 1;
return -1;
}
ĐỀ TÀI: CỜ CARO GVHD: MAI NGỌC
CHÂU
Xét hàng chéo thuận:
private int CheoThuan(int iX, int iY)
{
int iCountCheoThuan = 0;
int iChanCheoThuan = 0;
CheoThuanTren(iX, iY, ref iCountCheoThuan, ref iChanCheoThuan);
CheoThuanDuoi(iX, iY, ref iCountCheoThuan, ref iChanCheoThuan);
if (iChanCheoThuan == 2)
return 0;
else if (iCountCheoThuan > 4)
return 2;

else if (iCountCheoThuan == 4)
return 1;

return -1;
}
Xét hàng chéo nghich:
private int CheoNghich(int iX, int iY)
{
int iCountCheoNghich = 0;
int iChanCheoNghich = 0;
CheoNghichTren(iX, iY, ref iCountCheoNghich, ref
iChanCheoNghich);
CheoNghichDuoi(iX, iY, ref iCountCheoNghich, ref
iChanCheoNghich);
if (iChanCheoNghich == 2)
return 0;
else if (iCountCheoNghich > 4)
return 2;
else if (iCountCheoNghich == 4)
return 1;
ĐỀ TÀI: CỜ CARO GVHD: MAI NGỌC
CHÂU
return -1;
}
Chương VI: THIẾT KẾ GIAO DIỆN
1. Bên server
1.1 Đăng nhập
1.2 Sau khi đăng nhập
ĐỀ TÀI: CỜ CARO GVHD: MAI NGỌC
CHÂU

ĐỀ TÀI: CỜ CARO GVHD: MAI NGỌC
CHÂU
1.3 Thiết lập thông tin user trên server
2. Bên client
2.1 Đăng kí
ĐỀ TÀI: CỜ CARO GVHD: MAI NGỌC
CHÂU
2.2 Đăng nhập
ĐỀ TÀI: CỜ CARO GVHD: MAI NGỌC
CHÂU
2.3 Sau khi đăng nhập
ĐỀ TÀI: CỜ CARO GVHD: MAI NGỌC
CHÂU
2.4 Khi vào chơi online
2.5 Danh sách bạn online và bạn bè đã kết bạn

ĐỀ TÀI: CỜ CARO GVHD: MAI NGỌC
CHÂU

2.6 Khung chat

ĐỀ TÀI: CỜ CARO GVHD: MAI NGỌC
CHÂU
2.7 Khi chơi offline (với máy)
ĐỀ TÀI: CỜ CARO GVHD: MAI NGỌC
CHÂU

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×