CHƯƠNG 1. TỔNG QUAN ĐỀ TÀI 1. Lý do hình thành đề tài Ở thời đại hiện nay, công nghệ thông tin phát triển mạnh mẽ và đặt được nhiều thành tựu, một trong số đó có thể kể đến là lĩnh vực lập trình Game. Lập trình game không chỉ mang lại những sản phẩm giải trí chất lượng , mà còn giúp con người giải tỏa sau những phút giây mệt mỏi xoay công việc và học tập.
Đồng thời, việc lập trình game còn giúp các lập trình viên rèn luyện nhiều kỹ năng quan trọng như tư duy logic, sáng tạo, giải quyết vấn đề và làm việc nhóm. Cũng nhờ vào việc áp dụng kiến thức công nghệ thông tin, công cụ lập trình, chúng ta có thể thấy được các chương trình trò chơi vốn được chơi trên các bàn cờ, phải được tính toán nước đi dần được ra đời. Tiêu biểu có thể thấy như: Cờ Caro, Cờ vua, Cờ tướng, Cờ vây,… Hiện nay, rất nhiều các công cụ hiện đại xuất hiện hỗ trợ lập trình viên trong việc phát triển các phần mềm về game và ở đồ án này, nhóm em đã chọn phần mềm Visual Studio 2022, ngôn ngữ sử dụng là C#. Với các kiến thức em đã học trong trường và tìm hiểu thêm các tài liệu tham khảo, nhóm em lựa chọn đề tài “Xây dựng trò chơi Cờ Caro cơ bản”.
Giới thiệu về trò chơi Cờ Caro Cờ ca-rô (hay sọc ca-rô) là một trò chơi dân gian. Cờ ca-rô trong tiếng Triều Tiên là omok (오목) và trong tiếng Nhật là 五 目 並 べ (gomoku narabe); tiếng Anh, sử dụng lại tiếng Nhật, gọi là gomoku. 1 Downloaded by Banh Mi (banhmi01@gmail.com) lOMoARcPSD|39690304 Lập trình C#.Net cơ bản Xây dựng trò chơi Cờ Caro Ban đầu loại cờ này được chơi bằng các quân cờ vây (quân cờ màu trắng và đen) trên một bàn cờ vây (19x19). Quân đen đi trước và người chơi lần lượt đặt một quân cờ của họ trên giao điểm còn trống.
Người thắng là người đầu tiên có được một chuỗi liên tục gồm 4 quân hàng ngang, hoặc dọc, hoặc chéo không bị chặn đầu nào. Một khi đã đặt xuống, các quân cờ không thể di chuyển hoặc bỏ ra khỏi bàn, do đó loại cờ này có thể chơi bằng giấy bút. Ở Việt Nam, cờ này thường chơi trên giấy tập học sinh (đã có sẵn các ô ca-rô), dùng bút đánh dấu hình tròn (O) và chữ X để đại diện cho 2 quân cờ. Cách chơi cũng tương tự nhưng người thắng là người có được một chuỗi liên tục 5 quân cờ hàng ngang, hoặc dọc, hoặc chéo mà không bị chặn hoặc bị quân khác ngắc đường quân cờ.
Mục tiêu và nội dunng nghiên cứu 1. Mục tiêu Hệ thống hóa các kiến thức cơ sở làm nền cho việc thực hiện đề tài. Khai thác các chức năng cần thiết của đề tài. Nội dung nghiên cứu Tìm hiểu và áp dụng các kiến thức cơ bản về lập trình C#.
Thiết kế giao diện người dùng đơn giản cho trò chơi cờ caro trên nền tảng Visual Studio 2022. Lập trình các chức năng chính của trò chơi như đặt quân cờ, kiểm tra điều kiện thắng/thua, và xử lý lượt chơi. Kiểm thử và tối ưu hóa trò chơi. Đối tượng và phạm vi đề tài 1.
Đối tượng nghiên cứu Đối tượng nghiên cứu chủ yếu là những người yêu thích trò chơi Cờ Caro và muốn phát triển bản điện tử của trò chơi này 2 Downloaded by Banh Mi (banhmi01@gmail.com) lOMoARcPSD|39690304 Lập trình C#.Net cơ bản Xây dựng trò chơi Cờ Caro 1. Phạm vi Tìm hiểu kỹ thuật lập trình C# Trò chơi bao gồm chế độ chơi đơn với máy và chế độ chơi đôi giữa hai người chơi. Không bao gồm các tính năng nâng cao như chơi trực tuyến hoặc lưu trữ kết quả trận đấu. Phương pháp nghiên cứu Tìm hiểu, tham khảo tài liệu để củng cố kiến thức cơ bản về môn lập trình C#.Net Thao khảo các trang web lập trình C# liên quan đến đề tài đồ án.
Tiếp cận, tham khảo một số chương trình trò chơi Cờ Caro sẵn có. Thiết kế giao diện và các chức năng phù hợp với các yêu cầu của trò chơi. Xây dựng chương trình theo yêu cầu đã đặt ra. Thực hiện kiểm thử đơn vị và kiểm thử chương trình để đảm bảo ứng dụng hoạt động đúng chức năng và ổn định.
Dự kiến kết quả đặt được Hoàn thành một ứng dụng trò chơi cờ caro cơ bản, có thể chơi trên nền tảng Windows. Ứng dụng có giao diện thân thiện, dễ sử dụng và đáp ứng các chức năng cơ bản của trò chơi cờ caro. Người học lập trình sẽ nắm vững cách áp dụng kiến thức C# vào phát triển ứng dụng thực tế. Rèn luyện và nâng cao kỹ năng lập trình, tư duy logic và khả năng giải quyết vấn đề cho người thực hiện đề tài.
3 Downloaded by Banh Mi (banhmi01@gmail.com) lOMoARcPSD|39690304 Lập trình C#.Net cơ bản Xây dựng trò chơi Cờ Caro CHƯƠNG 2. Mô tả bài toán Yêu cầu bài toán : Xây dựng một bàn cờ có kẻ các ô vuông với kích thước 20x20. Có 2 quân cờ là X và O. Người chơi có thể đánh với máy hoặc 2 người chơi với nhau.
Người thắng là người đi được 5 quân cờ cùng kiểu trên hang dọc, hàng ngang hoặc đường chéo. Hai người hoà nhau khi bàn cờ hết chỗ đánh mà vẫn chưa phân được thắng bại. Chương trình có các chức năng: - Undo: Hoàn tác lại nước đi nước vừa đánh - Redo: Trả lại nước đi vừa hoàn tác - PlayerVsCom: Chức năng đánh cờ với máy - PlayerVsPlayer: Chức năng đánh cờ với người chơi - Thoát: Thoát khỏi trò chơi Các lớp của chương trình (class): - Lớp CaroChess: Chứa các hàm chức năng của trò chơi - Lớp BanCo: Khai báo các biến, vào khởi tạo bàn cờ, quân cờ - Lớp Oco: Khai báo các biến, vào khởi tạo ô cờ - Lớp Form1: Chứa form và các xử lý sự kiện - Lớp Program: Chạy chương trình 4 Downloaded by Banh Mi (banhmi01@gmail.com) lOMoARcPSD|39690304 Lập trình C#.Net cơ bản Xây dựng trò chơi Cờ Caro 2. Quy trình thuật toán 5 Downloaded by Banh Mi (banhmi01@gmail.com) lOMoARcPSD|39690304 Lập trình C#.Net cơ bản Xây dựng trò chơi Cờ Caro Trò chơi bắt đầu bằng việc chọn chế độ.
Sau đó chương trình sẽ khởi tạo bàn cờ với kích thước 20x20 ô (mỗi ô ban đầu đều trống). Chúng ta sử dụng vòng lặp chơi game, vòng này sẽ lặp liện tục đến khi có người chiến thắng. Trong trò chơi cờ caro này, người chơi sẽ chọn vị trí A muốn đặt quân cờ bằng click chuột, sau đó hệ thống sẽ kiểm tra vị trí đã chọn có hợp lệ hay không (tức là vị trí đó còn tr ống). Nếu không hợp lệ (hay bị trùng lên quân cơ khác) thì yêu cầu người chơi chọn lại vị trí (quay lại bước chọn vị trí).
Nếu hợp lệ thì người chơi tiếp theo chọn vị trí quân cờ của mình. Sau khi đã hoàn thành phần chọn vị trí, hệ thống sẽ cập nhật bàn cờ bằng cách đặt quân cờ của người chơi vào vị trí đã chọn trên bàn cờ. Khi trò chơi tiếp tục, hệ thống sẽ kiểm tra người thắng bằng cách kiểm tra xem sau nước đi vừa rồi, người chơi hiện tại có thắng hay không (kiểm tra 4 hướng : ngang, dọc, chéo chính, chéo ngược). Nếu có người chiến thắng, in thông báo người thắng và kết thức trò chơi.
Nếu không có người chiến thắng, hệ thống sẽ kiểm tra xem còn ô trống trên bàn cơ khay không. Nếu không còn ô trống, in thông báo hòa cờ. Nếu còn ô trống, chuyển lượt cho người chơi tiếp theo (từ X sang O hoặc ngược lại). Quá trình này lặp lại cho đến khi trò chơi kết thúc.
Tổng quan về giao diện người dùng trò chơi Cờ Caro 2. Các khái niệm cơ bản trong lập trình game cờ caro 2. Bàn cờ (Board) Bàn cờ là một ma trận các ô vuông (cell), mỗi ô có thể chứa một ký hiệu X, O hoặc để trống. Bàn cờ có thể có nhiều kích thước khác nhau, nhưng phổ biến nhất là 3x3, 5x5, hoặc lớn hơn tùy theo yêu cầu của người chơi.
Ô cờ (Cell) Mỗi ô cờ là một thành phần của bàn cờ, và có thể ở trạng thái trống, chứa ký hiệu cờ xanh hoặc cờ đỏ. 6 Downloaded by Banh Mi (banhmi01@gmail.com) lOMoARcPSD|39690304 Lập trình C#.Net cơ bản Xây dựng trò chơi Cờ Caro 2. Người chơi (Player) Trò chơi có hai người chơi, thường được ký hiệu là Player cờ xanh và Player cờ đỏ. Hai người chơi sẽ lần lượt đánh dấu vào các ô trên bàn cờ.
Luật chơi (Rule) Người chơi cờ xanh đi trước, sau đó đến người chơi cờ đỏ.Mỗi lượt đi, người chơi sẽ đánh dấu cờ xanh hoặc cờ đỏ vào một ô trống trên bàn cờ.Người chiến thắng là người đầu tiên có một dãy 5 ô liên tục có các ký hiệu của mình theo hàng ngang, hàng dọc hoặc đường chéo.Trò chơi kết thúc khi một trong hai người chơi thắng hoặc không còn ô trống nào để đi (hòa). Thiết kế giao diện người dùng (UI) 2. Khung chơi game Khung chơi game sẽ bao gồm một lưới các ô (Cell) có thể đặt click để đặt quân cờ trên bàn cờ. Bàn cờ được tạo từ Panel để tạo lưới bàn cờ, trong đó có sự kiện Click để người chơi đặt quân cờ.
Các nút điều khiển Button chế độ chơi (PlayerVsPlayer ; PlayerVsCom) được đặt phía dưới Label. Người chơi cần click chuột vào các nút này để chọn chế độ chơi. Ngoài ra, còn button Thoát được tạo ra để người chơi click chuột vào khi muốn ngừng chơi. Thông tin game Lable được sử dụng để hiện thông tin.
Ở đây, lable hiện thông tin luật chơi để người chơi có thể hiểu được cách chơi đúng nhất của game. Thanh Menu Thanh Menu giúp tổ chức các chức năng của ứng dụng một cách hệ thống, giúp người dùng dễ dàng tìm kiếm và sử dụng các chức năng này. Vì vậy trong game cờ caro, thanh Menu có chứa các mục sau : File: Chứa các tùy chọn để bắt đầu trò chơi (New) và thoát trò chơi (Exit). Trong tùy chọn New ta có 2 lựa chọn chế độ chơi: PlayerVsPlayer, 7 Downloaded by Banh Mi (banhmi01@gmail.com) lOMoARcPSD|39690304 Lập trình C#.Net cơ bản Xây dựng trò chơi Cờ Caro PlayerVsCom.
Người dùng có thể chọn chế độ chơi ở button phía dưới hoặc trong thanh Menu New đều được. Điều này tạo cho người chơi một môi trường tiện lợi hơn. Tổng quan về thuật toán 2. Khởi tạo bàn cờ 2.
Khởi tạo ô cờ: Tạo ô cờ với chiều cao và chiều rộng bằng 20, với các biến lần lượt là dòng, cột, vị trí ô cờ, sở hữu ô cờ. Thuật toán vẽ bàn cờ: 1.