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

VIẾT CHƯƠNG TRÌNH CHƠI CARO (MULTI PLAYER,NETWORK PLAYER)

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 (586.49 KB, 17 trang )

TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI THÀNH PHỐ HỒ CHÍ MINH
BÁO CÁO ĐỒ ÁN MÔN LẬP
TRÌNH ỨNG DỤNG MẠNG
TÊN ĐỒ ÁN:VIẾT CHƯƠNG TRÌNH CHƠI CARO
(MULTI PLAYER,NETWORK PLAYER)
GIÁO VIÊN HƯỚNG DẪN:THẦY MAI NGỌC CHÂU
TP.HCM NGÀY:11/2/2013
LỚP:KM10
NHÓM 5
NĂM HỌC 2013-2014
Mục Lục
I.Tổng Quan Về Lập Trình Socket 3
Mô Hình Client/Server
Kết Nối Server - Client Với TCP/IP
Giới Thiệu Về Sockets
Giao Thức
II.Giới Thiệu Sơ Lược Về Trò Chơi Cờ Caro:
III.Giới Thiệu Sơ Lược Về Đề Tài
IV.Nội Dung Chương Trình
V.Bài Toán
VI.Thiết Kế Chương Trình
2 | L ậ p T r ì n h M ạ n g _ Ứ n g d ụ n g l ậ p t r ì n h s o c k e t l ậ p t r ì n h p h ầ n m ề m c h a t


t r o n g M ạ n g L A N
I.Tổng quan về Lập trình Socket
Mô hình client/server
Mô hình được phổ biến nhất và được chấp nhận rộng rãi trong các
hệ thống phân tán là mô hình client/server. Trong mô hình này sẽ có một
tập các tiến trình mà mỗi tiến trình đóng vai trò như là một trình quản lý
tài nguyên cho một tập hợp các tài nguyên cho trước và một tập hợp các


tiến trình client trong đó mỗi tiến trình thực hiện một tác vụ nào đó cần
truy xuất tới tài nguyên phần cứng hoặc phần mềm dùng chung. Bản
thân các trình quản lý tài nguyên cần phải truy xuất tới các tài nguyên
dùng chung được quản lý bởi một tiến trình khác, vì vậy một số tiến trình
vừa là tiến trình client vừa là tiến trình server. Các tiến trình phát ra các
yêu cầu tới các server bất kỳ khi nào chúng cần truy xuất tới một trong
các tài nguyên của các server. Nếu yêu cầu là đúng đắn thì server sẽ
thực hiện hành động được yêu cầu và gửi một đáp ứng trả lời tới tiến
trình client.
Mô hình client/server cung cấp một cách tiếp cận tổng quát để chia
sẻ tài nguyên trong các hệ thống phân tán. Mô hình này có thể được cài
đặt bằng rất nhiều môi trường phần cứng và phần mềm khác nhau. Các
máy tính được sử dụng để chạy các tiến trình client/server có nhiều kiểu
khác nhau và không cần thiết phải phân biệt giữa chúng; cả tiến trình
client và tiến trình server đều có thể chạy trên cùng một máy tính. Một
tiến trình server có thể sử dụng dịch vụ của một server khác.
Mô hình truyền tin client/server hướng tới việc cung cấp dịch vụ.
Quá trình trao đổi dữ liệu bao gồm:
1. Truyền một yêu cầu từ tiến trình client tới tiến trình server.
2. Yêu cầu được server xử lý.
3. Truyền đáp ứng cho client.
Mô hình truyền tin này liên quan đến việc truyền hai thông điệp và
một dạng đồng bộ hóa cụ thể giữa client và server. Tiến trình server phải
nhận thức được thông điệp được yêu cầu ở bước một ngay khi nó đến
và hành động phát ra yêu cầu trong client phải được tạm dừng (bị phong
tỏa) và buộc tiến trình client ở trạng thái chờ cho tớ khi nó nhận được
đáp ứng do server gửi về ở bước ba.
3 | L ậ p T r ì n h M ạ n g _ Ứ n g d ụ n g l ậ p t r ì n h s o c k e t l ậ p t r ì n h p h ầ n m ề m c h a t



t r o n g M ạ n g L A N
Mô hình client/server thường được cài đặt dựa trên các thao tác cơ
bản là gửi (send) và nhận (receive).
Quá trình giao tiếp client và server có thể diễn ra theo một t rong hai
chế độ: bị phong tỏa (blocked) và không bị phong tỏa (non-blocked).
Chế độ bị phong tỏa (blocked):
Trong chế độ bị phong tỏa, khi tiến trình client hoặc server phát ra
lệnh gửi dữ liệu (send), việc thực thi của tiến trình sẽ bị tạm ngừng cho
tới khi tiến trình nhận phát ra lệnh nhận dữ liệu (receive).
Tương tự đối với tiến trình nhận dữ liệu, nếu tiến trình nào đó (client
hoặc server) phát ra lệnh nhận dữ liệu, mà tại thời điểm đó chưa có dữ
liệu gửi tới thì việc thực thi của tiến trình cũng sẽ bị tạm ngừng cho tới
khi có dữ liệu gửi tới.
Chế độ không bị phong tỏa (non-blocked)
Trong chế độ này, khi tiến trình client hay server phát ra lệnh gửi dữ
liệu thực sự, việc thực thi của tiến trình vẫn được tiến hành mà không
quan tâm đến việc có tiến trình nào phát ra lệnh nhận dữ liệu đó hay
không.
Tương tự cho trường hợp nhận dữ liệu, khi tiến trình phát ra lệnh
nhận dữ liệu, nó sẽ nhận dữ liệu hiện có, việc thực thi của tiến trình vẫn
được tiến hành mà không quan tâm đến việc có tiến trình nào phát ra
lệnh gửi dữ liệu tiếp theo hay không.
Kết nối Server - Client với TCP/IP
Khi được chạy, server cần được xác định rõ địa chỉ IP và sẽ “lắng
nghe” trên một port cụ thể. Server sẽ nằm trong trạng thái này cho đến
khi client gửi đến một yêu cầu kết nối. Sau khi được server chấp nhận,
4 | L ậ p T r ì n h M ạ n g _ Ứ n g d ụ n g l ậ p t r ì n h s o c k e t l ậ p t r ì n h p h ầ n m ề m c h a t


t r o n g M ạ n g L A N

một connection sẽ hình thành cho phép server và client giao tiếp với
nhau.
Cụ thể hơn, các bước tiến hành trên server và client mà ta cần thực
hiện sử dụng giao thức TCP/IP trong C# (có thể chạy server và client trên
cùng một máy):
Server:
1. 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ộ.
2. Đợ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.
3. Thực hiện giao tiếp với client.
4. Đó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:
1. Tạo một đối tượng System.Net.Sockets.TcpClient
2. Kết nối đến server với địa chỉ và port xác định với phương
thức TcpClient.Connect()
3. Lấy luồng (stream) giao tiếp bằng phương thức
TcpClient.GetStream().
4. Thực hiện giao tiếp với server.
5. Đóng luồng và socket.
Quy trình này có thể được minh họa theo mô hình sau:
5 | L ậ p T r ì n h M ạ n g _ Ứ n g d ụ n g l ậ p t r ì n h s o c k e t l ậ p t r ì n h p h ầ n m ề m c h a t


t r o n g M ạ n g L A N

Giới thiệu về Sockets
Trong năm 60 các nhà nghiên cứu thuộc viện nghiên cứu những dự
án cao câp (ARPA) Mỹ đc yêu cầu từ cơ quan bộ quốc phòng Mỹ (DoD
năm 72 ARPA đc sát nhập vào DoD) phát triển một hệ thống lưu trữ
thông tin quân sự quan trọng để phòng trường hợp sẩy ra chiến tranh.
Và kết quả làm việc của họ là mạng điện tử ARPAnet ra đời. trong đó tất
cả những thông tin quân sự đc lưu trên các máy tính và chúng làm một
phần của mạng. các máy tính đc đắt ở những nơi khác nhau và việc
chao đối thông tin giữa chúng thông qua khá nhiều cách khác nhau. Khi
cập nhập lại dữ liệu hay thêm mới sự đồng bộ các máy chỉ diễn ra trong
thời gian ngắn. nó đảm bảo phòng chánh cho trường hợp một máy tính
bị phá hủy nhưng thông tin trên đó không bị mất.
Từ những nắm 70 DoD đã cho phép những viện nghiên cứu phi quân sự
đc tiếp cận vào mạng ARPAnet. Và những nhà nghiên cứu quan tâm đến
việc kết nối máy tính hơn là việc đồng bộ dữ liệu. họ sử dụng nó để
chuyền dữ liệu và những sinh viên trong viện đã sử dụng vào những
phần của mạng và nó chở thành Usenet – mạng sử dụng.
Bắt đầu từ nắm 80 mạng quân sự và mạng dân dụng của ARPAnet
đc chia ra hình thành những khu vực mạng usenet và những khu vực
mạng này đc nối lại với nhau thế là INTERNET ra đời.
Một điều thực sự cần thiết là tiêu chuẩn hóa những cách thức liên kết
6 | L ậ p T r ì n h M ạ n g _ Ứ n g d ụ n g l ậ p t r ì n h s o c k e t l ậ p t r ì n h p h ầ n m ề m c h a t


t r o n g M ạ n g L A N
giữa các mạng khác nhau và các kiểu máy tính khác nhau bởi thế
TCP/Internet Protocol (TCP/IP) đc phát triển bởi ARPA chở thành một
tiêu chuẩn rộng rãi trên toàn mạng Internet.
TCP/IP là một giao thức thân thiện nó cho phép kết nối những máy
tính để chuyền thông và chia sẻ tài nguyên suyên qua mạng TCP và IP

chỉ là 2 giao thức trong bộ giao thức này còn có UDP và tất cả nhưng
giao thức này đc hỗ trợ trong .NET bạn có thể xen ở lớp
System.NET.sockets.socket.
Để truy nhập vào IP – cơ bản của networks từ tầng ứng dụng chúng ta
phải sử dụng socket – kênh. Một socket là một giao lập trình và truyền
thông điểm cuối nó cho phép thực hiện kết nối đến một máy tính khác
gửi và nhận thông tin với máy tính đó kiến trúc truyền thống giữa 2 máy
tính .
Thông thường tồn tại 3 loại sockets
• Raw socket : là loại thực thi dùng trên tầng mạng ví dụ như
giao thức IP
• Datagram sockets : Datagram là một gói dữ liệu đâu là kiểu
sockets đc thực thi trên tầng transposts – giao vận. tuy vậy sự
chuyển giao đến một tầng là không chặt chẽ
• Stream sockets : Nó đối nghịch lại datagram socket là
những sockets đc cung cấp cho dòng dữ liệu.
Kiến trúc truyền thông hiện đại sử dụng stack cho những tầng
giao thức khác nhau nơi dữ liệu được đưa tới là tầng cao nhất.
mỗi một tầng cộng thêm những thông tin đặc trưng giao thức
vào dữ liệu và đưa nó cho tâng kế tiếp. tầng thấp nhất thực
hiện việc gửi dữ liệu. nơi tiếp nhận dữ liệu, thông qua mỗi tầng
sẽ bỏ đi những thông tin đc thêm vào trong các tầng của bên
gửi cho đến khi nó lên đến tầng ứng dụng.
Tầng ứng dụng có thể bị chia làm nhiều các tầng con. Bạn
có thể nghĩ như thế này tầng ứng dụng sử dụng nền tảng XML
cơ bản giao thức try nhập đối tựng đơn giản (SOAP) dùng giao
thức HTTP để gửi những câu lệnh điểu khiển SOAP trong XML
nó đc gọi là HTTP tunneling đc sử dụng một cách đặc biệt đối
với tường lửa khi mà tường lửa đc cấu hình không cho phép
SOAP suyên qua nó

7 | L ậ p T r ì n h M ạ n g _ Ứ n g d ụ n g l ậ p t r ì n h s o c k e t l ậ p t r ì n h p h ầ n m ề m c h a t


t r o n g M ạ n g L A N
Một socket có thể thực hiện bảy thao tác cơ bản:
1. Kết nối với một máy ở xa (vd.chuẩn bị để gửi và nhận data).
2. Gửi dữ liệu.
3. Nhận dữ liệu.
4. Ngắt liên kêt.
5. Gán cổng.
6. Nghe dữ liệu đến.
7. Chấp nhận liên kết từ các máy ở xa trên cổng đã được gán.
Địa chỉ socket
• Địa chỉ của một socket trên mạng TCP/IP gồm có hai phần:
– Địa chỉ IP: một số nguyên 32 bits một card mạng trên
máy tính (host)
– Cổng dịch vụ: 16 bits xác định điểm kết nối với một ứng
dụng trên một host.
Giao Thức
 Giao thức TCP (Transmission Control Protocol - "Giao thức điều
khiển truyền vận") là một trong các giao thức cốt lõi của bộ giao thức
TCP/IP. Sử dụng TCP, các ứng dụng trên các máy chủ được nối mạng
có thể tạo các "kết nối" với nhau, mà qua đó chúng có thể trao đổi dữ liệu
hoặc các gói tin. Giao thức này đảm bảo chuyển giao dữ liệu tới nơi nhận
một cách đáng tin cậy và đúng thứ tự. TCP còn phân biệt giữa dữ liệu
của nhiều ứng dụng (chẳng hạn, dịch vụ Web và dịch vụ thư điện tử)
đồng thời chạy trên cùng một máy chủ.
TCP hỗ trợ nhiều giao thức ứng dụng phổ biến nhất trên Internet và
các ứng dụng kết quả, trong đó có WWW, thư điện tử và Secure Shell.
Trong bộ giao thức TCP/IP, TCP là tầng trung gian giữa giao thức

IP bên dưới và một ứng dụng bên trên. Các ứng dụng thường cần các
kết nối đáng tin cậy kiểuđường ống để liên lạc với nhau, trong khi đó,
giao thức IP không cung cấp những dòng kiểu đó, mà chỉ cung cấp dịch
vụ chuyển gói tin không đáng tin cậy. TCP làm nhiệm vụ của tầng giao
vận trong mô hình OSI đơn giản của các mạng máy tính.
Các ứng dụng gửi các dòng gồm các byte 8-bit tới TCP để chuyển
qua mạng. TCP phân chia dòng byte này thành các đoạn (segment) có
8 | L ậ p T r ì n h M ạ n g _ Ứ n g d ụ n g l ậ p t r ì n h s o c k e t l ậ p t r ì n h p h ầ n m ề m c h a t


t r o n g M ạ n g L A N
kích thước thích hợp (thường được quyết định dựa theo kích thước
của đơn vị truyền dẫn tối đa (MTU) của tầng liên kết dữ liệu của mạng
mà máy tính đang nằm trong đó). Sau đó, TCP chuyển các gói tin thu
được tới giao thức IP để gửi nó qua một liên mạng tới mô đun TCP tại
máy tính đích. TCP kiểm tra để đảm bảo không có gói tin nào bị thất lạc
bằng cách gán cho mỗi gói tin một "số thứ tự" (sequence number). Số
thứ tự này còn được sử dụng để đảm bảo dữ liệu được trao cho ứng
dụng đích theo đúng thứ tự. Mô đun TCP tại đầu kia gửi lại "tin báo nhận"
(acknowledgement) cho các gói tin đã nhận được thành công; một "đồng
hồ" (timer) tại nơi gửi sẽ báo time-out nếu không nhận được tin báo nhận
trong khoảng thời gian bằng một round-trip time (RTT), và dữ liệu (được
coi là bị thất lạc) sẽ được gửi lại. TCP sử dụng checksum (giá trị kiểm
tra) để xem có byte nào bị hỏng trong quá trình truyền hay không; giá trị
này được tính toán cho mỗi khối dữ liệu tại nơi gửi trước khi nó được
gửi, và được kiểm tra tại nơi nhận.
o TCP cung cấp những chức năng chính sau:
• Thiết lập, duy trì, giải phóng liên kết giữa 2 thực thể TCP
• Phân phát gói tin đáng tin cậy
• Tạo số thứ tự (Squencing) các gói dữ liệu

• Điều khiển lỗi
• Cung cấp khả nằng đa kết nối cho các quá trình khác nhau
giữa thực thể nguồn và thực thể đích thông qua việc sử
dụng số hiệu cổng
• Truyền dữ liệu theo chế độ song

cổng (Full_Duplex)
o TCP có những đặc tính sau:
• Hướng kết nối
• Đảm bảo độ tin cậy trong quá trình truyền dữ liệu
• Phân đoạn dữ liệu truyền thành các gói tin đơn lẻ
• Dữ liệu truyền được đánh số thứ tự
• Cung cấp cơ chế phản hồi sau khi nhận được dữ liệu
• Sử dụng cơ chế phát hiện lỗi checksums
o Chức năng chính client kết nối tới server (tcp)
• Xác định địa chỉ IP và cổng dịch vụ ở server
9 | L ậ p T r ì n h M ạ n g _ Ứ n g d ụ n g l ậ p t r ì n h s o c k e t l ậ p t r ì n h p h ầ n m ề m c h a t


t r o n g M ạ n g L A N
• Tạo một socket với cổng dịch vụ cục bộ bất kỳ do TCP chỉ
định.
• Kết nối socket đến server.
• Gửi yêu cầu và nhận thông tin phản hồi từ server.
• Đóng kết nối.
o Chức năng chính server chấp nhận kết nối client (tcp)
• Tạo một socket và gán cho socket một địa chỉ cố định (IP và
port) để cung cấp dịch vụ
• Đặt socket ở chế độ passive
• Chấp nhận yêu cầu thiết lập kết nối từ client và nhận socket

mới từ hệ thống
• Thực hiện quá trình lặp nhận yêu cầu và gửi thông tin phản
hồi
• Khi client kết thúc, đóng kết nối và trở về trạng thái chờ chấp
nhận yêu cầu thiết lập kết nối từ các client
 Giao Thức UDP (User Datagram Protocol) là một trong những giao
thức cốt lõi của giao thức TCP/IP. Dùng UDP, chương trình trên mạng
máy tính có thể gởi những dữ liệu ngắn được gọi là datagram tới máy
khác. UDP không cung cấp sự tin cậy và thứ tự truyền nhận
mà TCP làm; các gói dữ liệu có thể đến không đúng thứ tự hoặc bị mất
mà không có thông báo. Tuy nhiên UDP nhanh và hiệu quả hơn đối với
các mục tiêu như kích thước nhỏ và yêu cầu khắt khe về thời gian. Do
bản chất không trạng thái của nó nên nó hữu dụng đối với việc trả lời các
truy vấn nhỏ với số lượng lớn người yêu cầu.
Những ứng dụng phổ biến sử dụng UDP như DNS (Domain Name
System), ứng dụng streaming media, Voice over IP, Trivial File Transfer
Protocol (TFTP), và game trực tuyến.
o UDP có những đặc tính sau:
• Phi kết nối
• Không phân đoạn dữ liệu truyền
• Nếu có lỗi xảy ra, ứng dụng bắt buộc phải thực hiện truyền
lại dữ liệu
• Không có cơ chế phản hồi sau khi nhận dữ liệu
10 | L ậ p T r ì n h M ạ n g _ Ứ n g d ụ n g l ậ p t r ì n h s o c k e t l ậ p t r ì n h p h ầ n m ề m c h a t


t r o n g M ạ n g L A N
o UDP Client:
• Xác định địa chỉ IP và cổng dịch vụ ở server
• Tạo một socket với cổng dịch vụ cục bộ bất kỳ do UDP chỉ

định
• Chỉ định server cần giao tiếp
• Gửi yêu cầu và nhận thông tin phản hồi từ server
• Đóng socket
o UDP Server:
• Tạo một socket và gán cho socket một địa chỉ cố định (IP
và port) để cung cấp dịch vụ
• Thực hiện quá trình lặp nhận yêu cầu và gửi thông tin
phản hồi

11 | L ậ p T r ì n h M ạ n g _ Ứ n g d ụ n g l ậ p t r ì n h s o c k e t l ậ p t r ì n h p h ầ n m ề m c h a t


t r o n g M ạ n g L A N
II.Giới

th

i ệu

s

ơ lược



về trò chơi cờ caro:
Cờ caro là một loại trò chơi khá phổ biến vì luật chơi đơn giản và
không đòi hỏi nhiều về công cụ chơi, bạn chỉ cần một tờ giấy có kẻ ô
và bút là đủ.Chính vì vậy trò chơi này lại càng phổ biến trong giới học

sinh sinh viên.
Cờ caro là trò chơi đối kháng 2 người: Trò chơi đối kháng (two-
agent, conflicting game ) : Gồm 2 người chơi, đối thủ này sẽ tìm cách
dành chiến thắng trước đối thủ kia trong một số hữu hạn nước đi, mỗi
nước đi đuợc tạo ra dựa từ 1 trạng thái bất kỳ của trận đấu. Nếu sau 1
số giới hạn nước đi, nếu chưa ai dành chiến thắng thì xem như hoà.
Ngoài ra, thông tin về trận đấu là hoàn toàn biết đuợc (perfect
information) đối với cả 2 đối thủ.
Trò chơi có luật chơi hết sức đơn giản như sau: mỗi đối thủ trong
mỗi lượt đi của mình sẽ chọn 1 ô trống còn lại trên bàn cờ (kẻ sẵn các ô
lưới ) sao cho tạo thành n con liên tiếp để chiến thắng Nếu n = 3 thì
nó có 1 tên khác là Tic Tac Toe, nhưng ở đây trò chơi kết thúc khi có
một người đạt được 5 con liền nhau cùng trên một hàng ngang, hàng
dọc hoặc đường chéo. Nếu khi đã chơi kín bàn cờ nhưng không có ai
đạt được 5 con liền nhau thì trò chơi kết thúc và hoà nhau. Trò chơi cờ
caro có nguồn gốc từ rất lâu, và là trò chơi mang tính quốc tế. Ở các
nước khác nhau trò chơi này mang những cái tên khác nhau nhưng đều
gắn với luật chơi đơn giản của nó. Ví dụ như: ở Nhật trò chơi có tên
Gomoku, Gobang (Go trong tiếng Nhật có nghĩa là 5, Gomoku có nghĩa
là 5 điểm), ở Anh trò chơi có tên là Connect 5.
Sau đây là một hình ảnh của trò chơi Gomoku trên bàn cờ 15x15
Ta thấy rõ, trên bàn cờ, quân
đen là quân đi trước, các nước đi
theo thứ tự được đánh dấu như trên
Do thông thường quân đen được
đi trước nên người chơi thấy rõ
quân đen có lợi thế hơn hẳn quân
trắng. Victor Allis đã chứng minh
được rằng quân đen hoàn toàn có
12 | L ậ p T r ì n h M ạ n g _ Ứ n g d ụ n g l ậ p t r ì n h s o c k e t l ậ p t r ì n h p h ầ n m ề m c h a t



t r o n g M ạ n g L A N
thể chiến thắng được dễ dàng. Và vì vậy có một số phiên bản khác
nhau của trò chơi cùng với sự thay đổi nho nhỏ trong luật chơi để nhằm
giảm lợi thế của quân đen đi. Trong đó ở Việt Nam, trò chơi cờ caro là
một phiên bản như vậy với sự tăng thêm trong luật chơi là người thắng
phải có 5 quân liền nhau và không bị chặn ở 2 đầu. Luật chơi làm cho
trò chơi Gomoku trở nên phức tạp hơn và tăng thêm sức mạnh cho
quân trắng có thể dành chiến thắng.
III.Giới th i ệu s

ơ lược

về đề tài:
Đề tài là xây dưng một chương trình phục vụ chơi cờ caro với các
chức năng cơ bản như sau:
• Chức năng singel player:chơi với máy.
• Chức năng Multi Player: Chơi 2 người.
• Chơi online: Chương trình hỗ trợ cho 2 người ở trên cùng
mạng LAN.
Lý do chọn đề tài:
Như đã giới thiệu ở trên, Cờ caro là một trò chơi có từ lâu đời
nay, hiện nay nó rất phổ biến trong giới học đường. Từ nhu cầu
giải trí đó, đã có rất nhiều hãng đã sản xuất trò chơi caro trên máy
tính, giúp cho việc chơi cờ caro được dễ dàng hơn, và bạn có thể
đánh cờ với máy mà không cần một người bạn thực sự.
Trên cùng mục đích muốn đem trò chơi cờ caro đến với mọi
người, làm cho việc chơi cờ trở nên dễ dàng hơn, có thể hổ trợ
cho bạn chơi với bạn bè, nhóm em đã chọn chương trình chơi cờ

caro làm đề tài của mình.
IV.Nội dung chương trình :
Xây dựng chương trình chơi cờ caro (để 2 người chơi với nhau)
gồm các nội dung sau:
• Vẽ bàn cờ .
• Hiển thị 2 ký hiệu (ví dụ O và X) để người đi trước chọn.
Nhập họ tên của từng người chơi.
• Cho phép người chơi dùng các phím mũi tên hoặc dùng
chuột để di chuyển con trỏ đến các ô trên bàn cờ.
• Cho phép hoãn sau một nước.
13 | L ậ p T r ì n h M ạ n g _ Ứ n g d ụ n g l ậ p t r ì n h s o c k e t l ậ p t r ì n h p h ầ n m ề m c h a t


t r o n g M ạ n g L A N
• Sau mỗi nước chương trình kiểm tra xem đã ai thắng
cuộc hay chưa. Nếu có người thắng, chương trình thông
báo họ tên người thắng và kết thúc một ván, trái lại trò
chơi được tiếp tục.
• Sau khi kết thúc một ván, chương trình sẽ cho người chơi
tiếp hay kết thúc, tùy theo sự lựa chọn của người chơi.
V.Bài Toán.
Viết chương trình để thực hiện trò chơi đánh cờ caro
(TicTacToe) trên mạng:
Cho phép nhiều người chơi ở những máy khác nhau ở mọi nơi
trên internet. Máy server tạo ra một Socket phục vụ kết nối từng cặp
người tham gia chơi cờ caro. Theo từng ván cờ. Mỗi phiên là một
luồng đảm bảo sự trao đổi giữa 2 người chơi và xác định trạng thái (
thắng/ thua) của ván cờ. Trong mỗi ván cờ người đầu kết nối với
server được gọi là người thứ nhất được gán với ký hiệu ‘X’ còn
người thứ 2 được gán với ký hiệu là ‘O’. Họ thay phiên nhau đánh

vào những ô dự kiến ( nhấn vào ô mà mình định đánh) để nhanh
chóng đạt được số ô (ví dụ 4, hay 5) thẳng hang theo hàng ngang,
hàng dọc và đường chéo. Người nào đánh được số ô đó trước,
người đó thắng cờ. Số ván cờ được tạo trên server là không hạn
chế.
Phân Tích Bài Toán.
Dựa vào bài toán ta phải thực hiện những công việc sau:
- Tạo ra 1 Server cho game caro.
- Tạo ra 1 Client cho game caro.
- Máy Server tạo ra 1 Socket phục vụ kết nối từng cặp
Client chơi.
Luật chơi của game được thiết lập như sau:
- Client kết nối trước thì được gọi là người chơi 1 và được
đánh trước.
- Client kết nối sau thì được gọi là người chơi 2 và đánh
sau.
- Client nào đánh được số ô trên hàng dọc, hàng ngang
và đường chéo lớn hơn hoặc bằng 5 ô thì thắng cuộc.
14 | L ậ p T r ì n h M ạ n g _ Ứ n g d ụ n g l ậ p t r ì n h s o c k e t l ậ p t r ì n h p h ầ n m ề m c h a t


t r o n g M ạ n g L A N
VI.THIẾT KẾ CHƯƠNG TRÌNH
Giao Diện
FORM:MENU
15 | L ậ p T r ì n h M ạ n g _ Ứ n g d ụ n g l ậ p t r ì n h s o c k e t l ậ p t r ì n h p h ầ n m ề m c h a t


t r o n g M ạ n g L A N
FORM CHÍNH BÀN CỜ:

+ Quân X,O: load từ file png.
+ Nền: sử dụng thuộc tính BackgroundColor của CaroBoardUI.
+ Các ô: tạo bằng cách kẻ các đường thẳng dọc và ngang
Dung protocol serve-client
Server quan ly
Giai
quyet cho 2
server cung
choi.
Giai
quyet neu 1
ngung choi
Thoi
gian
16 | L ậ p T r ì n h M ạ n g _ Ứ n g d ụ n g l ậ p t r ì n h s o c k e t l ậ p t r ì n h p h ầ n m ề m c h a t


t r o n g M ạ n g L A N
D
17 | L ậ p T r ì n h M ạ n g _ Ứ n g d ụ n g l ậ p t r ì n h s o c k e t l ậ p t r ì n h p h ầ n m ề m
c h a t

t r o n g M ạ n g L A N

×