Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 24 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
24
Dung lượng
0,92 MB
Nội dung
ĐẠI HỌC ĐÀ NẴNG KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG - - ĐỒ ÁN CƠ SỞ ĐỀ TÀI XÂY DỰNG CHƯƠNG TRÌNH CỜ CARO CHO PHÉP NGƯỜI CHƠI VỚI MÁY Giảng Viên Hướng Dẫn: Ths Nguyễn Đỗ Công Pháp Sinh Viên Thực Hiện : Phan Thanh Tùng 18IT2 Đà Nẵng, tháng năm 2021 i LỜI MỞ ĐẦU Hiện việc ứng dụng Trí tuệ nhân tạo (AI) vào việc phát triển game trở nên phổ biến, đặc biệt game mang tính trí ṭ cao Điển hình game Caro trò chơi quen thuộc đối với nhiều đối tượng, dễ chơi, giảm căng thẳng,… Cờ Caro số trò chơi phổ biến, đặc biệt giới học sinh, sinh viên Đây trị chơi mà em thích, em chọn đề tài làm game Caro cho môn Trí ṭ nhân tạo Trong q trình hồn thành đề tài này, em tìm hiểu thuật tốn học mơn Trí ṭ nhân tạo thuật tốn tìm kiếm nước MiniMax, giải thuật Alpha-Beta cắt tỉa kỹ lập trình ngơn ngữ Java Với sự hướng dẫn tận tình thầy Nguyễn Đỗ Cơng Pháp, người có đóng góp ý kiến để em hồn thành đồ án Mặc dù tìm hiểu kĩ phân tích thiết kế khó tránh khỏi thiếu sót khơng mong muốn Em xin kính mong nhận sự thơng cảm góp ý q thầy Em xin kính chúc q thầy dồi sức khỏe, tiếp tục đào tạo hệ trẻ, nguồn nhân lực chất lượng tốt cho đất nước Em xin chân thành cảm ơn! I NHẬN XÉT CỦA GVHD ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… Đà Nẵng, tháng , năm 2021 CHỮ KÍ GVHD THS NGUYỄN ĐỖ CƠNG PHÁP II MỤC LỤC Trang Chương TỔNG QUAN 1.1 Mục tiêu 1.2 Phạm vi nghiên cứu 1.3 Ngơn ngữ cơng cụ lập trình sử dụng: 1.3.1 Ngôn ngữ Java 1.3.2 Cơng cụ lập trình Eclipse IDE 1.4 Tổng quan Trí tuệ nhân tạo (AI) .2 1.4.1 AI gì? 1.4.2 Mục đích AI 1.5 Giới thiệu Cờ Caro Chương PHÂN TÍCH BÀI TOÁN .4 2.1 Phân tích yêu cầu 2.2 Phương pháp giải 2.2.1 Giới thiệu khơng gian tìm kiếm 2.2.2 Thuật toán Minimax 2.2.3 Thuật toán Minimax với độ sâu hạn chế 2.2.4 Giải thuật cắt tỉa Alpha-Beta Chương XÂY DỰNG CHƯƠNG TRÌNH 12 3.1 Cài đặt chương trình 12 3.2 Demo chương trình .15 3.2.1 Giao diện chương trình 15 3.2.2 Cửa sổ Console 15 3.2.3 Giao diện chiến thắng 16 Chương KẾT LUẬN 18 4.1 Kết đạt 18 4.2 Hướng phát triển 18 TÀI LIỆU THAM KHẢO 19 III DANH MỤC HÌNH ẢNH Trang Hình 2-1 Giới thiệu Cờ Caro Hình 3-1 Ví dụ trị chơi Caro 3x3 Hình 4-1 Giao diện chương trình 15 Hình 4-2 Console bàn cờ 16 Hình 4-3 Người chiến thắng .16 Hình 4-4 Máy chiến thắng 17 IV Chương TỔNG QUAN 1.1 Mục tiêu Trong đề tài này, em ứng dụng trí tuệ nhân tạo vào game Cờ Caro nhằm tạo đối thủ máy tự động, giúp người chơi tự rèn luyện khả chơi Game áp dụng thuật tốn Minimax nhằm lựa chọn bước trò chơi cách định giá trị cho Node trò chơi sau tìm Node có giá trị phù hợp để bước đồng thời áp dụng giải thuật cắt tỉa Alpha-Beta nhằm hỗ trợ giảm bớt khơng gian trạng thái trị chơi, giúp thuật tốn Minimax tìm kiếm sâu nhanh với nguyên tắc đơn giản: "Nếu biết trường hợp xấu khơng cần phải xét thêm" 1.2 Phạm vi nghiên cứu Ứng dụng thuật toán Minimax cắt tỉa Alpha chương trình game Cờ Caro cho phép người chơi với máy Với phạm vi luật chơi người trước có nước liên hàng ngang, dọc chéo chiến thắng kể cả chặn đầu 1.3 Ngôn ngữ công cụ lập trình sử dụng: 1.3.1 Ngơn ngữ Java Java ngơn ngữ lập trình hướng đối tượng Nó sử dụng phát triển phần mềm, trang web, game hay ứng dụng thiết bị di động Java khởi đầu James Gosling bạn đồng nghiệp Sun MicroSystem năm 1991 Ban đầu Java tạo nhằm mục đích viết phần mềm cho sản phẩm gia dụng, có tên Oak Java phát hành năm 1994, đến năm 2010 Oracle mua lại từ Sun MicroSystem Java tạo với tiêu chí “Viết (code) lần, thực thi khắp nơi” (Write Once, Run Anywhere – WORA) Chương trình phần mềm viết Java chạy tảng (platform) khác thông qua môi trường thực thi với điều kiện có mơi trường thực thi thích hợp hỗ trợ tảng Đồ án sở Trang 1.3.2 Cơng cụ lập trình Eclipse IDE Eclipse mơi trường phát triển tích hợp cho Java, phát triển ban đầu IBM, hiện tổ chức Eclipse NgồiJava, Eclipse cịn hỗ trợ nhiều ngơn ngữ lập trình khác PHP, C, C++, C#, Python, HTML, XML, JavaScript dùng thêm trình bổ sung (plug-in) 1.4 Tổng quan Trí tuệ nhân tạo (AI) 1.4.1 AI gì? AI - Artificial Intelligence hay cịn gọi Trí ṭ nhân tạo ngành khoa học, kỹ thuật chế tạo máy móc thơng minh, đặc biệt chương trình máy tính thông minh AI thực hiện cách nghiên cứu cách suy nghĩ người, cách người học hỏi, định làm việc giải vấn đề đó, sử dụng kết quả nghiên cứu tảng để phát triển phần mềm hệ thống thông minh, từ áp dụng vào mục đích khác sống Nói cách dễ hiểu AI việc sử dụng, phân tích liệu đầu vào nhằm đưa sự dự đoán đến định cuối 1.4.2 Mục đích AI Tạo hệ thống chuyên gia - ứng dụng máy tính phát triển để giải vấn đề phức tạp lĩnh vực cụ thể, mức độ thông minh chuyên môn người Thực hiện trí thơng minh người máy móc - Tạo hệ thống hiểu, suy nghĩ, học hỏi hành xử người 1.5 Giới thiệu Cờ Caro Cờ caro loại cờ cổ xưa người Trung Quốc, trò chơi logic lâu đời biết đến giới Cờ caro chơi tồn giới, nơi lại có tên gọi khác nhau: Nhật Gomoku, Nga nước Đông Âu gọi Five in a row, Hàn Quốc Omok, Trung Quốc Wuziqi, Anh Connect5… dĩ nhiên Việt Nam Caro Đồ án sở Trang Game gồm có người chơi, người cầm quân X, người cầm quân O Hai người chơi đánh quân tương ứng mặt bàn cờ MxN (thường M = N) Luật chơi: Quân X quân đánh trước Hai người chơi đánh vào ô bàn cờ, miễn chưa đánh Trị chời kết thúc người chơi có quân thẳng hàng liên tiếp (ngang, dọc chéo) Hình TỔNG QUAN-1 Giới thiệu Cờ Caro Đồ án sở Trang Chương PHÂN TÍCH BÀI TOÁN 2.1 Phân tích u cầu Mô bàn cờ Bàn cờ bao gồm ô cờ đặt mảng hai chiều (kích thước 20x20) Trong cờ xác định được: - Vị trí cờ theo hàng, theo cột - Trạng thái ô cờ: Đang trống (0), nước người chơi (1), nước máy (2) - Độ nguy hiểm ô cờ tùy theo trạng thái cờ thay đổi Đánh giá giá trị ô cờ Giống thực tế người chơi thường đánh giá số nước cờ nguy hiểm, bình thường nguy hiểm, máy tính đánh cụ thể số 2.2 Phương pháp giải 2.2.1 Giới thiệu khơng gian tìm kiếm Trong trị chơi Caro, sau nước cờ, đối thủ chọn từ ô trống để đi, đó, sau nước số trống cịn lại giảm Như vậy, việc tìm nước cho trạng thái có sẵn việc tìm kiếm trống cịn lại, đồng thời, khơng gian tìm kiếm thu hẹp theo số nước tạo Không gian chọn nước từ trạng thái ban đầu hữu hạn, khơng gian tìm kiếm nước dẫn đến chiến thắng lớn Do ta khơng thể vét khơng gian tìm kiếm nước mà ta phải giới hạn khơng gian tìm kiếm Một khơng gian tìm kiếm hiện theo đa phân đuợc gọi tìm kiếm hay trị chơi Ví dụ: Đồ án sở Trang Hình PHÂN TÍCH BÀI TOÁN-2 Ví dụ trị chơi Caro 3x3 Dựa vào trò chơi định nghĩa trên, việc tìm kiếm nước chọn nút ( mức 1) cho nước tốt Theo thông thường chơi, nước tốt hay không phụ thuộc vào khả dành chiến thắng cao hay thấp sau nước đuợc Do đó, muốn chọn nước tốt dựa vào cờ hiện chưa đủ, mà phải biết thông tin cờ sau chọn nước để 2.2.2 Thuật tốn Minimax Q trình chơi cờ q trình mà Trắng Đen thay phiên đưa nước hợp lệ dẫn đến trạng thái kết thúc chơi Quá trình biểu diễn đường từ nút gốc tới nút trị chơi Giả sử đỉnh u đường đi, u đỉnh Trắng (Đen) cần chọn nước đến đỉnh Đen (Trắng) v u Tại đỉnh Đen (Trắng) v chọn tiếp đến đỉnh Trắng (Đen) w v Quá trình tiếp tục đạt đến đỉnh Chiến lược tìm nước Trắng hay Đen ln tìm nước dẫn tới trạng thái tốt cho tồi cho đối thủ Giả sử Trắng cần tìm nước đỉnh u, nước tối ưu cho Trắng nước dẫn tới đỉnh v cho v tốt số đỉnh u Đến lượt Đen chọn nước từ v, Đen chọn nước tốt cho Để chọn nước tối ưu cho Trắng đỉnh u, cần xác định giá trị đỉnh trò chơi gốc u Giá trị đỉnh ứng với giá trị hàm kết Đỉnh có giá trị Đồ án sở Trang lớn tốt cho Trắng, đỉnh có giá trị nhỏ tốt cho Đen Để xác định giá trị đỉnh trò chơi gốc u, ta từ mức thấp (các đỉnh lá) lên gốc u Giả sử cần xác định giá trị đỉnh v mà đỉnh xác định Khi đó, v đỉnh Trắng giá trị giá trị lớn đỉnh con, v đỉnh Đen giá trị giá trị nhỏ đỉnh Sau thủ tục chọn nước cho Trắng đỉnh u Minimax(u, v), v đỉnh chọn u: Procedure Minimax(u, v); begin val -; for w đỉnh u if val(u) eval(v) Khi ta có giá trị đỉnh Trắng c giá trị u, giá trị đỉnh Đen b nhiều giá trị v Do đó, eval(u) > eval(v) ta không cần xuống để đánh giá đỉnh a mà vẫn không ảnh hưởng đến đánh giá đỉnh c Hay nói cách khác, ta cắt bỏ gốc a Lập luận tương tự cho trường hợp a đỉnh Đen, trường hợp eval(u)= then exit}; /*cắt bỏ từ đỉnh v lại */ MaxVal(u, , ) end; Đồ án sở Trang 11 Chương XÂY DỰNG CHƯƠNG TRÌNH 3.1 Cài đặt chương trình Hàm lấy ma trận từ UI Hàm chơi giả lập với Move truyền vào Lấy tất Move chơi Đồ án sở Trang 12 Hàm đánh giá Định nghĩa hàm Nút Nút Duyệt không gian trạng thái Đồ án sở Trang 13 Xử lý Max Xử lí Min Đồ án sở Trang 14 3.2 Demo chương trình 3.2.1 Giao diện chương trình Mơ tả: - Bàn cờ với kích thước 20x20 - Quân trắng đại diện cho máy - Quân đen đại diện cho người chơi Hình XÂY DỰNG CHƯƠNG TRÌNH-3 Giao diện chương trình 3.2.2 Cửa sổ Console Mô tả: - x, y đại diện cho tọa độ nước vừa người chơi - (0) đại diện cho ô trống, (1) đại diện cho nước đánh máy (2) đại diện cho nước đánh người ← Đồ án sở Trang 15 ← Hình XÂY DỰNG CHƯƠNG TRÌNH-4 Console bàn cờ 3.2.3 Giao diện chiến thắng Người chiến thắng Hình XÂY DỰNG CHƯƠNG TRÌNH-5 Người chiến thắng Đồ án sở Trang 16 Máy chiến thắng Hình XÂY DỰNG CHƯƠNG TRÌNH-6 Máy chiến thắng Đồ án sở Trang 17 Chương KẾT LUẬN 4.1 Kết đạt Sau thời gian tìm hiểu triển khai đề tài, đến thời điểm hiện em hoàn thành chương trình với mục tiêu đặt ban đầu xây dựng chương trình Cờ Caro cho phép người chơi với máy dựa thuật toán Minimax giải thuật cắt tỉa Alpha-Beta Chương trình game Cờ Caro nhằm giúp người chơi tự rèn luyện khả chơi cách thi đấu đối kháng với máy mà khơng cần phải tìm kiếm đối thủ ngồi thực tế 4.2 Hướng phát triển Vì thời gian tìm hiểu xây dựng đề tài có hạn nên giao diện chương trình cịn đơn sơ, chức cịn nên thời gian tới em tiếp tục hoàn thiện phát triển chức sau: Xây dựng thêm luật chặn đầu Xây dựng thêm chức Phát triển giao diện Tìm hiểu thêm thuật tốn để tối ưu hóa nước máy Đồ án sở Trang 18 TÀI LIỆU THAM KHẢO https://en.wikipedia.org/wiki/Alpha%E2%80%93beta_pruning https://en.wikipedia.org/wiki/Minimax https://github.com/canberkakcali/gomoku-ai-minimax Đồ án sở Trang 19