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

Học cấu trúc dữ liệu & thuật toán báo cáo trò chơi cờ vua người Đánh vớ

19 0 0
Tài liệu đã được kiểm tra trùng lặp

Đ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 Người Đánh Với Máy
Tác giả Phạm Gia Nguyên, Đặng Phương Nam, Bùi Hữu Phước, Hoàng Anh Minh
Người hướng dẫn PSG.TS Nguyễn Thị Hồng Minh
Trường học Đại Học Quốc Gia Hà Nội
Chuyên ngành Cấu Trúc Dữ Liệu & Thuật Toán
Thể loại Báo cáo
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 19
Dung lượng 1,75 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

2.2 Game cờ vua người đánh với máy trên máy tính 2.2.1 Ý tưởng Coi cờ vua là sự kết hợp giữa hai đối thủ, mỗi đối thủ cố gắng lựa chọn hành động tối ưu của mình tìm ra nước đi tốt nhất n

Trang 1

ĐẠI HỌC QUỐC GIA HÀ NỘI

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN KHOA: TOÁN-CƠ-TIN HỌC

MÔN HỌC: CẤU TRÚC DỮ LIỆU & THUẬT TOÁN

Báo cáo: Trò chơi cờ vua người đánh với máy GVHD: PSG.TS Nguyễn Thị Hồng Minh

Nhóm: G07 Phạm Gia Nguyên

Đặng Phương Nam

Bùi Hữu Phước Hoàng Anh Minh

Hà Nội, tháng 12 năm 2023

i

Trang 2

LỜI MỞ ĐẦU

ii

Trang 3

MỤC LỤC

CHƯƠNG 1 KIẾN THỨC CƠ SỞ 1

1.1 Kỹ thuật lập trình 1

1.2 Lập trình hướng đối tượng 1

1.3 Cấu trúc dữ liệu và thuật toán 1

1.3.1 Cấu trúc dữ liệu 1

1.3.2 Thuật toán 2

1.4 Thiết kế giao diện sử dụng JavaSwing 2

1.5 Các thư viện của Java 2

1.6 Kiến thức về cờ vua 2

CHƯƠNG 2 TRÒ CHƠI CỜ VUA 3

2.1 Giới thiệu trò chơi cờ vua 3

2.1.1 Định nghĩa 3

2.1.2 Bàn cờ 3

2.2 Game cờ vua người đánh với máy trên máy tính 4

2.2.1 Ý tưởng 4

2.2.2 Yêu cầu của game cờ vua người đánh với máy 4

2.2.3 Cách thức hoạt động của Bot 5

2.3 Các thuật toán sử dụng cho Bot 5

2.3.1 Thuật toán tìm kiếm Minimax 5

2.3.2 Thuật toán Alpha-Beta Pruning 6

2.3.3 Hàm đánh giá thế cờ 7

iii

Trang 4

2.4 Điểm sức mạnh cơ bản của mỗi quân cờ 7

2.5 Điểm số sức mạnh được cộng 9

2.5.1 Quân Mã 9

2.5.2 Quân Tượng 10

2.5.3 Quân Xe 10

2.5.4 Quân Hậu 11

2.5.5 Quân Vua 11

2.5.6 Quân Tốt 12

2.6 Nhận định chung về Bot 12

2.7 Giao diện của Bot 13

2.8 Các chức năng của game cờ vua 13

iv

Trang 5

Danh sách từ viết tắt

ABP: Thuật toán Alpha-Beta Pruning

Hàm ĐGTC: Hàm đánh giá thế cờ

Danh sách các hình vẽ

Hình 2.1: Hình ảnh bàn cờ 3

Hình 2.2: Hình ảnh giao diện game 4

Hình 2.3: Thuật toán sử dụng cho Bot 5

Hình 2.4: Ma trận điểm cộng quân Mã 10 Danh sách các bảng

Bảng 1.1

v

Trang 6

Chương 1: Kiến thức cơ sở

1.1 Kỹ thuật lập trình

Quy tắc đặt tên:

Tên biến, tên phương thức: theo quy tắc Camel Case

Tên class, tên hằng số, tên package: theo chuẩn google

Kiến thức cơ bản về Java: cấu trúc rẽ nhánh, vòng lặp

Kĩ thuật đệ quy trong lập trình

Xử lý ngoại lệ

Đọc ghi file trong Java

Thiết kế chương trình theo mô hình MVC (model – view - controller)

Kĩ thuật DEBUG, FIXBUG

1.2 Lập trình hướng đối tượng

Áp dụng 4 quy tắc trong lập trình hướng đối tượng:

Kế thừa

Trừu tượng

Đóng gói

Đa hình

Sử dụng ENUM CLASS cho các hằng số của chương trình

Áp dụng Design Pattern vào thiết kế: Composite Design Pattern, State Design Pattern

Áp dụng SOLID

1.3 Cấu trúc dữ liệu và thuật toán

Trang 7

Chương 1: Kiến thức cơ sở

1.3.1 Cấu trúc dữ liệu

Mảng: mảng 1 chiều và mảng 2 chiều

List: ArrayList

Cây: cây trò chơi

Map: Hash Map

1.3.2 Thuật toán

Thuật toán Alpha-Beta Pruning

Thuật toán tìm kiếm Minimax

Thuật toán tìm kiếm tuyến tính

1.4 Thiết kế giao diện sử dụng JavaSwing

Xây dựng giao diện sử dụng: JFrame, JPanel, JButton

Tích hợp logic cờ vua để kiểm tra vị trí và luật di chuyển

Xử lý sự kiện: MouseListener, ActionListerner

Định dạng và tùy chình giao diện: Bố cục, Màu sắc, Font chữ, Ảnh

1.5 Các thư viện của Java

Các thư viện: java.util, java.io, java.awt, javax.swing, java.net

1.6 Kiến thức về cờ vua

Cách bố trí bàn cờ

Các luật chơi:

Các nước đi

Điểm của từng quân cờ

Chiếu tướng, phong tốt, hết cờ

Ảnh hưởng tới thế cờ của vị trí các con cờ

Trang 8

Chương 1: Kiến thức cơ sở

Trang 9

Chương 2: Trò chơi cờ vua

2.1 Giới thiệu trò chơi cờ vua

2.1.1 Định nghĩa

Cờ vua là một trò chơi trí tuệ đối kháng giữa hai người chơi trên bàn

Cờ vua là một trò chơi, một môn thể thao phổ biến trên thế giới, có thể chơi ở bất cứ nơi nào

2.1.2 Bàn cờ

Hình vuông 8x8, 2 màu đan xen

Mỗi bên bắt đầu bằng 16 con cờ được sắp xếp sẵn vị trí ban đầu

Hình 2.1: Hình ảnh bàn cờ Danh sách quân cờ:

8 quân Tốt (Pawn)

2 quân Mã (Knight)

2 quân Tượng (Bishop)

2 quân Xe (Rook)

1 quân Hậu (Queen)

1 quân Vua (King)

Các hàng được đánh số từ 1 đến 8

Trang 10

Chương 2: Trò chơi cờ vua

Các cột được đánh số từ a đến h

2.2 Game cờ vua người đánh với máy trên máy tính

2.2.1 Ý tưởng

Coi cờ vua là sự kết hợp giữa hai đối thủ, mỗi đối thủ cố gắng lựa chọn hành động tối

ưu của mình (tìm ra nước đi tốt nhất) nhằm đặt được lợi ích tối đa

Cờ vua là trò chơi sẽ có tổng bằng 0 (Zero sum game)

Việc chiến thắng của một bên (+1) sẽ làm bên kia thua cuộc (-1) Không thể có trường hợp cả hai bên cùng thắng hoặc cùng thua

Sau mỗi nước đi của người chơi, máy tính sẽ sử dụng trạng thái của bàn cờ hiện tại, đưa vào các phép tính toán thích hợp để tìm ra nước đi thuận lợi nhất rồi thực hiện nước đi đó

2.2.2 Yêu cầu của game cờ vua người đánh với máy

Có đồ họa rõ ràng, có đầy đủ các chức năng

Đảm bảo không xảy ra lỗi

Phát hiện các chức năng suy nghĩ, hành động của AI

AI đủ thông minh để đưa ra các quyết định khó đoán nhưng hợp lý

Hình ảnh giao diện game cờ vua:

Hình 2.2: Hình ảnh giao diện game

Trang 11

Chương 2: Trò chơi cờ vua

2.2.3 Cách thức hoạt động của Bot

Xem xét tất cả các nước đi hợp lệ, mỗi nước trong số đó sẽ đưa bàn cờ tới một trạng thái mới

Đánh giá tất cả các trạng thái mới, đưa ra nước đi hợp lý, dẫn tới trạng thái bàn cờ mang lại nhiều lợi ích cho phe Bot chọn nhất

Chờ cho người chơi di chuyển sau đó lặp lại những hành động trên

2.3 Các thuật toán sử dụng cho Bot

Áp dụng các thuật toán sau cho Bot cờ vua:

Tìm kiếm Minimax

Thuật toán Alpha-Beta Pruning

Hàm đánh giá thế cờ

Hình 2.3: Thuật toán sử dụng cho Bot

2.3.1 Thuật toán tìm kiếm Minimax

Trong 2 người chơi thì 1 người là MAX, người kia là MIN Luôn tìm được cách thực hiện những nước đi để nâng điểm của mình và giảm điểm của đối phương

Cả MIN và MAX đều sử dụng những thông tin như nhau, có cùng khả năng xử lý và hiểu biết như nhau

Trò chơi được biểu diễn bằng cây trò chơi (cây MIN - MAX) Nút gốc biểu thị trạng thái ban đầu, nút lá biểu thị trạng thái kết thúc

Trang 12

Chương 2: Trò chơi cờ vua

Sử dụng giá trị của các nút lá để định trị các nút trên cây trò chơi:

Nút thuộc lớp MAX thì gán cho nó giá trị lớn nhất trong các nút con của nó Nút thuộc lớp MIN thì gán cho nó giá trị nhỏ nhất trong các nút con của nó Các bước trong thuật toán Minimax:

Nếu như đạt đến giới hạn tìm kiếm (đến nút lá), tính giá trị của thế cờ hiện tại ứng với người chơi đó Ghi nhớ kết quả đó

Nếu như mức đang xét là của MIN, áp dụng thuật toán cho các nút con của nó Ghi nhớ kết quả nhỏ nhất

Nếu như mức đang xét là của MAX, áp dụng thuật toán cho các nút con của nó Ghi nhớ kết quả lớn nhất

Áp dụng đến độ sâu cố định: Tính trước n nước

Kết quả truyền về nút nguồn là heuristic cho giá trị tốt nhất, không thông báo kết quả thắng – thua

Sau mỗi nước đi, thông tin trên bàn cờ sẽ thay đổi Do đó sẽ xác định một lớp cây MIN – MAX mới và các ước lượng n nước đi mới

2.3.2 Thuật toán Alpha-Beta Pruning

Là thuật toán cải tiến của thuật toán Minimax với tư tưởng: “Nếu thấy một việc làm tệ thì không cần thiết xem nó tệ đến mức nào”

Công dụng: Làm giảm số nút cần thiết phải giảm để không lãng phí thời gian tìm kiếm những nút trong những nước đi đã gây bất lợi

Thêm vào 2 tham số α và β Cho biết các giá trị nằm ngoài [α, β] là những giá trị không cần thiết xem xét nữa

Giá trị α liên quan đến nút MAX, có xu hướng không bao giờ giảm

Giá trị β liên quan đến nút MIN, có xu hướng không bao giờ tăng

Trang 13

Chương 2: Trò chơi cờ vua

Hai luật cắt tỉa:

Quá trình tìm kiếm có thể kết thúc bên dưới một nút MIN nào đó có giá trị β nhỏ hơn hoặc bằng giá trị α của một nút cha MAX bất kỳ của nó

Quá trình tìm kiếm có thể kết thúc bên dưới một nút MAX nào đó có giá trị α lớn hơn hoặc bằng giá trị β của một nút cha MIN bất kỳ của nó

Nếu mức đang xét là đỉnh (gốc của cây), đặt giá trị α = -∞ và β = +∞

Nếu như đạt đến giới hạn tìm kiếm (đến tầng cuối cùng của cây tìm kiếm, nút lá), tính giá trị tĩnh của thế cờ hiện tại ứng với người chơi ở đó Ghi lại kết quả

Nếu như mức đang xét là của người chơi cực tiểu (MIN), thực hiện các công việc sau cho đến khi tất cả các con của nó đã được xét với thủ tục α – β hoặc cho đến khi α bằng hoặc lớn hơn β

Áp dụng thủ tục Alpha-Beta với giá trị α và β hiện tại cho một quân Ghi nhớ lại kết quả

So sánh giá trị ghi nhớ với giá trị β, nếu giá trị đó nhỏ hơn β thì đặt β bằng giá trị mới này Ghi nhớ lại (thu hẹp [α, β] bằng cách giảm giá trị β)

2.3.3 Hàm đánh giá thế cờ

Lấy Bot làm người chơi MAX, hàm ĐGTC sẽ đưa ra con số mô tả mức độ có lợi của trạng thái bàn cờ đối với Bot

Hàm ĐGTC được tính bằng tổng điểm sức mạng của các quân cờ bên phía Bot trừ đi tổng điểm các quân cờ bên phía người chơi

F(position) = Σ Power (PieceBot[i]) – Σ Power(PiecePlayer[i])

2.4 Điểm sức mạnh cơ bản của mỗi quân cờ

Ta có thang độ quan trọng và khả năng bao quát bàn cờ:

Hậu > Xe > Tượng > Mã > Tốt

Trang 14

Chương 2: Trò chơi cờ vua

Trao đổi một quân Mã cho 3 quân Tốt là một ý tưởng tồi, vì thế:

Hậu > Xe > Tượng > Mã > 3 * Tốt

Trao đổi một quân xe lấy 6 quân Tốt làm bàn cờ có lợi thế cho mình nên:

Hậu > 6 * Tốt > Xe > Tượng > Mã > 3 * Tốt

Việc đổi 1 Xe lấy 1 Tượng và 1 Mã là có lợi nên:

Tượng + Mã > Xe

Dù cho có mất thêm 1 quân Tốt thì vẫn có lợi thế cho mình nên:

Tượng + Mã > Xe + Tốt

Tuy nhiên, nếu phải đổi 2 quân Tốt và một quân Xe trong một lần trao đổi thì khả năng phòng thủ sẽ giảm nhiều nên:

2 * Tốt + Xe > Tượng + Mã > Xe + Tốt

Từ đó, giả sử rằng:

Tượng + Mã = Xe + 1.5 * Tốt

Đổi 1 Xe và 1 Tượng lấy 1 Hậu sẽ có lợi nên:

Hậu > Xe + Tượng

2 * Hậu > 2 * Xe + 2 * Tượng > 2 * Xe + Tượng + Mã > 2 * Xe + Xe + 1.5 * Tốt

2 * Hậu + 4 * Tốt > 3 * Xe + 5.5 * Tốt = 4 * Xe

Hậu + 2 * Tốt > 2 * Xe

Mặt khác, 2 quân Xe luôn có lợi hơn 1 quân Hậu nên:

Hậu + 2 * Tốt > 2 * Xe > Hậu

Vậy:

Trang 15

Chương 2: Trò chơi cờ vua

Hậu + Tốt = 2 * Xe

Ta có hệ phương trình:

{Hậu>6∗Tốt > Xe >Tượng > Mã >3∗Tố

Tượng Mã Xe + = +1.5∗Tốt Hậu Tốt + =2∗Xe

Xét Tốt = 100

Ta có bộ giá trị thỏa mãn:

{Mã =320

Tượng=330 Xe=500 Hậu=900

2.5 Điểm số sức mạnh được cộng

Thế cờ là một tập hợp các quân cờ với vị trí xác định trên bàn cờ

Khi các quân cờ ở đúng vị trí thích hợp sẽ tạo nên những thế cờ có lợi cho người chơi Mỗi quân cờ có cách di chuyển và khả năng bao quát bàn cờ khác nhau, vì thế có điểm số sức mạnh được cộng thêm tương ứng với mỗi ô khác nhau

Điểm số cộng thêm có thể âm khi vị trí của quân cờ làm che mắt quân cờ khác hoặc làm cho khả năng di chuyển của quân cờ bị hạn chế

2.5.1 Quân Mã

Mã di chuyển theo đường chéo hình chữ nhật (2x3) khi không bị cản

Mã càng mạnh khi càng ở gần trung tâm bàn cờ

Bảng điểm cộng của quân Mã giữa Player và Bot là 2 bảng ngược nhau

Trang 16

Chương 2: Trò chơi cờ vua

Ta có bảng sau:

Hình 2.4: Ma trận điểm cộng quân Mã

2.5.2 Quân Tượng

Tượng di chuyển theo đường chéo bàn cờ, bị cản nếu có quân nào đó đứng trên đường

di chuyển

Tượng càng mạnh khi càng ở trung tâm bàn cờ

Bảng điểm cộng của quân Tượng giữa Player và Bot là 2 bảng ngược nhau

Ta có bảng sau:

Hình 2.5: Ma trận điểm cộng quân Tượng

2.5.3 Quân Xe

Xe di chuyển theo đường ngang và dọc bàn cờ, bị cản nếu có quân nào đó đứng trên đường di chuyển

Xe càng mạnh khi ở vị trí có thể tấn công Tướng đối phương

Bảng điểm cộng của quân Xe giữa Player và Bot là 2 bảng ngược nhau

Trang 17

Chương 2: Trò chơi cờ vua

Ta có bảng sau:

Hình 2.6: Ma trận điểm cộng quân Xe

2.5.4 Quân Hậu

Di chuyển của Hậu bằng di chuyển của Xe và Tượng cộng lại

Hậu càng mạnh khi ở trung tâm bàn cờ

Bảng điểm cộng của quân Hậu giữa Player và Bot là 2 bảng ngược nhau

Ta có bảng sau:

Hình 2.7: Ma trận điểm cộng của quân Hậu

2.5.5 Quân Vua

Di chuyển của Vua giống di chuyển của Hậu nhưng chỉ có thể đi 1 ô trong một nước di

Vua cần ở những nơi khó có thể tấn công và tránh những vị trí dễ tấn công, nhất là phía sân của địch

Bảng điểm cộng của quân Vua giữa Player và Bot là 2 bảng ngược nhau

Trang 18

Chương 2: Trò chơi cờ vua

Ta có bảng sau:

Hình 2.8: Ma trận điểm cộng của quân Vua

2.5.6 Quân Tốt

Tốt đi thẳng, ăn chéo và càng mạnh khi càng tiến sâu sang phần sân đối phương Tốt là quân cờ có di chuyển chậm, đơn giản nhưng cách bố trí 8 quân Tốt trên bàn cờ thích hợp luôn làm nên cục diện thế cờ

Được phép phong Tốt khi Tốt đi đến hàng cuối cùng của phần sân đối phương

Ta có bảng sau:

Hình 2.9: Ma trận điểm cộng của quân Tốt

2.6 Nhận định chung về Bot

Ta có bảng nhận định về Bot trong game cờ vua sau:

LV1 Bot chơi theo cơ chế phản xạ, có thể tìm

quân cờ có lợi thế nhất để ăn

Trang 19

Chương 2: Trò chơi cờ vua

Lv3 Bot có những suy tính sâu như nước:

Dùng Mã chiếu Tướng bắt Hậu LV4 Bot chơi hay biết dự đoán nhiều nước

tính của người chơi

LV5 trở lên Bot thông minh hơn nhưng tốc độ khá

chậm

Bảng 2.1: Bảng khả năng của Bot cờ vua

2.7 Giao diện của Bot

Bot có thể có giao tiếp cơ bản như:

Tuyên bố kết thúc lượt

Khiêu khích người chơi khi thoát trận giữa chừng

Lời khen khi kết thúc game

2.8 Các chức năng của game cờ vua

Khởi tạo game mới

Chức năng quay lại nước đi trước đó

Cho phép chọn độ khó của game (chọn chiều sâu)

Ngày đăng: 12/02/2025, 16:39

HÌNH ẢNH LIÊN QUAN

Hình vuông 8x8, 2 màu đan xen. - Học  cấu trúc dữ liệu & thuật toán báo cáo  trò chơi cờ vua người Đánh vớ
Hình vu ông 8x8, 2 màu đan xen (Trang 9)
Hình ảnh giao diện game cờ vua: - Học  cấu trúc dữ liệu & thuật toán báo cáo  trò chơi cờ vua người Đánh vớ
nh ảnh giao diện game cờ vua: (Trang 10)
Hình 2.3: Thuật toán sử dụng cho Bot 2.3.1 Thuật toán tìm kiếm Minimax - Học  cấu trúc dữ liệu & thuật toán báo cáo  trò chơi cờ vua người Đánh vớ
Hình 2.3 Thuật toán sử dụng cho Bot 2.3.1 Thuật toán tìm kiếm Minimax (Trang 11)
Bảng điểm cộng của quân Mã giữa Player và Bot là 2 bảng ngược nhau. - Học  cấu trúc dữ liệu & thuật toán báo cáo  trò chơi cờ vua người Đánh vớ
ng điểm cộng của quân Mã giữa Player và Bot là 2 bảng ngược nhau (Trang 15)
Hình 2.4: Ma trận điểm cộng quân Mã - Học  cấu trúc dữ liệu & thuật toán báo cáo  trò chơi cờ vua người Đánh vớ
Hình 2.4 Ma trận điểm cộng quân Mã (Trang 16)
Bảng điểm cộng của quân Tượng giữa Player và Bot là 2 bảng ngược nhau. - Học  cấu trúc dữ liệu & thuật toán báo cáo  trò chơi cờ vua người Đánh vớ
ng điểm cộng của quân Tượng giữa Player và Bot là 2 bảng ngược nhau (Trang 16)
Bảng điểm cộng của quân Hậu giữa Player và Bot là 2 bảng ngược nhau. - Học  cấu trúc dữ liệu & thuật toán báo cáo  trò chơi cờ vua người Đánh vớ
ng điểm cộng của quân Hậu giữa Player và Bot là 2 bảng ngược nhau (Trang 17)
Hình 2.6: Ma trận điểm cộng quân Xe - Học  cấu trúc dữ liệu & thuật toán báo cáo  trò chơi cờ vua người Đánh vớ
Hình 2.6 Ma trận điểm cộng quân Xe (Trang 17)
Hình 2.8: Ma trận điểm cộng của quân Vua - Học  cấu trúc dữ liệu & thuật toán báo cáo  trò chơi cờ vua người Đánh vớ
Hình 2.8 Ma trận điểm cộng của quân Vua (Trang 18)
Hình 2.9: Ma trận điểm cộng của quân Tốt - Học  cấu trúc dữ liệu & thuật toán báo cáo  trò chơi cờ vua người Đánh vớ
Hình 2.9 Ma trận điểm cộng của quân Tốt (Trang 18)
Bảng 2.1: Bảng khả năng của Bot cờ vua 2.7 Giao diện của Bot - Học  cấu trúc dữ liệu & thuật toán báo cáo  trò chơi cờ vua người Đánh vớ
Bảng 2.1 Bảng khả năng của Bot cờ vua 2.7 Giao diện của Bot (Trang 19)

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm