1. Trang chủ
  2. » Luận Văn - Báo Cáo

bài tập lớn môn học công nghệ java đề tài trò chơi cờ vua

30 1 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Trò Chơi Cờ Vua
Tác giả Đào Văn Dưỡng, Phạm Tô Thế Anh, Nguyễn Tiến Đạt
Người hướng dẫn GV Đào Thị Lệ Thủy
Trường học Trường Đại Học Giao Thông Vận Tải
Chuyên ngành Công Nghệ Java
Thể loại bài tập lớn
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 30
Dung lượng 5,04 MB

Nội dung

Quy tắc của trò chơi Khi một ván cờ vua bắt đầu, một người chơi sẽ cầm quân đen và người chơi còn lại cầm quân trắng.. Việc chọn lựa ai sẽ cầm quân đen hay trắng phụ thuộc vào thể thức c

Trang 1

TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI KHOA CÔNG NGHỆ THÔNG TIN

Giảng viên hướng dẫn: GV Đào Thị Lệ Thủy

Nhóm sinh viên thực hiện: Đào Văn Dưỡng

Phạm Tô Thế AnhNguyễn Tiến Đạt

Lớp: 26.2

Hà Nội – 2023

Trang 2

MỤC LỤC

MỤC LỤC 1

DANH MỤC HÌNH ẢNH 3

CHƯƠNG 1: TỔNG QUAN VỀ TRÒ CHƠI 4

1.1 Mô tả trò chơi 4

1.2 Mục đích của trò chơi 4

1.3 Quy tắc của trò chơi 4

CHƯƠNG 2: PHÂN TÍCH THIẾT KẾ HỆ THỐNG 10

2.1 Mô tả hoạt động trò chơi “Cờ vua” 10

2.1.1 Mô tả sơ bộ trò chơi 10

2.1.2 Thiết kế thế giới trò chơi 10

2.1.3 Thiết kế cách chơi cơ bản 11

Người chơi thực hiện chọn quân cờ muốn di chuyển Tùy vào quân cờ được chọn sẽ có vị trí đi khác nhau Sau khi đã chọn quân cờ, người chơi thực hiện chọn vị trí quân cờ muốn di chuyển đến Sau đó sẽ đến lượt quân cờ đối diện Cứ tiếp tục đến khi 1 trong 2 bên không còn quân cờ nào trên bàn thì đối phương sẽ chiến thắng 11

2.1.4 Thiết kế khung giao diện cơ bản và 11

2.1.5 Thiết kế quân cờ 12

2.2 Xây dựng chương trình trò chơi 12

2.2.1 Xác định các class chính 12

CHƯƠNG 3: GIAO DIỆN VÀ CÁC CHỨC NĂNG CHÍNH 23

3.1 Giao diện của trò chơi 23

3.1.1 Giao diện khởi động trò chơi 23

3.1.2 Giao diện thông báo chưa chọn quân cờ 24

3.1.3 Giao diện thông báo bước đi không hợp lệ 25

3.1.4 Giao diện thông báo sai lượt 26

1

Trang 3

3.1.5 Giao diện cảnh báo chiếu tướng 27

3.1.6 Giao diện chiến thắng 28

CHƯƠNG 4: KẾT LUẬN 29

4.1 KẾT QUẢ THU ĐƯỢC: 29

4.2 HẠN CHẾ CẦN KHẮC PHỤC: 29

4.3 HƯỚNG PHÁT TRIỂN: 29

2

Trang 4

DANH MỤC HÌNH ẢNH

Ảnh 1: Minh họa nước đi quân xe 5

Ảnh 2: Minh họa nước đi quân tượng 6

Ảnh 3: minh họa nước đi quân hậu 6

Ảnh 4: minh họa nước đi quân mã trong cờ vua 7

Ảnh 5: minh họa nước đi quân tốt 7

Ảnh 6: minh họa quân tốt thăng cấp 8

Ảnh 7: minh họa nước đi quân vua 9

Ảnh 8: Minh họa bàn cờ 10

Ảnh 9: thiết kế giao diện trong trò chơi 11

Ảnh 10: thiết kế quân cờ 12

Ảnh 11: Thiết kế thuộc tính cho các quân cờ 12

Ảnh 12: Class ChessCheckMate 13

Ảnh 13: flow của của hàm checkMateKing 14

Ảnh 14: flow của hàm killCheckmateKing 15

Ảnh 15: flow hàm shieldCheckmateKing 17

Ảnh 16: luồng kiểm tra chung 19

Ảnh 17: Giao diện khi khởi động trò chơi 22

Ảnh 18: Giao diện chưa có quân cờ được chọn 23

Ảnh 19: Giao diện thông báo nước cờ không hợp lệ 24

Ảnh 20: Giao diện thông báo sai lượt 25

Ảnh 21: giao diện thông báo chiếu tướng 26

3

Trang 5

CHƯƠNG 1: TỔNG QUAN VỀ TRÒ CHƠI

1.1 Mô tả trò chơi

Cờ vua (tên tiếng Anh: Chess), trước kia còn được gọi là Cờ quốc tế, là trò chơiquốc tế và là môn thể thao trí tuệ cho 2 người chơi Ngày nay, cờ vua là một trong nhữngtrò chơi phổ biến nhất thế giới với hàng triệu người tại nhà riêng, trong câu lạc bộ, trựctuyến, từ xa và trong các giải đấu Trò chơi này diễn ra trên một bảng hình vuông, gọi

là bàn cờ, gồm 8 hàng (đánh số từ 1 đến 8) và 8 cột (đánh các chữ cái từ a đến h), tạo ra

64 ô hình vuông với các màu đậm và nhạt xen kẽ nhau, với mỗi người chơi sẽ có ô màunhạt ở hàng cuối cùng bên tay phải của mình khi ngồi vào bàn chơi cờ Mỗi người sẽ bắtđầu ván cờ với 16 quân cờ và sẽ lần lượt đi các quân của mình sau khi đối phương đã đixong một nước (hoàn thành nước đi)

Các quân cờ của mỗi bên bao gồm 8 Tốt, 2 Mã, 2 Tượng, 2 Xe, 1 Hậu và 1 Vua.Người cầm quân trắng luôn là người đi đầu tiên; người kia cầm quân đen Các quân Hậu

và Xe được gọi là quân nặng, còn Tượng và Mã được gọi là quân nhẹ

1.2 Mục đích của trò chơi

Xây dựng trò chơi có cách chơi đơn giản, dễ tiếp cận, nhưng đồng thời cũng cần suynghĩ, thêm vào đó, trò chơi phải có giao diện trực quan, đơn giản, dễ dàng tiếp cận và sửdụng

Giúp giải quyết nhu cầu thực tế người dùng: Nhu cầu giải trí và khám phá trò chơiphù hợp với đa số đối tượng người chơi Khiến người chơi có trải nghiệm chơi tốt nhất cóthể

1.3 Quy tắc của trò chơi

Khi một ván cờ vua bắt đầu, một người chơi sẽ cầm quân đen và người chơi còn lạicầm quân trắng Việc chọn lựa ai sẽ cầm quân đen hay trắng phụ thuộc vào thể thức chơi

là giải trí hay thi đấu trong hệ thống có tổ chức Nó có thể là do hai người thỏa thuận (giảitrí) hoặc do quyết định của trọng tài trong giải đấu Bên cầm quân trắng luôn luôn được

đi trước và do đó có ưu thế nhỏ so với bên cầm quân đen Các quân cờ cần phải xếp

4

Trang 6

trên bàn cờ tiêu chuẩn với ô nằm ở hàng cuối cùng bên tay phải người chơi bao giờ cũng

có màu nhạt

Các quân cờ có nước đi khác nhau:

Xe (ký hiệu quốc tế R - Rook) di chuyển theo các đường thẳng dọc theo cột hayhàng tới ô còn trống mà không có quân nào cản trên đường đi hay tới ô bị quân đốiphương chiếm giữ (ăn quân) nhưng không thể vượt qua quân đang đứng ở ô đó Ngoại lệduy nhất là trường hợp nhập thành Khi đó nó có thể nhảy qua quân Vua của mình đểđứng cạnh nó Chỉ có Xe mới có nước đi như vậy

Ảnh 1: Minh họa nước đi quân xe

Tượng (ký hiệu quốc tế B - Bishop) di chuyển theo đường chéo tới ô có cùng màuvới nguyên lý tương tự như Xe tới ô còn trống hay ô bị quân đối phương chiếm giữ (ănquân)

5

Trang 7

Ảnh 2: Minh họa nước đi quân tượng

Hậu (ký hiệu quốc tế Q - Queen) có nước đi là tổ hợp đơn giản của chuyển độngcủa Xe và Tượng Trong một nước đi nó có thể di chuyển theo đường chéo hoặc đườngthẳng dọc theo cột hay hàng, với nguyên lý đi và ăn quân giống như Tượng và Xe

Ảnh 3: minh họa nước đi quân hậu

Mã (ký hiệu quốc tế N - Knight) có thể di chuyển tới ô còn trống hay ô bị quân đốiphương chiếm giữ (ăn quân) theo dạng hình chữ (hình chữ nhật 3×2 hay 2×3) Quân MãLkhông bị cản như trong cờ tướng

6

Trang 8

Ảnh 4: minh họa nước đi quân mã trong cờ vua

Tốt (không cần ký hiệu) có thể di chuyển thẳng về phía trước chỉ một ô một lần tới

ô còn trống (đi mà không ăn quân), nhưng khi di chuyển quân để ăn quân đối phương thì

đi chéo Ví dụ, Tốt trắng tại ô c4 có quyền ăn quân đối phương tại b5 hoặc d5 nếu mộttrong hai ô này có quân đối phương chiếm hoặc di chuyển xuống ô c5 nếu ô này còntrống, trừ hai trường hợp sau:

Ảnh 5: minh họa nước đi quân tốt

Nó có thể di chuyển 1 hoặc 2 ô nếu nó đi từ vị trí xuất phát ban đầu tới ô chưa bịchiếm giữ, nhưng không thể nhảy qua một quân khác để tới ô đó Ví dụ Tốt trắng tại g2

có thể đi tới g3 hoặc g4 nếu đây là nước đi đầu tiên của nó và các ô này chưa bị chiếmgiữ, nhưng nó không thể đi tới g4 nếu ô g3 đã có một quân nào đó chiếm giữ

Trong trường hợp khi một quân Tốt nào đó của bên trắng đạt tới hàng 5 (ví dụ tới ôe5) và quân Tốt thuộc một trong hai cột của bên đen nằm ngay bên cạnh cột mà Tốt trắng

7

Trang 9

này đang chiếm giữ (trong trường hợp đã cho là cột d và cột f) đi từ vị trí xuất phát đầutiên (d7 hay f7) nhảy liền 2 ô tới ô d5/f5 thì Tốt trắng tại vị trí e5 ngay tại nước đi sau

đó có quyền ăn Tốt đen tại ô d5/f5 và di chuyển tiếp tới ô d6/f6 Quyền này sẽ tự độngmất, nếu tại nước đi ngay sau đó quân trắng di chuyển quân khác Tương tự như vậy choTốt đen khi nó đã chiếm giữ hàng 4 Đây là trường hợp mà trong cờ vua người ta gọi

là bắt tốt qua đường (en passant)

Tốt còn một đặc điểm nữa là khi nó di chuyển đến hàng cuối cùng thì người chơi cóquyền phong cấp cho nó thành bất kỳ quân nặng hay nhẹ nào (Hậu, Xe, Tượng, Mã)

Ảnh 6: minh họa quân tốt thăng cấp

Vua (ký hiệu quốc tế là K - King) là quân quan trọng nhất, nếu mất Vua thì ngườichơi thua cuộc Mỗi lần đi nó có thể ăn quân hoặc di chuyển sang các ô bao quanh ô mà

nó hiện tại đang chiếm giữ, nhưng không thể tới ô mà quân của mình đang chiếm giữ haycác ô bị quân đối phương kiểm soát Ngoại lệ duy nhất là trường hợp nhập thành Khi đó

nó có thể di chuyển qua hai ô đồng thời với việc di chuyển quân Xe của mình để quân Xe

đó đứng bên cạnh nó về phía cột trung tâm Ký hiệu của nhập thành là 0-0 (nhập thànhgần) và 0-0-0 (nhập thành xa) Xem thêm nhập thành

Khi ăn quân đối phương, quân tấn công sẽ di chuyển tới ô đó và thay thế cho quânđối phương tại vị trí này, bắt tốt qua đường (en passant) là ngoại lệ duy nhất Quân bị ănđược loại ra khỏi bàn cờ Vua không thể không bảo vệ khỏi nước chiếu, do đó khi bị chiếuthì người chơi phải thực hiện các biện pháp nhằm cứu Vua (di chuyển Vua khỏi vị trí bịchiếu, ăn quân đang chiếu hay dùng quân khác của mình cản đường chiếu nếu có thể).Nếu không thể có nước đi để cứu Vua thì người chơi bị chiếu bí và thua cuộc

8

Trang 10

Các ván cờ không phải bao giờ cũng kết thúc bằng chiếu bí Có thể một bên xinthua, có thể thua do hết giờ Có thể xảy ra các ván cờ hòa Một ván cờ vua là hòa khi: dothỏa thuận của hai bên do không bên nào dám mạo hiểm hay khi không đủ lực lượng đểchiếu hết, rơi vào trạng thái hết nước đi (stalemate), cả hai bên lặp lại nước đi ba lần.

Ảnh 7: minh họa nước đi quân vua

9

Trang 11

CHƯƠNG 2: PHÂN TÍCH THIẾT KẾ HỆ THỐNG

2.1 Mô tả hoạt động trò chơi “Cờ vua”

2.1.1 Mô tả sơ bộ trò chơi

Khi khởi chạy trò chơi, người dùng có thể sử dụng các tùy chọn: chơi trò chơi vàthoát khỏi trò chơi

Sau khi chọn phần chơi, người chơi sẽ tiến đến mục chọn nhân vật Ở đây, ngườichơi có thể chọn nhân vật để chơi game hoặc quay lại màn hình tùy chọn ban đầuSau khi tiến hành chọn nhân vật xong, người chơi sẽ điều khiển nhân vật để khámphá thế giới trò chơi đã đã được bố trí sẵn địa hình Để lấy các vật phẩm xuất hiện trên địahình, nhân vật cần được di chuyển chạm vào chúng Ngoài ra, người chơi có thể tương tácvới NPC xuất hiện trong game để thu thập một số thông tin chỉ dẫn giúp tìm kiếm nhữngvật phẩm dễ dàng hơn

Khi người chơi bấm nút tạm dừng trên bàn phím, màn hình sẽ hiện ra một giao diện

có các nút chơi tiếp, hoặc quay trở về màn hình tùy chọn ban đầu

2.1.2 Thiết kế thế giới trò chơi

Trò chơi được chia thành 1 bàn cờ gồm 64 ô, 32 ô trắng và 32 ô đen

Ảnh 8: Minh họa bàn cờ

10

Trang 12

2.1.3 Thiết kế cách chơi cơ bản

Người chơi thực hiện chọn quân cờ muốn di chuyển Tùy vào quân cờ được chọn

sẽ có vị trí đi khác nhau Sau khi đã chọn quân cờ, người chơi thực hiện chọn vị trí quân

cờ muốn di chuyển đến Sau đó sẽ đến lượt quân cờ đối diện Cứ tiếp tục đến khi 1 trong

2 bên không còn quân cờ nào trên bàn thì đối phương sẽ chiến thắng

2.1.4 Thiết kế khung giao diện cơ bản và

Khung giao diện của trò chơi có các thành phần chính như sau:

- Bàn cờ: Jpanel kích thước 600x600px

- Các ô cờ: Jpanel được chia đều thành 8 hàng 8 cột

Ảnh 9: thiết kế giao diện trong trò chơi

11

Trang 13

- Package: entity

o Class GamePanel: Lớp ChessPiece lưu trữ các thông tin của một quân cờ baogồm loại quân cờ, màu sắc và vị trí

Ảnh 11: Thiết kế thuộc tính cho các quân cờ

o Class ChessCheckMate: lưu trữ đối tượng vua bị chiếu , quân cờ chiếu và vịtrí chiếu

12

Trang 15

Ảnh 13: flow của của hàm checkMateKing

14

Trang 16

Function killCheckmateKing(): mục đích kiểm tra xem có quân cờ nào cóthể ăn được quân cờ đối thủ đang chiếu quân vua hay không, tham số truyền vào làquân cờ đang chiếu vua

Ảnh 14: flow của hàm killCheckmateKing

Function shieldCheckmateKing (): sử dụng để kiểm tra xem có quân cờ nàophía quân vua bị chiếu có thể chắn giữa quân cờ chiếu vua và quân vua hay không

15

Trang 17

Tham số truyền vào là quân vua bị chiếu và quân đang chiếu quân vua Các quân

có khả năng chiếu vua mà tạo khoảng cách ở giữa là quân hậu, xe , tượng ngoài racòn quân tốt và quân mã Quân tốt thì không tạo khoảng trống vì nước đi đặc biệt

và quân mã thì không thể bị chặn ở giữa được

Ảnh 15: flow hàm shieldCheckmateKing

16

Trang 18

- Class StepService:

Bao gồm các function dung để kiểm tra nước đi có hợp lệ đối với quân cờ đang đượcchọn đặc điểm chung của các hàm đều nhận vào 4 tham số bao gồm trục x băn đầu, trục ybăn đầu, trục x muốn di chuyển đến, trục y muốn di chuyển đến Và trong các functionđều kiểm tra xem giữa vị trí băn đầu và vị trí muốn di chuyển đến có tồn tại quân cờ nào ởgiữa không Nếu tồn tại trả về false

17

Trang 19

o Flow chung cho kiểm tra nước đi:

Ảnh 16: luồng kiểm tra chung

o Function isValidQuanTuong():

Đối với quân tượng sẽ thực hiện kiểm tra :

Nếu | start_row – end_row | = | start_column – end_column | thì đó là nước đi hợp

lệ Trong đó start_row là dòng vị trí băn đầu, end row là vị trí muốn di chuyển đến, startcolumn là cột băn đầu, end column là cột muốn di chuyển đến

o Function isValidQuanXe():

18

Trang 20

Xảy ra 2 trường hợp, quân xe đi ngang và đi dọc khi quân xe đi dọc thì cột giữnguyên, dòng sẽ thay đổi Và ngược lại khi quân xe đ ingang thì dòng giữ nguyên, cột sẽthay đổi Dựa vào 2 trường hợp này ta có điều kiện

(start_row – end_row) == 0 thì (start_column – end_column ) != 0

o Function isValidQuanMa();

Kiểm tra nước đi hợp lệ cho quân mã Quân mã có nước đi khá đặc biệt Đi hình chữ

L nên ta có điều kiện như sau:

| start_row – end_row | = 1 và | start_column – end_column | = 2

Trang 21

Quân tốt có thể ăn 1 quân cờ khi quân cờ đó nằm chéo quân tốt và không cách bất

kỳ ô cờ nào Và có điều kiện là:

| start_row – end_row | = 1 và | start_column – end_column | = 1

Khi quân tốt di chuyển đến vị trí row 0 hoặc 7 thì quân tốt có thể thăng cấp trở thành

1 trong 4 quân cờ: Hậu, xe , tượng, mã

- Class Utils:

o Function InitDefaultChessMan():

Sử dụng để tạo ra các quân cờ khi trò chơi vừa khởi động

chessPieces add ( new ChessPiece ( "XE" , Color WHITE , 0 ));

chessPieces add(new ChessPiece( "MA" , Color WHITE 0 1 , , ));

chessPieces add(new ChessPiece( "TUONG" , Color WHITE 0 2 , , ));

chessPieces add(new ChessPiece( "HAU" , Color WHITE 0 3 , , ));

chessPieces add(new ChessPiece( "VUA" , Color WHITE 0 4 , , ));

chessPieces add(new ChessPiece( "TUONG" , Color WHITE 0 5 , , ));

chessPieces add(new ChessPiece( "MA" , Color WHITE 0 6 , , ));

chessPieces add(new ChessPiece( "XE" , Color WHITE 0 7 , , ));

chessPieces add(new ChessPiece( "TOT" , Color WHITE 1 0 , , ));

chessPieces add(new ChessPiece( "TOT" , Color WHITE 1 1 , , ));

chessPieces add(new ChessPiece( "TOT" , Color WHITE 1 2 , , ));

chessPieces add(new ChessPiece( "TOT" , Color WHITE 1 3 , , ));

chessPieces add(new ChessPiece( "TOT" , Color WHITE 1 4 , , ));

chessPieces add(new ChessPiece( "TOT" , Color WHITE 1 5 , , ));

chessPieces add(new ChessPiece( "TOT" , Color WHITE 1 6 , , ));

chessPieces add(new ChessPiece( "TOT" , Color WHITE 1 7 , , ));

//Hết bên trắng

//Bên đen

chessPieces add ( new ChessPiece ( "TOT" , Color BLACK , 0 ));

chessPieces add(new ChessPiece( "TOT" , Color BLACK 6 1 , , ));

chessPieces add(new ChessPiece( "TOT" , Color BLACK 6 2 , , ));

chessPieces add(new ChessPiece( "TOT" , Color BLACK 6 3 , , ));

chessPieces add(new ChessPiece( "TOT" , Color BLACK 6 4 , , ));

chessPieces add(new ChessPiece( "TOT" , Color BLACK 6 5 , , ));

chessPieces add(new ChessPiece( "TOT" , Color BLACK 6 6 , , ));

chessPieces add(new ChessPiece( "TOT" , Color BLACK 6 7 , , ));

chessPieces add(new ChessPiece( "XE" , Color BLACK 7 0 , , ));

chessPieces add(new ChessPiece( "MA" , Color BLACK 7 1 , , ));

chessPieces add(new ChessPiece( "TUONG" , Color BLACK 7 2 , , ));

chessPieces add(new ChessPiece( "HAU" , Color BLACK 7 3 , , ));

20

Ngày đăng: 22/04/2024, 22:12

HÌNH ẢNH LIÊN QUAN

Hình 3.1: Giao diện chiến thắng - bài tập lớn môn học công nghệ java đề tài trò chơi cờ vua
Hình 3.1 Giao diện chiến thắng (Trang 29)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w