Chương trình chơi cờ tướng AlphaBeta pruning... Sinh viên thực hiện... Khảo sát và đặc tả yêu cầu bài toánngười chơi thao tác chơi thông qua sự kiện click chuột cập nhật thông tin và tha
Trang 1Chương trình chơi cờ tướng
(AlphaBeta pruning)
Trang 2Sinh viên thực hiện
Trang 3Nội dung trình bày
Khảo sát và đặc tả yêu cầu bài toán Phân tích và thiết kế bài toán
Công nghệ và thuật toán sử dụng Xây dựng chương trình minh họa Kết luận và hướng phát triển
Trang 4Khảo sát và đặc tả yêu cầu bài toán
người chơi
thao tác chơi thông qua sự kiện click chuột
cập nhật thông tin và thay đổi tham số biến
người chơi
máy tính
thực hiện tính toán và chọn ra nước chơi hợp
lý nhất với độ sâu cho trước (sử dụng thuật toán AlphaBeta)
cập nhật thông tin và thay đổi tham số biến
người chơi
Trang 6trong quá trình chơi cờ,
người và máy tính sẽ lần lượt chơi khi tới lượt mình , sau mỗi lượt chơi, những gì thay đổi sẽ được cập nhật vào các tham số chung và đến lượt người kia chơi
Trang 7Biểu đồ tuần tự
Vẽ Bàn Cờ Thực hiện nước đi
gửi thông tin thực hiện (thay đổi biến người chơi và thông tin toàn cục bàn cờ )
hiển thị thông tin tương ứng
sinh mọi nước đi từ thế cờ hiện tại
đi thử mọi nước đi này( thay đổi biến người chơi và thông tin toàn cục bàn cờ ) lặp lại quá trình này với độ sâu nhất định
khi độ sâu bằng không(kết thúc một nhánh của bàn cờ) tính điểm nhánh đó trả lại giá trị hàm Eval()
hàm Eval() chỉ đơn giản là tính giá trị điểm của toàn bộ quân bên mình trừ đi toàn bộ giá trị điểm của quân bên đối phương
so sánh từng giá trị trả về của các nhánh, lấy giá trị nhánh có điểm cao nhất
và nhận được nước đi tương ứng của nhánh này (lưu vào biến nước đi toàn cục)
Thực hiện nước đi tại nhánh mà có điểm cao nhất (được lưu trong biến toàn cục) gửi thông tin thực hiện , thay đổi biến người chơi và cập nhật thông tin bàn cờ
hiển thị thông tin tương ứng
cứ thế thực hiện lặp đi lặp lại, cho đến khi một bên tham gia chơi là thắng cuộc, khi đó thông báo cho bên kia biết, thiết lập tỉ số và một số thông số khác
sau đó khởi tạo lại các thông tin chung của bàn cờ và vẽ lại bàn cờ ở trạng thái ban đầu
Trang 8Capture Move Human
+Move Human()+insert()
+getCurrent() : int+getIndex() : int
+Clicked : object(idl)+Nitem : int
Move Human +DrawCell(int i)()+DrawTable()()
+Generation ()+MakeMove(SaveMove m)()+AlphaBeta(int alpha, int beta, int depth)()+UnMakeMove()()
+ComputerThink()()+MakeNewMove()()+Eval()()
+Main_Class()
+chess_pieces : object(idl)+color_pieces : object(idl)+side : int
+xside : int+offsets : object(idl)+knightcheck : object(idl)+elephantcheck : object(idl)-Save_Move : object(idl)-Human_Move : object(idl)-Human_Clicked_Move : object(idl)-Capture_Save_Move : object(idl)-gen_end : object
-gen_begin : object-ply : int
-depth : int-Offical _Move : object
Main_Class
11
Trang 10DrawLine() trong lớp Graphics Java
Các đường thẳng được dựng bởi hàm
DrawLine() trong lớp Graphics Java
Trang 11Xây dựng tập nước đi hợp lệ cho các quân cờ
Loại quân cờ Số hướng tối đa Số nước tối đa trong một hướng
Trang 12Xây dựng tập nước đi hợp lệ cho các
quân cờ
• Kiểm tra giới hạn bàn cờ
Trang 13Xây dựng tập nước đi hợp lệ cho các quân cờ
Trang 14Vị Trí Hợp Lệ
Tập
Vị Trí Hợp Lệ
Trang 15Thuật toán Minimax
Tập nước
đi tại
độ sâu ta thiết lập
Trang 16Thuật toán Minimax
Cắt bỏ miền tồi tệ khi giá trị lượng giá <
alpha
Cắt bỏ miền tồi
tệ khi giá trị lượng giá > beta
Trang 17Hàm lượng giá (thế cờ hiện tại)
Trang 18Xây dựng chương trình
Trang 19Kết quả đạt được
Tương đối hoàn thành đặc tả yêu cầu bài toán
Trang 20Hướng phát triển
Trang 21CẢM ƠN THẦY ĐÃ GIÚP ĐỠ CHÚNG EM HOÀN THÀNH BÀI
TẬP NÀY!
CẢM ƠN CÁC BẠN ĐÃ LẮNG
NGHE!