Báo cáo cuối kỳ project i nguyễn mạnh dũng cao văn thiện

28 2 0
Báo cáo cuối kỳ project i   nguyễn mạnh dũng   cao văn thiện

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Trò chơi cờ Caro là một trò chơi khá quen thuộc và là một trò chơi trí tuệ đòi hỏi người chơi phải có tư duy cao và khả năng phán đoán tính huống tốt. Trong hệ thống game đánh cờ Caro sẽ bao gồm hai phần là offline đánh cờ với máy và hệ thống đánh cờ online đánh cờ trong mạng với các máy tính khác.

ĐẠI HỌC BÁCH KHOA HÀ NỘI Trường Công nghệ thông tin Truyền thông BÁO CÁO PROJECT I Đề tài: Xây dựng game Caro Sinh viên thực hiện: Nguyễn Mạnh Dũng - 2020473- Lớp kỹ thuật máy tính 02 - k65 Cao Văn Thiện - 20204853 - Lớp kỹ thuật máy tính 02 - k65 Giảng viên hướng dẫn: GV Đinh Thị Hà Ly Hà Nội, tháng năm 2023 Mục lục LỜI MỞ ĐẦU PHÂN CÔNG CÔNG VIỆC CHƯƠNG I: GIỚI THIỆU ĐỀ TÀI 1.1 Tổng quan 1.2 Lý lựa chọn đề tài 1.3 Mục tiêu đồ án 1.4 Giải pháp lựa chọn CHƯƠNG II: GIẢI PHÁP XÂY DỰNG .6 2.1 Tông quan công nghệ thuật tốn sử dụng 2.1.1 Các thuật tốn trí tuệ nhân tạo sử dụng 2.2.2 Lập trình mạng với socket 9 2.2 Thiết kế chi tiết 2.2.1 Thiết kế chi tiết hàm lượng giá 2.2.2 Thiết kế chi tiết thuật toán xét thắng thua .11 2.2.3 Các lần chơi thử với hệ thống 12 CHƯƠNG III: KẾT QUẢ THỰC HIỆN 15 3.1 Kết chương trình 15 3.2 Giao diện chương trình 16 CHƯƠNG IV: KẾT LUẬN 24 4.1 Ưu điểm nhược điểm chương trình 24 4.2 Giải pháp 24 4.3 Hướng phát triển tương lai 24 Danh sách tham khảo 26 LỜI MỞ ĐẦU Hiện nay, công nghệ thông tin sử dụng rộng rãi lĩnh vực đời sống xã hội, lập trình game từ lâu lĩnh vực thu hút nhiều lập trình viên Hiện nay, việc ứng dụng trí tuệ nhân tạo vào việc phát triển game trở nên vô phổ biến, đặc biệt game mang tính trí tuệ cao Ngồi việc tạo game online lĩnh vực vô phổ biến Do đó, nhờ kiến thức học học phần trước kiến thức tự tìm hiểu thời gian chúng em chọn đề tài xây dựng nên chương trình game cờ Caro ngôn ngữ Java Đây ngôn ngữ phù hợp phát triển phần mềm, trang web, game hay ứng dụng thiết bị di động Do thời gian có hạn, nên chương trình chúng em cịn nhiều hạn chế có nhiều sai sót Do chúng em mong nhân góp ý từ thầy cô Em xin trân thành cảm ơn PHÂN CÔNG CÔNG VIỆC Nguyễn Mạnh Dũng - Xây dựng chương trình phần đánh cờ với máy theo thuật tốn trí tuệ nhân tạo - Thiết kế lại giao diện tổng quan cho tồn thể chương trình Cao Văn Thiện - Xây dựng chương trình phần đánh cờ online - Thiết kế lớp đối tượng xây dựng số giao diện cho chương trình CHƯƠNG I: GIỚI THIỆU ĐỀ TÀI 1.1 Tổng quan Trò chơi cờ Caro trò chơi quen thuộc trị chơi trí tuệ địi hỏi người chơi phải có tư cao khả phán đốn tính tốt Đây trị chơi đối kháng với hai người chơi Trong khơng gian bàn cờ có kích thước 15x15, hai người chơi thay phiên nước cảu vào ô trống bàn cờ ký tự X O Cuộc chơi kết thúc mà bên đánh ô liên hàng, cột đường chéo Trong hệ thống game đánh cờ Caro bao gồm hai phần offline đánh cờ với máy hệ thống đánh cờ online đánh cờ mạng với máy tính khác 1.2 Lý lựa 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 Việc ứng dụng trí tuê nhân tạo vào xây dựng chương trình game việc mà nhiều người hướng đến Do chúng em suy nghĩa lựa chọn đề tài xây dựng game đánh cờ Caro người máy dựa thuật tốn hay dùng trí tuệ nhân tạo Hiện nay, Internet toàn cầu phát triển mạnh, chất internet hệ thống mạng, liên kết máy tính giới Về phạm vi nhỏ có mạng tương tự khác mạng WAN, LAN, mơ hình đáp ứng với tiện ích khác Do chúng em ứng dụng kiến thức lập trình mạng để xây dựng hệ thống game đánh cờ Caro theo mơ hình Client-Server 1.3 Mục tiêu đồ án Xây dựng thành công hệ thống game đánh cờ Caro với hai phần: - Hệ thống đánh cờ offline + Đánh cờ với máy nhờ thuật toán trí tuệ nhân tạo + Đánh cờ hai người chơi máy - Hệ thống đánh cờ online với mơ hình Client-Server 1.4 Giải pháp lựa chọn Nhóm chúng em lựa chọn xây dựng game cờ Caro tảng app desktop với ngôn ngữ Java sử dụng thư viện Java Swing để tạo giao diện cho hệ thống Để tạo tạo chương trình đánh cờ Caro người máy, chúng em ứng dụng thuật tốn của trí tuệ nhân tạo Trong có thuật tốn Mini-Max để tìm nước tốt cho máy thuật toán cắt tỉa Alpha-Beta để giảm số lượng tìm kiếm kiếm nước cho máy mà không ảnh hưởng đến đánh giá bàn cờ xét Ngoài cần hàm ước lượng để đánh giá trạng thái bàn cờ Để tạo nên hệ thống đánh cờ online nhiều máy tính, chúng em ứng dụng kiến thức lập trình mạng với việc ứng dụng lập trình Socker họ giao thức TCP/IP giao thức UDP Xây dựng mơ hình Client-Server kết hợp với kỹ thuật lập trình đa luồng ngôn ngữ Java CHƯƠNG II: GIẢI PHÁP XÂY DỰNG 2.1 Tông quan công nghệ thuật toán sử dụng 2.1.1 Các thuật toán trí tuệ nhân tạo sử dụng 2.1.1.1 Thuật tốn MiniMax Cây trò chơi: - Gốc câu ứng với trạng thái u Với trạng thái u, tìm nước hợp lệ để tạo trạng thái Từ trạng thái ta lại tìm tiếp trạng thái tiếp - Hai người chơi tìm nước tốt giá trị Min Max nước trò chơi Nước MAX phụ thuộc vào nước MIN ngược lai - Độ cao tổng số nước hai người Các nút tương ứng với trạng thái kết thúc Nhận định: - Giả sử thời điểm đường dẫn tới trạng thái u Nước tối ưu cho trạng thái u nước dẫn tới đỉnh v so với tất đỉnh khác u - Để chọn nước tốt cho trạng thái u, ta cần xác định giá trị tất đỉnh trị chơi có gốc u - Để xác định giá trị có đỉnh gốc u, ta từ mức thấp nhất: + Tại nước Max, ta lấy giá trị max giá trị nút + Tại nước Min, ta lấy giá trị giá trị nút Hạn chế: - Thuật tốn bắt buộc phải xét tồn khơng gian trạng thái, số lượng trạng thái trị chơi mà phải kiểm tra cấp số nhân theo chiều sâu cây, việc không khả thi với tốn có khơng gian trạng thái lớn Max (tìm đường cho X) Min (tìm đường cho O) Max (tìm đường cho X) Mã giả: function minimax(node, depth, maximizingPlayer) is if (depth ==0 || node is a terminal node) value(node); if (MaximizingPlayer) { // for Maximizer Player maxValue= - 10e6; for (each child of node) { maxValue= max(maxValue, minimax(child, depth-1, false)); } return maxValue; } else { // for Minimizer player maxValue = 10e6; for (each child of node) { minValue = min(minValue, minimax(child, depth-1, true)); } return minValue; } 2.1.1.2 Thuật toán cắt tỉa Alpha-Beta Nhận định: - Alpha-Beta Pruning phiên sửa đổi tối ưu hóa cho thuật tốn minimax Thuật tốn làm giảm số lượng node đánh giá thuật tốn minimax tìm kiếm, mà k làm ảnh hưởng đến đánh giá đỉnh xét - Hai tham số Alpha Beta định nghĩa + Alpha: lựa chọn tốt (giá trị cao nhất) tìm thấy điểm đường Maximizer Giá trị ban đầu alpha -∞ +Beta: lựa chọn tốt (giá trị thấp nhất) tìm thấy điểm dọc theo đường dẫn Minimizer Giá trị ban đầu beta + ∞ - Điều kiện cần thiết thuật toán Alpha-Beta α > = β - Max player cập nhật giá trị Alpha Min player cập nhật giá trị phiên Beta - Ta chuyển giá trị alpha, beta cho nút - Trong backtracking lại cây, giá trị nút chuyển đến nút phía thay giá trị alpha beta Mã giải function alphabeta(node, depth, alpha, beta, maximizingPlayer) is if (depth ==0 || node is a terminal node) value(node); if (MaximizingPlayer) { // for Maximizer Player maxValue= - 10e6; for (each child of node) { maxValue= max(maxValue, alphabeta (child, depth-1, alpha, beta, false)); alpha= max(alpha, maxValue) if (alpha >= beta) break; } return maxValue; } else { // for Minimizer player maxValue = 10e6; for (each child of node) { minValue = min(minValue, alphabeta (child, depth-1, alpha, beta, true)); beta = min(beta, minValue) if (alpha >= beta) break; } return minValue; } 2.2.2 Lập trình mạng với socket Sử dụng lập trình TCP Socket đa luồng để kết nối Client Server Miêu tả ứng: - Khi Server bật, chờ client kết nối tới chấp nhận - Khi client bật kết nối tới, Server tạo luồng để chờ nhận tin nhắn từ luồng client - Client đọc dịng văn nhập từ bàn phím người dùng , gửi tới server qua Socket - Server đọc dịng văn gửi từ Socket xử lí - Server chuyển lại dòng văn tương ứng tới phía client qua Socket - Client đọc dịng văn từ socket xử lí dịng văn nhận từ Server - Sử dụng Java Swing để thiết kế giao diện 2.2 Thiết kế chi tiết 2.2.1 Thiết kế chi tiết hàm lượng giá - Kỹ thuật lượng giá kỹ thuật quan trọng việc xây dựng trò chơi cờ Caro (Gomoku) Kỹ thuật giúp xây dựng điểm cho trạng thái bàn cờ để từ xây dựng trị chơi Việc xây dựng hàm lượng giá hợp lý , xác giúp cho hệ thống có đánh giá xác trạng thái bàn cờ để đưa nước thông minh - Đối với tốn cờ caro, ta đánh giá tính "tốt, xấu" thời điểm bàn cờ Ta tính điểm cao thấp dựa vào số quân liên tiếp bàn cờ, bàn cờ có bàn nhiều quân liên tiếp (1 loại quân, quân ta quân địch) điểm trạng thái bàn cờ cao Tuy nhiên hàm Heuristic nên ta cần bổ sung thêm Heuristic khác Hàm tính điểm trạng thái bàn cờ: - Đầu tiên ta cần tính điểm cho loại quân là: Máy Người Ta xem với trạng thái lượt đánh quân xem quân có bị chặn hai đầu bới quân địch không điểm cho hợp lý Ví dụ ta tính điểm cho loại quân mà lượt sau lượt loại qn ta cho điểm cao - Ta duyệt theo phương: ngang, dọc, đường chéo Các phương duyệt đươc đánh sau ta cộng điểm phương duyệt lại thành điểm tổng cho loại quân trạng thái xét - Ta tính điểm cụ thể cho trạng thái bàn cờ theo phương loại quân bên Nếu dãy qn bị chặn đầu điểm Các trường hợp khác ta tính cụ thể sau: Số Bị quân địch quân chặn đầu liên tiếp quân liên tiếp quân Không bị chặn liên tiếp Tính điểm cho loại Tính điểm cho loại quân quân mà lượt sau mà lượt sau lượt khơng phải lượt qn đó: qn đó: điểm điểm điểm điểm ii, trung bình iii, khó 2.2.3.1 Chơi cờ online hai người chơi CHƯƠNG III: KẾT QUẢ THỰC HIỆN 3.1 Kết chương trình - Xây dựng hệ thống đánh cờ Caro gồm hai phần phần offline phần online - Phần offline có phần đánh cờ với máy hai người chơi đánh cờ bàn cờ máy tính Phần đánh cờ với máy, dựa vào độ sâu thuật tốn tìm kiếm Mini-Max, ta chia làm cấp độ chơi khác người chơi chọn mức độ: dễ, trung bình, khó Phần đánh cờ hai người chơi, người chơi chọn thể loại bàn cờ khác tic-tac-toe (bàn cờ 3x3) 6x6, 9x9 - Phần online hệ thống, người chơi bắt đầu vào đặt tên cho đặt avata theo hình có sẵn Sau vào hệ thống, người chơi có lựa chọn Một tạo phịng chơi để đợi người khác vào chơi Hai người chơi vào phịng cách nhập mã phịng mà người chơi tạo phịng trước Nếu phịng khơng tồn người chơi nhận thơng báo phịng khơng tồn Ba người chơi chọn chơi ngay, chọn chơi ngay, hệ thống tự động tìm kiêm phòng trống phòng tạo để ghép đôi Người chơi đợi 20s phịng trống người chơi trở lại màng hình - Trong hai người chơi online, hệ thống có trang bị chức chat hai người chơi Ngồi người chơi kết thúc ván đấu sơm cách chọn đầu hàng xin hịa Nếu chọn đầu hàng, người chơi thua đối thủ nhận thông báo thắng Nếu chọn xin hịa, người chơi đợi đối thủ đồng ý hay không, đối thủ đồng ý ván cờ hòa kết thúc, đối thủ khơng đồng ý ván cờ tiếp tục - Hệ thống trang bị phím tắt quay lại trang phía trước, thoát khỏi hệ thống Trong đánh cờ offline, người chơi quay lại bước trước mình, tính thời gian chơi, tạm dừng chơi chơi lại ván - Link git: https://github.com/CVThien2k2/GameCaroOnline - Link youtube demo: https://www.youtube.com/watch?v=gW0J9Iqdgjw 3.2 Giao diện chương trình 3.2.1 Giao diện 3.2.2 Giao diện phần offline 3.2.2.1, Giao diện phần đánh với máy Thông báo nhập tên người chơi Thông báo quay lại nước đánh với máy Bàn cờ bị che lại ấn nút tạm dừng chơi

Ngày đăng: 14/08/2023, 22:39

Tài liệu cùng người dùng

Tài liệu liên quan