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
895,82 KB
Nội dung
TRƯỜNG CAO ĐẲNG CÔNG NGHỆ THÔNG TIN HỮU NGHỊ VIỆT - HÀN KHOA CÔNG NGHỆ THÔNG TIN ỨNG DỤNG TRÍ TUỆ NHÂN TẠO ĐỂ LẬP TRÌNH TRỊ CHƠI CARO GIỮA NGƢỜI VÀ MÁY TÓM TẮT ĐỒ ÁN TỐT NGHIỆP NGÀNH: LẬP TRÌNH MÁY TÍNH HSSV thực : Lê Hữu Hùng MÃ HSSV : CCLT17A003 Cán hƣớng dẫn : TS Lê Tân Khóa đào tạo : 2017 - 2020 Đà Nẵng, 01/2020 Ứng dụng trí tuệ nhân tạo để lập trình game caro người máy MỞ ĐẦU Lý chọn đề tài Từ lâu người có suy nghĩ muốn tạo cỗ máy tự suy nghĩ hành động Chính thế, trí tuệ nhân tạo (AI) trở thành một lĩnh vực thời đại công nghệ thông tin ngày Các ngành nghề xã hội có xu hướng xử dụng AI để khiến máy móc thơng minh Trong giải trí, y tế, hay giáo dục, nhiều robot thông minh tạo thay người dạy học, giúp đỡ người già, thực công đoạn cơng nghiệp, Vì ứng dụng hữu ích nó, em xin trình bày ứng dụng AI game caro người máy dựa thuật tốn hay dùng trí tuệ nhân tạo Mong muốn thơng qua game này, em có nhìn cụ thể đề tài AI, từ mở rộng để nghiên cứu phát triển thêm Mục tiêu nhiệm vụ nghiên cứu Mục tiêu: Tìm hiểu định nghĩa, lịch sử phát triển trí tuệ nhân tạo Tìm hiểu cấu trúc, thuật tốn cách hoạt động AI Nhiệm vụ: Ứng dụng nghiên cứu để lập trình game caro mà máy tính tự đưa bước Đối tƣợng phạm vi nghiên cứu Đối tượng nghiên cứu: Lĩnh vực AI Phạm vi nghiên cứu: Trong game caro người máy SVTH: Lê Hữu Hùng – Lớp CCLT17A Ứng dụng trí tuệ nhân tạo để lập trình game caro người máy Phƣơng pháp nghiên cứu Nghiên cứu dựa trên: Tài liệu Tham khảo từ giáo viên hướng dẫn Thực hành viết mã máy tính ngơn ngữ java Dự kiến kết Đạt mục tiêu nêu ra, lập trình thành cơng game caro người máy Dự kiến hồn thành khoảng tháng Ý nghĩa khoa học thực tiễn Ý nghĩa khoa học: Tìm hiểu thuật tốn sử dụng cơng nghệ AI Có tảng để mở rộng phạm vi nghiên cứu mặt ứng dụng khác trí tuệ nhân tạo Thực tiễn: Lập trình game caro phục vụ cho giải trí nâng cao khả lập trình Nội dung đồ án tốt nghiệp Ngoài phần mở đầu, kết luận tài liệu tham khảo, nội dung đồ án gồm có chương: Chương 1: Giới thiệu AI Chương 2: Ứng dụng AI để lập trình game caro người máy SVTH: Lê Hữu Hùng – Lớp CCLT17A Ứng dụng trí tuệ nhân tạo để lập trình game caro người máy CHƢƠNG I: GIỚI THIỆU VỀ AI 1.1 GIỚI THIỆU VỀ AI 1.1.1 Tìm hiểu khái niệm 1.1.2 Lịch sử phát triển 1.1.3 Các lĩnh vực nghiên cứu AI 1.1.4 Ứng dụng AI 1.2 NHỮNG VẤN ĐỀ CHƢA ĐƢỢC GIẢI QUYẾT CỦA TRÍ TUỆ NHÂN TẠO 1.3 NHỮNG ƢU ĐIỂM VÀ RỦI RO CỦA AI HIỆN TẠI 1.3.1 Ƣu điểm 1.3.2 Rủi ro SVTH: Lê Hữu Hùng – Lớp CCLT17A Ứng dụng trí tuệ nhân tạo để lập trình game caro người máy CHƢƠNG II: ỨNG DỤNG AI ĐỂ LẬP TRÌNH GAME CARO GIỮA NGƢỜI VÀ MÁY 2.1 CÁC CHƢƠNG TRÌNH CHƠI CỜ VÀ LỊCH SỬ GAME CARO 2.1.1 Sơ lƣợc lịch sử chƣơng trình chơi cờ 2.1.2 Lịch sử game caro 2.1.3 Sự phát triển game caro 2.2 PHÂN TÍCH BÀI TỐN nh 2.4 Cây tìm kiếm trị chơi 2.3 PHƢƠNG PHÁP GIẢI QUYẾT 2.3.1 Các thuật tốn tìm kiếm 2.3.2 Phân tích lựa chọn thuật tốn cho game Sau t m hiểu thuật toán trên, dễ thấy giải thuật tìm kiếm minimax kết hợp cắt tia alpha-beta phù hợp để tìm kiếm nước tốt cho máy Vì game caro người máy em sử dụng thuật toán Game bao gồm vùng 20x20 ô, bắt đầu game, có trường hợp người đánh trước máy đánh trước Khi máy tùy chỉnh để đánh trước, máy đánh vào ô trung tâm, ngược lại, người chơi đánh trước khởi chạy thuật toán minimax cắt tỉa alpha-beta để tìm kiếm nước cho máy SVTH: Lê Hữu Hùng – Lớp CCLT17A Ứng dụng trí tuệ nhân tạo để lập trình game caro người máy nh 2.15 Sơ đồ hàm alphabeta SVTH: Lê Hữu Hùng – Lớp CCLT17A Ứng dụng trí tuệ nhân tạo để lập trình game caro người máy nh 2.16 Sơ đồ hàm maxvalue àm maxvalue gọi hàm Giatribanco() để tính tốn giá trị Sau lấy ô có giá trị lớn nhất, nghĩa ô ô lợi cho máy Kiểm tra xem chạm tới giới hạn độ sâu chưa, v nói thuật tốn minimax phần trước, xét trò chơi độ sâu định Nếu đạt tới độ sâu MAXDEPTH trả giá trị lợi Ngược lại lấy MAXMOVE (ở 4) có giá trị lớn Sau cho máy đánh thử vào ô tạo thành trạng thái bàn cờ (node mới) áp dụng hàm minvalue cho node Cứ lặp lại đến đạt đến MAXDEPTH trả giá trị lớn nhất, tìm thấy trạng thái chiến thắng cho máy trả giá trị max gán nước bestmove cho nước xét (nước dẫn đến chiến thắng) SVTH: Lê Hữu Hùng – Lớp CCLT17A Ứng dụng trí tuệ nhân tạo để lập trình game caro người máy nh 2.17 Sơ đồ hàm minvalue àm tương tự hàm max Với hàm Giatribanco() tính giá trị trống bàn cờ dựa theo chiều dựa hàm danhgia() Hàm danhgia xét khối gồm ô liên chiều dọc, ngang đường chéo Nếu tìm thấy khối có loại qn (hoặc có X có O) ta tính giá trị trống cịn lại khối sau: Nếu đến lượt người có loại qn khối trống nhận giá trị theo mảng Diemtancong[] dựa số quân có khối, nhiều quân điểm cao Ngược lại đến lượt đối thủ trống nhận giá trị theo mảng Diemphongthu[] SVTH: Lê Hữu Hùng – Lớp CCLT17A Ứng dụng trí tuệ nhân tạo để lập trình game caro người máy Ngược lại khối có tồn qn địch giá trị trống giảm dần theo mảng nh 2.18 Hàm GiaTriBanCo() Hàm danhgia () bên hàm tính giá trị cho ô theo chiều khác SVTH: Lê Hữu Hùng – Lớp CCLT17A Ứng dụng trí tuệ nhân tạo để lập trình game caro người máy nh 2.19 Khởi tạo tọa độ bắt đầu kết thúc tùy theo phương duyệt Đầu tiên hàm đánh giá dựa vào thông số đưa vào phuongduyet để gán giá trị cho tọa độ bắt đầu (gh_cot1; gh_dong1), tọa độ kết thúc duyệt (gh_cot2; gh_dong2) Nếu xét theo chiều ngang, phần bàn cờ xét toàn bàn cờ trừ phần cột bên phải bàn cờ, xét theo chiều dọc phần bàn cờ xét toàn bàn cờ trừ phần cột bên trái, tương tự với đường chéo trừ phần cột phải dòng cùng, trừ cột trái dòng cuối SVTH: Lê Hữu Hùng – Lớp CCLT17A Ứng dụng trí tuệ nhân tạo để lập trình game caro người máy Hình 2.21 Thực tính tốn giá trị cho ô trống hàm danhgia() Tiếp theo hàm đánh giá, duyệt mảng chiều gồm ô phần bảng chọn tùy theo phuongduyet Trong lần duyệt vịng lặp, thực điều sau đây: Từ vị trí ô duyệt, thực xét khối gồm ô liền kề đếm xem ô có quân cờ máy quân cờ người Ở hàm tangbiendem() giúp ta tăng biến i j vòng lặp for tùy theo phương duyệt, ví dụ duyệt theo phương dọc, tangbiendem() tăng j, duyệt theo phương ngang th tangbiendem() tăng i, duyệt theo đường SVTH: Lê Hữu Hùng – Lớp CCLT17A 10 Ứng dụng trí tuệ nhân tạo để lập trình game caro người máy chéo từ trái sang phải tangbiendem() tăng i j thêm 1, duyệt theo đường chéo từ phải qua trái tăng j giảm i nh 2.15 Hàm tangbiendem() Tiếp theo kiểm tra khối ô liên tiếp có thỏa mãn: Hoặc chứa tồn quân máy, chứa toàn quân người nh 2.22 Xét có loại cờ SVTH: Lê Hữu Hùng – Lớp CCLT17A 11 Ứng dụng trí tuệ nhân tạo để lập trình game caro người máy Nếu thỏa mãn điều kiện bước thứ 2, kiểm tra tiếp lượt đánh người hay máy, khối chứa tồn qn máy mà lại đến lượt người chơi th giảm giá trị theo mảng Diemphongthu[], ngược lại tới lượt máy th tăng giá trị ô theo mảng Diemtancong[] Vậy sau kết thúc hàm GiaTriBanCo() ta mảng chiều đối tượng Oco gồm thuộc tính quân cờ với giá trị quân máy, -1 quân người, ô trống Thuộc tính giá trị chứa giá trị mà ta vừa tính xong hàm GiaTriBanCo() nh 2.24 Đối tượng OCo Ở cách thức hoạt động hàm minimax để đưa nước cho máy Phần tiếp theo, ta tìm hiểu cách xây dựng giao diện chế chiến thắng game 2.3.3 Tạo giao diện chế game a) Giao diện game Giao diện game chia làm phần, xây dựng dựa thành phần thư viện java.swing thư viện Graphics: SVTH: Lê Hữu Hùng – Lớp CCLT17A 12 Ứng dụng trí tuệ nhân tạo để lập trình game caro người máy Hình 2.25 Giao diện game caro Vùng chơi game: Gồm 20x20 ô tạo thành thành phần Jbutton thư viện java.swing nh 2.26.Vùng chơi game SVTH: Lê Hữu Hùng – Lớp CCLT17A 13 Ứng dụng trí tuệ nhân tạo để lập trình game caro người máy Khi khởi chạy game, người chơi bấm vào nút New Game kết thúc ván chơi hàm createBox gọi để vẽ lại 20x20 ô JPanel Gamearea nh 2.27 Sơ đồ tạo giao diện chơi game Ở ta khởi tạo gán cho Jbutton kiện để click vào setIcon cho Jbutton theo biểu tượng tương ứng với quân cờ người máy đánh Vùng thông báo tùy chỉnh game: Gồm hình minh họa game, dịng String vẽ thành phần Graphic thông báo luật chơi, nút Jbutton để điều chỉnh game SVTH: Lê Hữu Hùng – Lớp CCLT17A 14 Ứng dụng trí tuệ nhân tạo để lập trình game caro người máy nh 2.28 Menu game b) Cơ chế game Khi người máy có qn liên tiếp có thơng báo chiến thắng Mỗi có quân cờ đánh, máy duyệt theo hướng ngang, dọc đường chéo xem quân có tạo thành quân liên tiếp không hàm isEnd(), hàm kiểm tra hàm doc(), ngang(), cheo1(), cheo2(), hàm mang giá trị True thơng báo kết thúc ván cờ SVTH: Lê Hữu Hùng – Lớp CCLT17A 15 Ứng dụng trí tuệ nhân tạo để lập trình game caro người máy nh 2.29 Kiểm tra chiến thắng Kiểm tra theo hàng dọc: máy duyệt từ vị trí quân vừa đánh theo hướng lên xuống dưới, gặp quân có quân với ô vừa đánh, tăng biến đếm thêm 1, ngược lại dừng, khơng đếm Nếu biến đếm lớn thơng báo chiến thắng nh 2.30 Duyệt theo chiều dọc Tương tự với chiều ngang, đường chéo SVTH: Lê Hữu Hùng – Lớp CCLT17A 16 Ứng dụng trí tuệ nhân tạo để lập trình game caro người máy nh 2.31 Duyệt theo chiều ngang nh 2.32 Duyệt đường chéo từ trái qua phải SVTH: Lê Hữu Hùng – Lớp CCLT17A 17 Ứng dụng trí tuệ nhân tạo để lập trình game caro người máy nh 2.33 Duyệt đường chéo từ phải qua trái 2.3.4 Các công cụ, thành phần sử dụng để thực lập trình game SVTH: Lê Hữu Hùng – Lớp CCLT17A 18 Ứng dụng trí tuệ nhân tạo để lập trình game caro người máy KẾT LUẬN 3.1 KẾT QUẢ ĐẠT ĐƢỢC Sau hoàn thành việc lập trình game caro dựa việc ứng dụng thuật toán minimax kết hợp với cắt tỉa alpha beta em đạt số kết sau: Tìm hiểu khái niệm trí tuệ nhân tạo lĩnh vực, ứng dụng trí tuệ nhân tạo sống Biết hình thành phát triển trí tuệ nhân tạo mà ứng dụng cụ thể trò chơi chiến lược máy tính Tìm hiểu thuật tốn tìm kiếm hay sử dụng trí tuệ nhân tạo Áp dụng thuật toán minimax cắt tỉa alpha-beta để xây dựng hàm tính tốn nước cho máy tính game caro người máy 3.2 HƢỚNG PHÁT TRIỂN TRONG TƢƠNG LAI Vì em xây dựng Game Caro có mục đích bước đầu tìm hiểu mảng Trí tuệ nhân tạo Tiếp tục tìm hiểu xây dựng Game Caro với số tính như: máy học cách người, đưa phán đoán nước đi….Và để Game nhiều người biết tới, em cố gắng tích hợp vào di động hay đưa lên website cách sử dụng công cụ khác để xây dựng Trong thời gian làm đồ án, em cố gắng hết m nh để hoàn thành đồ án tốt Nhưng với khả kinh nghiệm hạn chế, đồ án không tránh khỏi thiếu sót Em mong q thầy bạn bè thơng cảm đóng góp ý kiến để em hồn thiện thêm kiến thức cho m nh đồ án đạt hiệu cao 3.3 BÀI HỌC RÚT RA SVTH: Lê Hữu Hùng – Lớp CCLT17A 19 Ứng dụng trí tuệ nhân tạo để lập trình game caro người máy 3.3.1 Bài học kinh nghiệm Việc xây dựng game caro người máy giúp em có thêm hiểu biết thuật tốn tìm kiếm hay dùng trí tuệ nhân tạo, điều giúp kĩ lập trình em cải thiện 3.3.2 Bài học thực tế Qua trình thực đồ án, em nhận thấy lĩnh vực trí tuệ nhân tạo mở kỉ nguyên việc giải phóng sức lao động, mà máy móc làm nhiều hơn, chí vượt trội số lĩnh vực so với người Thêm nữa, hội để em khám phá sâu vào lĩnh vực này, hội để học hỏi làm việc 3.3.3 Kết luận Cuối em xin cảm ơn thầy Lê Tân tạo điều kiện để em tìm hiểu hồn thành đồ án Cảm ơn thầy cô tận t nh giúp đỡ em năm học trường, kết lớn kiến thức thầy cô dạy gần năm học SVTH: Lê Hữu Hùng – Lớp CCLT17A 20 ... trí tuệ nhân tạo để lập trình game caro người máy CHƢƠNG II: ỨNG DỤNG AI ĐỂ LẬP TRÌNH GAME CARO GIỮA NGƢỜI VÀ MÁY 2.1 CÁC CHƢƠNG TRÌNH CHƠI CỜ VÀ LỊCH SỬ GAME CARO 2.1.1 Sơ lƣợc lịch sử chƣơng... cho máy tính game caro người máy 3.2 HƢỚNG PHÁT TRIỂN TRONG TƢƠNG LAI Vì em xây dựng Game Caro có mục đích bước đầu tìm hiểu mảng Trí tuệ nhân tạo Tiếp tục tìm hiểu xây dựng Game Caro với số tính... dụng nghiên cứu để lập trình game caro mà máy tính tự đưa bước Đối tƣợng phạm vi nghiên cứu Đối tượng nghiên cứu: Lĩnh vực AI Phạm vi nghiên cứu: Trong game caro người máy SVTH: Lê Hữu Hùng –