Mô tả bài toánGiới thiệu trò chơi cờ úp Mô tả không gian trạng thái bài toán 3... Giới thiệu trò chơi cờ úpCờ úp là một biến thể của trò chơi cờ tướng Tại thời điểm bắt đầu, các quân
Trang 1XÂY DỰNG TRÒ CHƠI CỜ
ÚP TRÊN HĐH ANDROID
Phạm Xuân Cường 20090438 Ngô Việt Linh 20091599 Đinh Minh Quốc 20092156 Trần Thanh Sơn 20092281
Lê Thanh Tùng 20093106
Lê Quốc Vinh 20093277
1
Trang 2Nội dung
Mô tả bài toán
Hướng giải quyết
Hướng phát triển
Demo chương trình
Trang 31 Mô tả bài toán
Giới thiệu trò chơi cờ úp
Mô tả không gian trạng thái bài toán
3
Trang 41.1 Giới thiệu trò chơi cờ úp
Cờ úp là một biến thể của trò chơi cờ tướng
Tại thời điểm bắt đầu, các quân (trừ quân
tướng) được úp và xếp ngẫu nhiên trên bàn
Tại nước đi đầu tiên, các quân úp đi theo luật
đi của quân tại vị trí nó đang đứng
Sau đó, các quân cờ được lật lại và từ đó đi
theo luật cờ tướng thông thường
Trang 61.1 Giới thiệu trò chơi cờ úp
Các ngoại lệ của trò chơi cờ úp:
Quân sĩ không bị giới hạn trong cung mà có thể
đi khắp bàn cờ
Quân tượng có thể sang lãnh thổ đối phương
Quân tốt có thể xuất phát từ dưới đường biên ngang bên sân nhà, khi qua sông được đi
ngang.
Trang 71.1 Giới thiệu trò chơi cờ úp
Trận đấu kết thúc khi xảy ra:
đối phương không còn khả năng đỡ Bên chiếu tướng thắng.
không có nước hợp lệ để đi, bên đó sẽ bị thua.
nhận thua ván chơi.
đồng ý Ván chơi được xử hòa.
7
Trang 81.2 Mô tả không gian trạng thái
điểm bắt đầu cuộc chơi
quân tướng của hai bên bị ăn mất hoặc quân tướng
không còn nước đi hợp lệ Khi đó, bên còn lại là người thắng cuộc
cờ tại một thời điểm bất kỳ trong một ván đấu
(i+1) có cạnh nối với nhau nếu trạng thái mức (i+1) được sinh ra từ trạng thái mức i bằng cách di chuyển một quân cờ trên bàn theo một bước đi hợp lệ của nó
Trang 92 Thuật toán sử dụng
Thuật toán MINIMAX
Thuật toán Alpha-Beta cắt tỉa
Hàm đánh giá
9
Trang 102.1 Thuật toán MINIMAX
Đây là thuật toán thường được sử dụng trong các trò chơi đối kháng
Mỗi trạng thái của bàn cờ sẽ được gán một
Trang 112.2 Thuật toán Alpha-Beta cắt tỉa
Do MINIMAX đòi hỏi phải duyệt tất cả các
nút con
Þ Thuật toán chạy chậm, không phù hợp trong thực tế
Sử dụng Alpha-Beta cắt tỉa để loại bỏ các
nhánh không chứa kết quả
11
Trang 122.2 Thuật toán Alpha-Beta cắt tỉa
Trang 13function alphabeta(node, depth, α, β, maximizingPlayer)
if depth = 0 or node is a terminal node
return the heuristic value of node
if maximizingPlayer
for each child of node
α := max(α, alphabeta(child, depth - 1, α, β, not(maximizingPlayer)))
if β ≤ α
break (* Beta cut-off *)
return α
else
for each child of node
β := min(β, alphabeta(child, depth - 1, α, β, not(maximizingPlayer)))
if β ≤ α
break (* Alpha cut-off *)
return β
13
Trang 152.3 Hàm đánh giá
Công thức tổng quát của hàm đánh giá
Trong đó:
f(x): Điểm số của quân x trên bàn cờ
B là điểm thưởng cho một thế cờ tốt được sinh
ra trên bàn cờ
15
Trang 17Bảng cho điểm các quân cờ
Trang 18VD: Ma trận điểm vị trí của quân Xe
Trang 192.3 Hàm đánh giá
B: điểm thưởng
Dựa vào một số lợi thế từ những nước đi cụ
thể ta có thể cộng thêm điểm cho từng nước đi
Vd:
Khi bên đen bị khuyết sỹ mà bên đỏ vẫn còn 2
xe thì bên đỏ được cộng thêm điểm (Khuyết
sỹ kị song xe)
Khi quân tốt sang sông thì được cộng điểm
(do có thể đi ngang)
Trang 203 Hướng phát triển
Cải tiến hàm alpha beta
Cải tiến hàm lượng giá
Xây dựng các FEN cờ để cải thiện tốc độ tìm
ra nước đi tiếp theo cho máy
FEN là chữ viết tắt từ (Forsyth-Edwards
Notation)
Đây là qui ước mượn từ cờ Vua dùng để mô tả một thế cờ Ưu điểm của FEN là tương đối đơn giản (dễ ghi, dễ diễn giải, dễ lập trình cho máy)
và khá ngắn gọn.
Trang 219/9/r4khPH/6P2/5P3/5p3/3r5/5h3/2Cp1pp2/1RCcK3c w - - - 1
21