You are on page 1of 8

ĐỀ TÀI: Lập trình trò chơi cờ caro có nối mạng sử dụng ngôn ngữ Visual C++

Báo cáo đề tài gồm các phần sau:


• Phần 1: Giới thiệu về đề tài.
• Phần 2: Ngôn ngữ và cách thức sử dụng
• Phần 3: Thiết kế chương trình và giải thuật
• Phần 4: Các hàm chính của chương trình
• Phần 5: Chương trình chạy
• Phần 6: Kết luận
Phần 1: Giới thiệu sơ lược về đề tài.

1. Giới thiệ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
Hình 1:

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ó 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.

2. Giới thiệ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 Single Player: Chơi với máy tính, có phân các mức độ dễ và khó
cho người chơi.
• Chức năng Multi Player: Chơi đa người dùng, chơi online: Chương trình hỗ
trợ cho 2 người ở trên cùng mạng LAN để có thể chơi và chat trực tiếp với
nhau trong lúc chơi.

3. 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è, bọn em đã
chọn chương trình chơi cờ caro làm đề tài thực tập của mình.
Phần 2: Ngôn ngữ và cách thức sử dụng.

1. Giới thiệu về ngôn ngữ Visual C++:


Chương trình được xây dựng bằng ngôn ngữ Visual C++. Đây là một ngôn ngữ lập
trình hướng đối tượng điển hình.
Microsoft Visual C++ (còn được gọi là MSVC) là một sản phẩm Môi trường phát
triển tích hợp (IDE) cho các ngôn ngữ lập trình C, C++, và C++/CLI của
Microsoft. Nó có các công cụ cho phát triển và gỡ lỗi mã nguồn C++, đặc biệt là
các mã nguồn viết cho Microsoft Windows API, DirectX API, và Microsoft .NET
Framework.

Các đặc trưng

Các chức năng của Visual C++ như tô sáng cú pháp, IntelliSense (chức năng về tự
động hoàn thành việc viết mã) và các chức năng gỡ lỗi tiên tiến.

Ví dụ, nó cho phép gỡ lỗi từ xa sử dụng một máy tính khác và cho phép gỡ lỗi
bằng cách duyệt qua từng dòng lệnh tại một thời điểm. Chức năng "biên tập và
tiếp tục" cho phép thay đổi mã nguồn và dịch lại chương trình trong quá trình gỡ
lỗi, mà không cần phải khởi động lại chương trình đang được gỡ lỗi.

Đặc trưng biên dịch và xây dựng hệ thống, tính năng tiền biên dịch các tập tin đầu
đề (header files) và liên kết tịnh tiến (incremental link) - chỉ liên kết những phần bị
thay đổi trong quá trình xây dựng phần mềm mà không làm lại từ đầu: Những đặc
trưng về tính năng này thuyên giảm tổng thời gian biên tập, biên dịch và liên kết
chương trình phần mềm, đặc biệt đối với những đề án phần mềm lớn.

Lịch sử

Phiên bản trước của Visual C Professional Edition được gọi là Microsoft C/C++
Professional Development System. Phiên bản tương đương với Phiên bản Tiêu
chuẩn (Standard Edition) ngày nay được gọi là Microsoft QuickC.

• Visual C++ 1.0, có MFC 2.0, là phiên bản đầu tiên của Visual C++, ra đời
năm 1992, hỗ trợ cả 16-bit và 32-bit, mặc dù đây là phiên bản tiếp sau của
C/C++ 7.0.
• Visual C++ 1.5, có MFC 2.5, hỗ trợ thêm OLE 2.0 và ODBC cho MFC. Nó
nguyên chỉ là một phiên bản dùng 16-bit mà thôi và là phiên bản đầu tiên
của Visual C++ được in ấn trên CD-ROM. Phiên bản này cũng quan trọng
như phiên bản trước với hỗ trợ cho việc xây dựng phần mềm 16-bit.
• Visual C++ 2.0, có MFC 3.0, là phiên bản đầu tiên chỉ dành riêng cho 32-
bit, mặc dù vào thời điểm đó cũng có Visual C++ 1.51 (một bản cập nhật
của Visual C++ 1.5) ra đời. Các phiên bản cập nhật cho phiên bản này gồm
có: Visual C++ 2.1, ra đời cùng lúc với Visual C++ 1.52, là một bản cập
nhật khác cho Visual C++ 1.5, và 2.2.
• Visual C++ 4.0, hỗ trợ MFC 4.0, được thiết kế cho Windows 95, cũng như
Windows NT. Phiên bản cập nhật cho nó gồm có Visual C++ 4.1 và Visual
C++ 4.2, không hỗ trợ Win32s.
• Visual C++ 5.0, hỗ trợ MFC 4.21, là một bản cập nhật chính từ 4.2.
• Visual C++ 6.0, MFC 6.0, ra đời 1998, đã và đang được sử dụng rộng rãi
cho các project lớn và nhỏ.
• Visual C++ .NET 2002 (còn được gọi là Visual C++ 7.0), hỗ trợ MFC 7.0,
ra đời năm 2002, hỗ trợ kiến tạo mã trong khi liên kết (link time code
generation) và kiểm lỗi những duyệt thảo trong quá trình thi hành
(debugging runtime checks). Phiên bản này còn bao gồm các phần mở rộng
sang ngôn ngữ C++, cùng đồng thời kèm theo một giao diện người dùng
mới (phân hưởng cùng với Visual Basic và Visual C#). Đây cũng chính là
nguyên nhân tại sao Visual C++ 6.0 hiện vẫn còn được sử dụng rộng rãi.
• Visual C++ .NET 2003 (còn được gọi là Visual C++ 7.1), bao gồm MFC
7.1, đã được xuất bản trong năm 2003 và là một phiên bản nâng cấp chất
lượng lớn đối với Visual C++ .NET 2002.
• Visual C++ 2005 (Visual C++ 8.0), MFC 8.0, ra đời tháng 11 năm 2005.
Hỗ trợ C++/CLI và OpenMP. Đây là phiên bản mới nhất.

Do chương trình được xây dựng trên ngôn ngữ Visual C++ 2005 nên sau đây em
xin trình bày chi tiết về ngôn ngữ này với nền Visual C++ 2005.

Hình 2: Giao diện của chương trình:


Microsoft Visual C++ 2005 cung cấp một môi trường mạnh và linh hoạt để xây
dựng những ứng dụng dựa trên cửa sổ của Microsoft Windows và Microsoft.NET.
Nó có thể được sử dụng như một hệ thống môi trường phát triển tích hợp, hoặc
như một tập những công cụ độc lập. Visual C++ được kết hợp bởi những thành
phần sau:
+ Những công cụ dịch Visual C++2005: Trình dịch có nhiều tính năng mới hỗ trợ
người lập trình mà hướng tới nền máy ảo như the Common Language Runtime
(CLR).
+ Thư viện Visual C++ 2005: Thư viện bao fồm những Thư viện mẫu chuẩn
Active Template Library (ATL), Microsoft Foundation Class (MFC), the C
RunTime Library (CRT) và những thư viện chuẩn ví dụ như Standard C++
Library, mà đã được mở rộng để cung cấp thêm những tính năng bảo mật cho các
hàm để đàm bảo vấn đề an ninh. Một thư viện mới, C++ Support Library, được
thiết kế để làm đơn giản hoá những chương trình hướng tới CLR.
+ Môi trường phát triển : The Visual C++ 2005 Development Environment: Cho
dù các trình dịch C++ và thư viện có thể được sử dụng từ môi trường dòng lệnh,
môi trường phát triển này cung cấp những hỗ trợ mạnh nhất để quản lý và cấu hình
các dự án đề tài lớn , chỉnh sửa mà nguồn, duyệt mà nguồn, và công cụ gỡ lỗi. Môi
trường này cũng cung cấp hỗ trợ IntelliSense, giúp tạo nên những thông báo,
những gợi ý tuỳ vào hoàn cảnh khi mà code được viết ra.
Ngoài những ứng dụng giao diện đồ hoạ với người sử dụng thông thường Visual
C++ còn hỗ trợ người lập trình để xây dựng các ứng dụng Web, ứng dụng dựa trên
cửa sổ thông minh trên máy khách, và những giải pháp cho các thiết bị di động
thin-client và smart-client. C++ là ngôn ngữ mức độ hệ thống phổ biến nhất trên
thế giới và Visual C++ đã đưa ra cho người lập trình một công cụ hỗ trợ lớp tốt
nhất để xây dựng các phần mềm.

2. Giới thiệu về MFC:

The Microsoft Foundation Class Library là một nền ứng dụng để lập trình trong
Microsoft Windows. Được viết trong C++, MFC cung cấp nhiều mã cần thiết cho
việc quản lý các cửa sổ, menu, và các hộp hội thoại, biểu diễn hầu hết những chức
năng nhập vào và ra đơn giản, lưu trữ một tập các đối tượng dữ liệu ... Tất cả
những gì bạn phải làm là thêm vào ứng dụng của mình những đoạn mã đặc trưng
vào nền đó. Và được cung cấp kĩ thuật lập trình lớp C++, nên rất dễ dàng để có thể
mở rộng hoặc kế thừa những chức năng cơ bản mà nền MFC cung cấp.
Nền MFC là một bước tiến mạnh mẽ cho phép bạn có thể xây dựng dựa trên công
việc của các chuyên gia lập trình Windows. MFC giúp rút ngắn thời gian lập trình,
làm mã trở nên dễ dàng chuyển đổi hơn, cung cấp hỗ trợ vô cũng lớn mà không
làm giảm tính linh hoạt và tự do của chương trình và cung cấp truy xuất dễ dàng
cho các thành phần và công nghệ thuộc giao diện khó lập trình như công nghệ
Active, OLE, và lập trình Internet. Ngoài ra, MFC đơn giản hoá lập trình cơ sở dữ
liệu thông qua Access Objects (DAO) và Open Database Connectivity (ODBC),
lập trình mạng thông qua Windows Sockets. MFC làm cho các tính năng lập trình
như các thanh thuộc tính, xem trước khi in, thanh công cụ có thể thay đổi…trở nên
dễ dàng.
3. Phần 3: Thiết kế chương trình và giải thuật

1. Thiết kế chương trình


Chương trình được thiết kế như sau:

2. Giải thuật của chương trình:


Đây là một chương trình trò chơi mang tính trí tuệ nên phần giải thuật của chương
trình là phần quan trọng nhất. Đánh giá một chương trình trò chơi cờ hay hay
không là thông qua giải thuật của chương trình.Trong phần này, ta sẽ trình bày chi
tiết về giải thuật của chương trình chơi cờ caro.
Giải thuật có 2 phần chính:
• Giải thuật xác định thắng thua cho một ván cờ, giải thuật này áp dụng cho
cả chơi 2 người và chơi với máy nên có thể dùng chung.
• Giải thuật tìm nước đi của máy trong khi chơi với máy.
Sau đây xin được trình bày chi tiết:

1.1 Giải thuật xác định thắng thua cho một ván cờ:
Giải thuật được dựa trên của chương trình cờ caro cổ điển với luật chơi là xác định
một người thắng khi người đó có 5 con liên tiếp nằm trên cùng một hàng ngang,
hàng dọc hoặc đường chéo.
Ta sử dụng các giải thuật như sau để xác định:
* 5 con liên tiếp trên một hàng

You might also like