Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 52 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
52
Dung lượng
388,92 KB
Nội dung
ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CƠNG NGHỆ THƠNG TIN KHOA KHOA HỌC MÁY TÍNH BÁO CÁO ĐỒ ÁN MƠN TRÍ TUỆ NHÂN TẠO TRỊ CHƠI Ơ ĂN QUAN Lớp: GVLT: GVTH: Nhóm sinh viên thực hiện: TP Hồ Chí Minh, tháng 07 năm 2016 download by : skknchat@gmail.com Đồ án Trí tuệ nhân tạo Mục lục CHƯƠNG 1: GIỚI THIỆU BÀI TOÁN 1.1 Nguồn gốc trò chơi 1.2 Mơ tả trị chơi CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2.1 TÌM KIẾM CĨ ĐỐI THỦ 2.2 GIẢI THUẬT MINIMAX 2.3 GIẢI THUẬT CẮT TỈA ALPHA – BETA 2.4 Kỹ thuật lượng giá CHƯƠNG 3: PHÂN TÍCH VÀ THIẾT KẾ 3.1 Phân tích tốn 3.2 Cấu trúc liệu cách biểu diễn trạng thái 3.2.1 Mơ hình hóa toán: 3.2.2 Biểu diễn trạng thái: 3.2.2 Không gian trạng thái: 3.2.3 Cấu trúc liệu: 3.3 Các vấn đề thuật giải 3.3.1 Xây dựng hàm Minimax có cắt tỉa 3.3.2 Minimax có độ sâu cố định 3.3.3 Hàm AI theo nguyên lý tham lam 3.3.4 Các hàm xử lí game 3.4 Ví dụ minh họa thuật toán CHƯƠNG 4: ỨNG DỤNG 4.1 Giới thiệu chương trình ứng dụng 4.2 Cài đặt 4.2.1 Ngôn ngữ công cụ sử dụng 4.2.2 4.3 4.2.1 Các hàm đoạn code Kết chạy chương trình Kết thử nghiệm CHƯƠNG 5: KẾT LUẬN 5.1 Kết đạt 5.2 Hạn chế download by : skknchat@gmail.com Đồ án Trí tuệ nhân tạo 5.3 Hướng phát triển 41 TÀI LIỆU THAM KHẢO 42 Bảng phân công công việc MSSV 14520929 14521103 Thư download by : skknchat@gmail.com 14521027 Đống Trườn download by : skknchat@gmail.com Đồ án Trí tuệ nhân tạo CHƯƠNG 1: GIỚI THIỆU BÀI TỐN 1.1 NGUỒN GỐC TRỊ CHƠI Ơ ăn quan, hay cịn gọi tắt ăn quan ô quan trò chơi dân gian trẻ em Việt Nam mà chủ yếu bé gái Đây trò chơi có tính chất chiến thuật thường dành cho hai ba người chơi sử dụng vật liệu đa dạng, dễ kiếm để chuẩn bị cho trò chơi Hiện chưa rõ nguồn gốc thời điểm bắt đầu chắn Ô ăn quan có Việt Nam từ lâu đời, lấy cảm hứng từ cánh đồng lúa nước nơi Những câu truyện lưu truyền Mạc Hiển Tích (chưa rõ năm sinh, năm mất), đỗ Trạng ngun năm 1086 nói ơng có tác phẩm bàn phép tính trị chơi Ô ăn quan đề cập đến số ẩn (số âm) trống xuất chơi Ơ ăn quan phổ biến khắp ba miền Bắc, Trung, Nam Việt Nam năm gần cịn trẻ em chơi Bảo tàng Dân tộc học Việt Nam có trưng bày, giới thiệu hướng dẫn trò chơi Theo nhà nghiên cứu, ăn quan thuộc họ trị chơi mancala, tiếng Ả Rập manqala minqala (khi phát âm, trọng âm rơi vào âm tiết đầu Syria âm tiết thứ hai (Ai Cập) có nguồn gốc từ động từ naqala có nghĩa di chuyển Bàn download by : skknchat@gmail.com Đồ án Trí tuệ nhân tạo chơi mancala diện Ai Cập từ thời kỳ Đế chế (khoảng 1580 - 1150 TCN) Tuy nhiên khoảng trống lần xuất với tồn mancala Ceylon(Srilanka) năm đầu Công nguyên Ả Rập trước thời Muhammad.(2) 1.2 MƠ TẢ TRỊ CHƠI Chuẩn bị Bàn chơi: bàn chơi Ô ăn quan kẻ mặt tương đối phẳng có kích thước linh hoạt miễn chia đủ số ô cần thiết để chứa quân đồng thời không lớn để thuận tiện cho việc di chuyển qn, tạo đất, vỉa hè, miếng gỗ phẳng Bàn chơi kẻ thành hình chữ nhật chia hình chữ nhật thành mười vng, bên có năm đối xứng Ở hai cạnh ngắn hình chữ nhật, kẻ hai hình bán nguyệt hình vịng cung hướng phía ngồi Các hình vng gọi dân cịn hai hình bán nguyệt vịng cung gọi quan download by : skknchat@gmail.com Đồ án Trí tuệ nhân tạo Quân chơi: gồm hai loại quan dân, làm thu thập từ nhiều chất liệu có hình thể ổn định, kích thước vừa phải để người chơi cầm, nắm nhiều quân bàn tay chơi Quan có kích thước lớn dân đáng kể cho dễ phân biệt với Quân chơi viên sỏi, gạch, đá, hạt số loại sản xuất công nghiệp từ vật liệu cứng mà phổ biến nhựa Số lượng quan ln cịn dân có số lượng tùy theo luật chơi phổ biến 50 Bố trí quân chơi: quan đặt hai ô hình bán nguyệt cánh cung, ô qn, dân bố trí vào vng với số quân nhau, ô dân Trường hợp khơng muốn khơng thể tìm kiếm quan phù hợp thay quan cách đặt số lượng dân quy đổi vào ô quan Người chơi: thường gồm hai người chơi, người phía ngồi cạnh dài hình chữ nhật vng bên thuộc quyền kiểm soát người chơi bên Luật chơi Mục tiêu cần đạt để giành chiến thắng: người thắng trò chơi người mà chơi kết thúc có tổng số dân quy đổi nhiều Tùy theo luật chơi địa phương thỏa thuận hai người chơi phổ biến quan quy đổi 10 dân dân Di chuyển quân: người chơi đến lượt di chuyển dân theo phương án để ăn nhiều dân quan đối phương tốt Người thực lượt thường xác định cách oẳn hay thỏa thuận Khi đến lượt, người chơi dùng tất số quân ô có quân người chọn số vng thuộc quyền kiểm sốt để rải vào ô, ô quân, gần rải ngược hay xuôi chiều kim đồng hồ tùy ý Khi rải hết quân cuối cùng, tùy tình mà người chơi phải xử lý tiếp sau: download by : skknchat@gmail.com Đồ án Trí tuệ nhân tạo Nếu liền sau vng có chứa qn tiếp tục dùng tất số qn để rải chiều chọn Nếu liền sau ô trống (không phân biệt ô quan hay dân) đến có chứa qn người chơi ăn tất số quân ô Số quân bị ăn loại khỏi bàn chơi để người chơi tính điểm kết thúc Nếu liền sau có qn bị ăn lại trống đến có qn người chơi có quyền ăn tiếp qn Do chơi có phương án rải quân làm cho người chơi ăn hết toàn số quân bàn chơi lượt Một có nhiều dân thường trẻ em gọi ô nhà giàu, nhiều dân gọi giàu sụ Người chơi kinh nghiệm tính tốn phương án nhằm nuôi ô nhà giàu ăn để nhiều điểm Nếu liền sau quan có chứa qn trống trở lên sau vừa ăn người chơi bị lượt quyền tiếp thuộc đối phương Trường hợp đến lượt ô vuông thuộc quyền kiểm sốt người chơi khơng có dân người phải dùng dân ăn để đặt vào download by : skknchat@gmail.com Đồ án Trí tuệ nhân tạo Chỉnh sửa odedi cho tương ứng với vị trí mảng bàn cờ Tăng số lượng quân ô rải (ss[odedi]++) Giảm số lượng corai xuống quân Bước 4.2: Nếu corai=0 Gán contro1 = odedi +chieu; Gán contro2=contro1+chieu Chỉnh sửa contro1 contro2 tương ứng với vị trí mảng bàn cờ Bước 4.2.1: Nếu contro1=0 contro1=6 ss[contro1]=0 ss[contro2]=0 chuyển sang Bước Bước 4.2.2: Nếu ss[contro1]=0 ss[contro2]>0 diem=diem+ ss[contro2] Gán ss[contro2]=0, odedi=contro2; contro1=odedi+chieu Chỉnh sửa contro1 tương ứng với vị trí mảng bàn cờ Nếu ss[contro1]>0 gán cịn lượt = false chuyển tới bước Bước 4.3 Nếu ss[contro1] >0 corai=ss[contro1]; Ss[contro1]=0; odedi=contro1; Bước 5: Nếu diem !=0; Bước 5.1: Nếu lượt người = true diemnguoi=diemnguoi+diem Bước 5.2: Ngược lại diemmay=diemmay+diem; Bước 6: Kết thúc Hàm kiểm tra kết thúc: Input: Trạng thái bàn cờ ss[], vị trí ô rải odedi chiều chieu Output: Trạng thái bàn cờ Bước 1: Nếu thuộc điều kiện trạng thái kết thúc + Khi quan đồng thời bị ăn hết khơng cịn dân quan + Khi ô thuộc bên nắm giữ hết sỏi mà kho khơng đủ sỏi để rải cho Thì trạng thái kết thúc trò chơi endgame=true; luotnguoi=false Tăng điểm người chơi tương ứng với sô quân bàn máy tương bàn Bước 1.1 diemmay>diemnguoi thơng báo máy thắng Bước 1.2 diemmay=diemnguoi thơng báo hịa Bước 1.3 Ngược lại thơng báo bạn thắng Bước 2: Kết thúc 28 download by : skknchat@gmail.com Đồ án Trí tuệ nhân tạo 3.4 VÍ DỤ MINH HỌA THUẬT TỐN 3.4.1 MinimaxSearch() Ví dụ đánh giá hàm MinimaxSearch() bước (độ sâu = 2): Giả sử Node (máy chọn): s={ 1, 0, 0, 11, 1, 0, 4, 9, 0, 0, 0, 0} d( điểm người = 0, điểm máy = 0) Từ node ta tính nước là: - Node 1: s = { 0, 0, 0, 1, 1, 1, 2, 1, 1, 12, 2, 0) d(0, 5) - Node 2: s = { 5, 0, 0, 0, 1, 1, 2, 1, 1, 12, 2, 1} d( 0, 0) Từ node ta lại tính nước Node 1.1 : s = { 2, 1, 1, 12, 0, 1, 1, 0, 0, 1, 1, 1} , d( 0, 5), Hết độ sâu, đánh giá f = - = Node 1.2 : s = { 3, 0, 2, 13, 0, 0, 0, 0, 1, 0, 2, 0} , d( 0, 5) Hết độ sâu, đánh giá f = - = Node 1.3 : s = { 4, 0, 3, 2, 0, 0, 2, 2, 0, 3, 0, 3} , d( 2, 5) 29 download by : skknchat@gmail.com Đồ án Trí tuệ nhân tạo Hết độ sâu, đánh giá f = - = Node 1.4 : s = { 4, 3, 0, 1, 3, 1, 1, 2, 0, 3, 3, 0} , d( 0, 5) Hết độ sâu, đánh giá f = - = Node 1.5 : s = { 2, 1, 0, 13, 0, 1, 1, 0, 0, 1, 1, 1} , d( 0, 5) Hết độ sâu, đánh giá f = - = Node 1.6 : s = { 2, 2, 0, 12, 2, 0, 0, 0, 0, 1, 1, 1} , d( 0, 5) Hết độ sâu, đánh giá f = - = Node 1.7 : s = { 4, 0, 4, 0, 1, 0, 3, 3, 0, 0, 0, 0} , d( 6, 5) Hết độ sâu, đánh giá f = - = -1 Node 1.8 : s = { 3, 0, 1, 12, 2, 0, 0, 0, 1, 0, 2, 0} , d( 0, 5) Hết độ sâu, đánh giá f = - = Từ node ta lại tính 10 nước đi: Node 2.1= { 2, 1, 1, 12, 2, 0, 6, 0, 0, 0, 1, 1} , d( 0, 0) Hết độ sâu, đánh giá f = - = -0 Node 2.2 : s = { 4, 3, 0, 1, 4, 1, 6, 2, 0, 2, 3, 0} , d( 0, 0) 30 download by : skknchat@gmail.com Đồ án Trí tuệ nhân tạo Hết độ sâu, đánh giá f = - = Node 2.3 : s = { 2, 1, 1, 12, 0, 2, 6, 0, 0, 0, 1, 1} , d( 0, 0) Hết độ sâu, đánh giá f = - = Node 2.4 : s = { 3, 0, 2, 13, 0, 1, 5, 0, 0, 0, 2, 0} , d( 0, 0) Hết độ sâu, đánh giá f = - = Node 2.5 : s = { 4, 0, 3, 2, 0, 0, 7, 2, 0, 2, 0, 3} , d( 3, 0) Hết độ sâu, đánh giá f = – = -3 Node 2.6 : s = { 4, 3, 0, 1, 3, 2, 6, 2, 0, 2, 3, 0} , d( 0, 0) Hết độ sâu, đánh giá f = - = -5 Node 2.7 : s = { 2, 1, 0, 13, 0, 2, 6, 0, 0, 0, 1, 1} , d( 0, 0) Hết độ sâu, đánh giá f = - = -5 Node 2.8 : s = { 2, 2, 0, 12, 2, 1, 5, 0, 0, 0, 1, 1} , d( 0, 0) Hết độ sâu, đánh giá f = - = -5 Node 2.9 : s = { 4, 0, 4, 0, 1, 0, 8, 3, 1, 0, 1, 4} , d( 0, 0) 31 download by : skknchat@gmail.com Đồ án Trí tuệ nhân tạo Hết độ sâu, đánh giá f = - = -5 Node 2.10 : s = { 3, 0, 1, 12, 2, 1, 5, 0, 0, 0, 2, 0} , d( 0, 0) Hết độ sâu, đánh giá f = - = Cây Minimax: max -1 -1 -3 max Ý tưởng thuật giải chọn node 2, đánh giá node có trường hợp tệ cho máy, sau chọn trường hợp lớn trường hợp tệ Ví dụ node tệ máy người điểm, node tệ máy người Vậy ta chọn node để tệ máy bị người điểm 32 download by : skknchat@gmail.com Đồ án Trí tuệ nhân tạo CHƯƠNG 4: ỨNG DỤNG 4.1 GIỚI THIỆU CHƯƠNG TRÌNH ỨNG DỤNG Trị chơi Ơ ăn quan 4.1.1 Hệ thống Menu game Hiệu ứng âm Menu Nhạc Chơi Âm Chơi lại Menu chứa đối tượng lựa chọn: Chơi mới: Chọn để bắt đầu chơi game Sau chọn lên cửa sổ để chơi game Thông tin: Sẽ lên thông tin người viết game Tùy chọn: Hiện lên cấp độ chơi Hiệu ứng âm thanh: Âm di chuyển ăn quân Nhạc nền: Bật tắt nhạc Hướng dẫn: Xem hướng dẫn để chơi 4.1.2 Giao diện game Menu: 33 download by : skknchat@gmail.com Đồ án Trí tuệ nhân tạo Play game: 4.1.3 Các nút chức game :Chức Undo - Redo: người chơi thu hồi nước cờ cách click chuột vào biểu tượng tới nước sau (nếu có) cách click chuột vào Trở Menu 34 download by : skknchat@gmail.com Đồ án Trí tuệ nhân tạo Chơi lại Chọn chiều di chuyển qua phải Chọn chiều di chuyển qua trái Bật tắt âm Lựa chọn cấp chơi Chức hiển thị lượt chơi: tới lượt chơi quân hình lên lượt đánh quân 4.2 CÀI ĐẶT 4.2.1 Ngôn ngữ công cụ sử dụng Để xây dựng game Ơ ăn quan , nhóm sử dụng: - Ngơn ngữ lập trình: C# ngơn ngữ mạnh mẽ Tuy nhiên đề tài này, nhóm lựa chọn ngơn ngữ C# dễ thao tác phù hợp với cơng cụ lập trình - Cơng cụ: Visual Studio, Photoshop để thiết kế giao diện 4.2.2 Các hàm đoạn code Vì trọng tâm đề tài trí tuệ nhân tạo cho game, nên nhóm trình bày đoạn code - Hàm Minimax public int[] MinimaxSearch(Node hientai, int d) { 35 download by : skknchat@gmail.com Đồ án Trí tuệ nhân tạo //Lượng giá node hientai int f = DeQuy(hientai, d, -500, 500); if (DANHSACHDI.Count == 0) { } int vitri = 0; int chieu = 1; if (!hientai.luotnguoi) { for (int i = 1; i 0) { vitri = i; break; } } else { for (int i = 7; i 0) { vitri = i; break; } return new int[] { vitri, chieu }; } Hàm Đệ quy: dùng để cắt tỉa public int DeQuy(Node node, int depth, int alpha, int beta) { //Khi gặp node kết thúc game độ sâu = trả độ tốt node qua //hàm DanhGia() if ((node.s[0] == && node.s[6] == 0) || depth = && s[7] == && s[8] == && s[9] == && s[10] == && s[11] == 0)) { s[7] s[8] s[9] s[10] s[11] diemnguoi = diemnguoi - 5; ThayDoi(); } if ((luotnguoi == false) && diemmay >= && s[1] = && s[2] == && s[3] == && s[4] == && s[5] == 0) { s[1] = 1; s[2] = 1; s[3] = 1; s[4] = 1; s[5] = 1; diemmay = diemmay 5; ThayDoi(); } } } 4.3 KẾT QUẢ CHẠY CHƯƠNG TRÌNH 4.2.1 Kết thử nghiệm - Các nước thực luật trò chơi - Các chức Undo, Redo hoạt động - Các hiệu ứng âm hoạt động tốt Kết thúc game: 39 download by : skknchat@gmail.com Đồ án Trí tuệ nhân tạo - Máy thắng - Bạn thắng 40 download by : skknchat@gmail.com Đồ án Trí tuệ nhân tạo CHƯƠNG 5: KẾT LUẬN - 5.1 KẾT QUẢ ĐẠT ĐƯỢC Game chạy luật trị chơi - Đã hồn thành chức game - Có hiệu ứng âm - Giao diện dễ dùng có chức Nhóm ưng ý với giao diện cần hồn thiện thêm - Tìm hiểu hiểu cách máy tính lựa chọn nước đi, tính tốn trước nhiều bước giống suy nghĩ người, thông qua giải thuật Minimax, Alpha-beta - Đã ứng dụng hàm đánh giá heuristic dựa kinh nghiệm người - Có cấp độ cho người chơi lựa chọn 5.2 HẠN CHẾ - Chưa có chế độ người chơi - Cách chọn cấp độ - Chưa đưa thời gian vào game - Chưa cài đặt danh sách lưu điểm người chơi Và chưa có form thơng báo kết riêng lên hình - 5.3 HƯỚNG PHÁT TRIỂN Khắc phục mặt hạn chế, hoàn thiện chức game - Tối ưu hóa vấn đề game: tăng thông minh cho máy mà tránh việc tràn nhớ - Thiết game cho người chơi - Hoàn thiện giao diện 41 download by : skknchat@gmail.com Đồ án Trí tuệ nhân tạo TÀI LIỆU THAM KHẢO (1) Slides Trí Tuệ Nhân Tạo – Ms Huỳnh Thị Thanh Thương (2) (3) wikipedia.org/wiki/%C3%94_%C4%83n_quan Giáo trình Trí tuệ nhân tạo 42 download by : skknchat@gmail.com ... skknchat@gmail.com Đồ án Trí tuệ nhân tạo CHƯƠNG 1: GIỚI THIỆU BÀI TỐN 1.1 NGUỒN GỐC TRỊ CHƠI Ô ăn quan, hay gọi tắt ăn quan quan trị chơi dân gian trẻ em Việt Nam mà chủ yếu bé gái Đây trị chơi có tính... download by : skknchat@gmail.com Đồ án Trí tuệ nhân tạo + Khi quan đồng thời bị ăn hết khơng cịn dân ô quan + Khi ô thuộc bên nắm giữ hết sỏi mà kho không đủ sỏi để rải cho ô - Tốn tử: cách bốc qn chiều... tính tốn Ơ ăn quan chơi với người chơi cách di chuyển qn, thể thức tính điểm giống chơi hai người bàn chơi thiết kế khác cho phù hợp download by : skknchat@gmail.com Đồ án Trí tuệ nhân tạo CHƯƠNG