Trò chơi cờ vua là một trò chơi chiến thuật cổ điển, trong đó hai người chơi thay phiên di chuyển các quân cờ trên một bảng ô vuông được chia thành 64 ô.. Điều này bao gồm kiểm tra xem q
Trang 1BỘ CÔNG THƯƠNG
TRƯỜNG ĐẠI HỌC CÔNG THƯƠNG
KHOA CÔNG NGHỆ THÔNG TIN
-o0o LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
TÊN ĐỀ TÀI: TRÒ CHƠI CỜ VUA
NHÓM: Chess
Thành phố Hồ Chí Minh, 23 tháng 04 năm 2024
Trang 2BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG THƯƠNG
KHOA CÔNG NGHỆ THÔNG TIN
-o0o TÊN ĐỀ TÀI: TRÒ CHƠI CỜ VUA
Nhóm: Chess
Trưởng nhóm: Nguyễn PhúcVĩnh Nguyên
Thành viên:
Võ Nhật Ngân
Trần Huỳnh Phụng Quyên
Giảng viên hướng dẫn: Bùi Công Danh
Thành phố Hồ Chí Minh, 23 tháng 04 năm 2024
Trang 3MỤC LỤC
PHẦN 1: MỞ ĐẦU
1 Tổng quan về đề tài 2
2 Phạm vi đồ án 2
PHẦN 2: NỘI DUNG
1 PHÂN TÍCH ĐỀ TÀI 2
1.1 Yêu cầu của đề tài 2
1.2 Chức Năng 3
1.2.1 Chức Năng Đăng Nhập 3
1.2.2 Chức Năng Đăng Ký 3
1.2.3 Chương Trình Chính 4
1.2.4 Sự Kiện Nhập Thành 4
1.2.5 Sự kiện Phong Hiệu 4
1.2.6 Sự kiện bị chiếu hoặc hết nước đi 4
1.3 XÁC ĐỊNH ĐỐI TƯỢNG, LỚP 5
1.3.1 Đối tượng 5
1.3.2 Các lớp đối tượng 5
2 SƠ ĐỒ LỚP ĐỐI TƯỢNG 9
2.1 Sơ đồ 9
3 Các Nguyên Lý Hướng Đối Tượng 10
4 Các Cấu Trúc Dữ Liệu 10
5 Đọc, ghi đối tượng vào file Xml 11
PHẦN 3: KẾT LUẬN VÀ ĐỊNH HƯỚNG PHÁT TRIỂN
1 Kết Luận 12
2 Định Hướng Phát Triển 12
PHẦN 4: TÀI LIỆU THAM KHẢO
Trang 4PHẦN 1: MỞ ĐẦU
1 Tổng quan về đề tài
Trò chơi cờ vua đã trải qua sự phát triển và tiến hóa qua các thời kỳ và địa điểm khác nhau Quy tắc và kiểu quân cờ đã thay đổi và được điều chỉnh theo thời gian, tạo nên các biến thể cờ vua riêng biệt như chúng ta biết ngày nay Trò chơi cờ vua hiện đại đã được hình thành vào đầu thế kỷ
19, và từ đó trở thành một trong những trò chơi phổ biến nhất trên thế giới
Cờ vua đã trở thành một môn thể thao và một trò chơi có giá trị văn hóa sâu sắc Nó được chơi ở mọi quốc gia trên thế giới, với các giải đấu chuyên nghiệp và sự quan tâm rộng rãi từ cộng đồng chơi cờ Cờ vua cũng đã trở thành một môn học quan trọng trong lĩnh vực chiến thuật, suy luận và tư duy logic
Trò chơi cờ vua là một trò chơi chiến thuật cổ điển, trong đó hai người chơi thay phiên di chuyển các quân cờ trên một bảng ô vuông được chia thành 64 ô Mục tiêu của trò chơi là chiếu bí quân vua của đối phương
2 Phạm vi đồ án
Chương trình này được tạo ra nhằm mục đích cho người dùng có thể sử dụng để chơi cờ vua Với phần xử lý các nước đi đã hợp lệ với luật cờ vua
cơ bản hiện hành
PHẦN 2: NỘI DUNG
1 PHÂN TÍCH ĐỀ TÀI
1.1 Yêu cầu của đề tài
Bảng cờ: Tạo ra một bảng ô vuông có kích thước 8x8 để đại diện cho bàn cờ Mỗi ô có thể chứa một quân cờ hoặc trống
Quân cờ: Xác định các loại quân cờ trong cờ vua như vua (King), hậu (Queen), xe (Rook), tượng (Bishop), mã (Knight) và tốt (Pawn) Mỗi quân
cờ có các quy tắc di chuyển và tấn công riêng
Người chơi: Sẽ có hai người chơi trắng và đen Khi tới lượt đi thì con trỏ chuyển về màu của người chơi và người chơi chọn vào quân cờ của mình
để di chuyển đến vị trí mới
2
Trang 5Xác định tính hợp lệ của nước đi: Kiểm tra tính hợp lệ của nước đi dựa trên quy tắc di chuyển của từng quân cờ Điều này bao gồm kiểm tra xem quân cờ có thể di chuyển đến ô nào trong bàn và xem có bất kỳ sự cản trở của các quân cờ cùng màu, ăn quân các quân khác màu, che chắn cho tướng khi đang có nước chiếu của đối phương
Phong Hiệu: Là khi tốt tiến tới hàng vua của đối thủ thì sẽ xuất hiện bảng phong hiệu cho người chơi lựa chọn phong hiệu cho tốt thành hậu hoặc mã hoặc xe hoặc tượng
Nhập thành: Là sự kiện mà khi trên đường của vua tới xe trống và hai quân này chưa di chuyển bất kì lần nào thì sẽ thực hiện nhập thành Ở đây
sẽ có hai loại nhập thành là nhập thành bên vua và nhập thành bên hậu Chiếu: Kiểm tra xem quân vua có bị chiếu hay không sau mỗi nước đi Nếu quân vua bị chiếu, người chơi phải di chuyển vua đi một dị trí khác hoặc dùng các quân cờ khác cùng màu có trên bàn cờ để che chắn cho vua Chiếu bí và hòa: Xác định điều kiện chiếu bí và hòa trong trò chơi Chiếu bí là khi quân vua đang bị chiếu đồng thời các nước di chuyển đều không hợp lệ và các quân cùng màu không thể di chuyển che chắn được
Hoà là khi vua chưa bị chiếu nhưng đồng thời cũng không có nước di
chuyển hợp lệ nào được thực hiện
Giao diện người dùng: Giao diện này bao gồm hiển thị bàn cờ và các quân cờ có trên bàn, khi người chơi chọn vào thực hiện nước đi thì ô di chuyển hợp lệ sẽ hiện xanh Sau khi thực hiện di chuyển thì trỏ sẽ đổi màu
để đối thủ thực hiện di chuyển Đồng thời hiển thị các sự kiện như phong hậu cho tốt hoặc thắng hoặc hoà
1.2 Chức Năng
1.2.1 Chức Năng Đăng Nhập
Khi khởi chạy chương trình sẽ có một menu đăng nhập hiện lên để người dùng đăng nhập tài khoản cá nhân của mình vào (VD: Nguyen 12345678), hoặc sẽ đăng ký tài khoản mới ở ô đăng ký để có thể đăng nhập
1.2.2 Chức Năng Đăng Ký
Ở đây người dùng sẽ đăng ký cho mình một tài khoản mới với tên đăng nhập không được chừa trống và mật khẩu có ít nhất 8 ký tự Sau khi đăng
ký xong màn hình sẽ quay về Đăng Nhập để người dùng có thể đăng nhập
và xử dụng chương trình
Trang 61.2.3 Chương Trình Chính
Sau khi đăng nhập thành công thì chương trình sẽ mở ra giao diện bàn cờ cho người dùng xử dụng
Theo luật cờ vua thì bên trắng sẽ là bên quân cờ đi nước di chuyển đầu tiên, cho nên con trỏ chủ chương trình sẽ là trỏ trắng đầu tiên, sau khi thực hiện xong nước di chuyển thì con trỏ sẽ chuyển sang đen và cứ thế lập lại cho tới khi các sự kiện khác xuất hiện
1.2.4 Sự Kiện Nhập Thành
Sự kiện này sẽ sảy ra khi mà các ô ở giữa Vua (King) và Xe (Rook) không tồn tại các quân cờ khác và khi này của Vua và Xe đều chưa có bất
cứ nước di chuyển nào thì sẽ có sự kiện nhập thành khi chúng ta chọn vào Vua
Nhập thành ở đây chia thành 2 loại:
Nhập Thành bên phía Vua: sự kiện này sảy ra khi bạn chọn vào nước di chuyển vua qua phía phải của bàn cờ mà đúng với điều kiện nhập thành thì vua và xe sẽ di chuyển vào vị trí nhập thành
Nhập Thành bên phía Hậu: sự kiện này cũng giống như ở phía vua bên trên nhưng nó sẽ di chuyển về bên trái của bàn cờ
1.2.5 Sự kiện Phong Hiệu
Sự kiện này xảy ra khi mà quân tốt (Pawn) của di chuyển tới hàng cuối bàn cờ theo hướng di chuyển của nó Lúc này sẽ có một bảng chức năng hiện thị lên ở chương trình cho phép người chơi chọn quân hiệu cần phong cho tốt (ở đây có 4 lựa chọn lần lượt là Hậu (Queen), Mã (Knight), Xe (Rook), Tượng (Bishop)), sau khi thực hiện chọn quân hiệu thì tốt ở vị trí
đó sẽ được đổi thành quân hiệu đã chọn
1.2.6 Sự kiện bị chiếu hoặc hết nước đi
Sự kiện này sảy ra khi một trong hai bên bị chiếu bí quân Vua hoặc không có bất kì nước di chuyển nào hợp lệ được đưa ra nữa thì sẽ hiện lên màn hình bảng chứ năng thông báo là Hoà hay Thắng và lý do dẫn tới trường hợp đó là của bên cờ nào
Ở cuối bảng chức năng này có hai lựa chọn là chơi lại hoặc là thoát khỏi bàn cờ Khi chọn chơi lại thì bàn cờ sẽ được khởi động lại từ đầu để người
4
Trang 7dùng chơi ván mới, nếu như lựa chọn là thoát khỏi thì chương trình sẽ kết thúc
Trang 81.3 XÁC ĐỊNH ĐỐI TƯỢNG, LỚP
1.3.1 Đối tượng
- Đầu tiên ta có đối tượng là người dùng với các thuộc tính: tên người dùng và mật khẩu
- Kế là bàn cờ
- Kế là các quân cờ cụ thể là: 1 vua trắng, 1 hậu trắng, 2 tượng trắng, 2 mã trắng, 2 xe trắng, 8 tốt trắng, 1 vua đen, 1 hậu đen, 2 tượng đen, 2 mã đen, 2 xe đen, 8 tốt đen
- Các hướng đi, các vị trí, các kiểu di chuyển bình thường và các kiểu di chuyển đặc biệt như phong hiệu, nhập thành
1.3.2 Các lớp đối tượng
o Lớp người dùng
Tên Người Dùng
Mật Khẩu
o Lớp Bàn cờ
Mảng 2 chiều các quân cờ có trên bàn
Các quân cờ
Vị trí của quân cờ
Phương thức:
Thêm các quân cờ
Kiểm tra chọn trong bàn
Kiểm tra vị trí trống
Kiểm vị trí của quân cờ
Kiểm màu của quân cờ
Sao chép lại bàn cờ
o Lớp Quân Cờ
Kiểu quân cờ
Màu quân cờ
Đã di chuyên
Phương thức
Sao chép lại
Lấy hướng di Chuyển
Kiểm tra tìm hướng di chuyển
Kiểm tra có đang bảo vệ Vua không
6
Trang 9o Lớp Quân Hậu (con của lớp Quân Cờ)
Kiểu quân cờ: Hậu
Màu quân cờ
Phương thức
Sao chép lại
Lấy hướng di Chuyển
o Lớp Quân Tượng (con của lớp Quân Cờ)
Kiểu quân cờ: Tượng
Màu quân cờ
Phương thức
Sao chép lại
Lấy hướng di Chuyển
o Lớp Quân Xe (con của lớp Quân Cờ)
Kiểu quân cờ: Xe
Màu quân cờ
Phương thức
Sao chép lại
Lấy hướng di Chuyển
o Lớp Quân Mã (con của lớp Quân Cờ)
Kiểu quân cờ: Mã
Màu quân cờ
Phương thức
Sao chép lại
Lấy hướng di Chuyển
Chuyển tới vị trí đặc biệt
Vị trí di chuyển đặc trưng
o Lớp Quân Tốt (con của lớp Quân Cờ)
Kiểu quân cờ: Tốt
Màu quân cờ
Phương thức
Sao chép lại
Lấy hướng di Chuyển
Kiểm xem có bị cản
Kiểm tra xem có quân để ăn
Kiểm xem có phong hiệu
Trang 10 Nước đi chéo ăn quân
o Lớp Quân Vua (con của lớp Quân Cờ)
Kiểu quân cờ: Vua
Màu quân cờ
Phương thức
Sao chép lại
Lấy hướng di Chuyển
Kiểm tra xem xe đã di chuyển chưa
Kiểm tra xem có thể nhập thành bên Hậu
Kiểm tra xem có thể nhập thành bên Vua
Vị trí di chuyển tới
Tránh các nước đang bị chiếu
o Lớp Hướng
Thuộc tính
Các biến tĩnh về 8 hướng Đông, Tây, Nam, Bắc, Đông Nam, Đông Bắc, Tây Nam, Tây Bắc
Dòng
Cột
o Lớp Vị Trí
Thuộc tính
Hàng
Cột
Phương thức
Phần của màu quân
So sánh
Băm Hàng Cột
o Lớp ván cờ
Thuộc tính
Bàn cờ
Người chơi
Các sự kiện
Phương thức
Kiểm vị trí hợp lệ của quân cờ
Tạo di chuyển
Các nước có thể đi
8
Trang 11 Kiểm xem có bị chiếu bí
o Lớp di chuyển
Thuộc tính
Kiểu di chuyển
Vị trí ban đầu
Vị trí cần đến
Phương thức
Thực hiện
Hợp lệ
o Lớp di chuyển thường (con của lớp Di Chuyển)
Thuộc tính
Kiểu di chuyển: thường
Vị trí ban đầu
Vị trí cần đến
o Lớp di chuyển Nhập thành (con của lớp Di Chuyển)
Thuộc tính
Kiểu di chuyển: nhập thành
Vị trí ban đầu
Vị trí cần đến
Hướng đi của vua
Vị trí ban đầu của xe
Vị trí cần đến của xe
Phương thức
Nhập Thành
o Lớp di chuyển Phong Hiệu (con của lớp Di Chuyển)
Thuộc tính
Kiểu di chuyển: phong hiệu
Kiểu quân mới
Vị trí ban đầu
Vị trí cần đến
Phương thức
Phong Hiệu
Tạo kiểu quân mới
Trang 122 SƠ ĐỒ LỚP ĐỐI TƯỢNG
2.1 Sơ đồ
3 Các Nguyên Lý Hướng Đối Tượng
- Đầu tiên ta thấy ở đây là sự kế thừa của các lớp Quân cờ cụ thể
kế thừa từ lớp quân cờ
10
Trang 13- Tiếp là các lớp Di chuyển thường, Nhập thành, Phong hiệu kế thừa của lớp di chuyển
- Các phương thức đa hình ví dụ như IsLegal
- Các phương thức trừu tượng ví dụ như Copy(), GetMove() ở lớp Piece và Execute(), thuộc tính ToPos, FormPos ở lớp Move
4 Các Cấu Trúc Dữ Liệu
o enum:
- là một kiểu dữ liệu được định nghĩa bởi một tập hợp các hằng số được đặt tên Mỗi hằng số trong enum có một giá trị nguyên tương ứng, mặc định bắt đầu từ 0 và tăng lên mỗi lần thêm một hằng số mới
o readonly:
- sử dụng để chỉ định rằng một trường (field) trong một lớp (class) chỉ
có thể được gán giá trị một lần tại thời điểm khởi tạo hoặc trong constructor của lớp đó Một khi trường được gán giá trị, nó không thể được thay đổi lại
o yield return:
- yield được sử dụng để tạo ra một iterator Iterator là một đối tượng
có khả năng trả về một chuỗi các phần tử một cách tuần tự khi được yêu cầu
- Khi kết hợp với return, yield return cho phép bạn trả về một giá trị
từ một phương thức iterator, nhưng vẫn giữ lại trạng thái của phương thức đó Điều này cho phép bạn tiếp tục từ nơi mà phương thức đã dừng lại khi gặp lệnh yield return
o IEnumerable<>:
- Là một giao diện generic được sử dụng để đại diện cho một tập hợp các phần tử có thể lặp qua Đây là một cách tiêu biểu để biểu diễn một dãy các phần tử trong C#
- Khi sử dụng IEnumerable<>, bạn cần chỉ định kiểu dữ liệu của các phần tử trong tập hợp
o return < tên biến> switch {biếu thức lamba}; :
- trả kết quả của biểu thức lamba Tương tự như switch trước rồi return
Trang 14o <Quyền truy cập> <tên class> operator <toán tử>(2 đối tượng của class):
- định nghĩa lại cho các lớp hoặc struct bằng cách sử dụng toán tử nạp chồng (operator overloading) Khi định nghĩa lại một toán tử như +,
có thể sử dụng toán tử đó để thực hiện các phép toán tùy chỉnh với các đối tượng của lớp hoặc struct
o partial:
- Sử dụng để cho phép một lớp, một struct hoặc một phương thức được phân tách thành nhiều phần, mỗi phần có thể được khai báo trong các tập tin hoặc nơi khác nhau Khi sử dụng từ khóa partial, các phần được chia thành sẽ được kết hợp lại thành một đối tượng duy nhất khi biên dịch
- Công dụng chính của partial là cho phép các thành phần của một lớp hoặc một struct được phát triển và duy trì dễ dàng hơn bằng cách phân tách chúng thành các phần nhỏ hơn Điều này có thể hữu ích trong các dự án lớn, khi nhiều người cùng làm việc trên cùng một lớp hoặc struct
5 Đọc, ghi đối tượng vào file Xml
Nhóm có sử dụng phần người dùng để tạo môt file XML dành cho các trang đăng nhập đăng ký, khi thực hiện đăng nhập sẽ duyệt trong file để kiểm tra và khi đăng ký sẽ thêm người dùng mới vào file
12
Trang 15PHẦN 3: KẾT LUẬN VÀ ĐỊNH HƯỚNG PHÁT TRIỂN
1 Kết Luận
Phần chương trình mà nhóm Ba Con Báo tìm hiểu và thực hiện đã hoàn thành được các yêu cầu đặt ra từ đầu của nhóm Sau khoảng thời gian tìm hiểu môn học cũng như là tìm hiểu đề tài theo đúng quy trình đặt ra với
2 tuần đầu để tìm hiểu về phần nội dung yêu cầu đề tài,
2 tuần tìm hiểu về các quy trình nghiệp vụ của đề tài cũng như tìm hiểu
về các đối tượng của đề tài,
2 tuần định hướng lại đầy đủ các nguyên lý của các lớp đối tượng có trong đề tài và thực hiện viết lên một phần nào của chương trình,
2 tuần hoàn thành việc viết lên chương trình hoàn chỉnh chạy chỉnh sửa tối ưu các chức năng để đạt đúng với yêu cầu đề ra
1 tuần cuối hoàn chỉnh lại báo cáo
Sau cả quá trình thì các thành viên nhóm thống nhất là về cả mặt chương trình cũng như là báo cáo đều đã hoàn thiện
2 Định Hướng Phát Triển
Với đề tài trên thì Cờ Vua là một trò chơi đã và đang được phổ biến qua từng ngày, với những gì mà nhóm đã đạt được là chưa đầy đủ hoàn toàn do luật cờ vua ban hành nên nhóm sẽ hoàn thành thêm một số sự kiện mới cũng như các luật chiếu hoà chiếu bí mới nhất Để sớm ngày có một sản phẩm hoàn toàn đáp ứng được nhu cầu của một bàn cờ cần có
PHẦN 4: TÀI LIỆU THAM KHẢO
https://luatminhkhue.vn/quyet-dinh-757-2004-qd-ubtdtt-tti-ban-hanh- luat-co-vua-do-bo-truong -chu-nhiem-uy-ban-the-duc-the-thao-ban-hanh.aspx