Đồ án 3 đề tài xây dựng trò chơi bomberman nhiều người chơi kết hợp ai Đồ án 3 đề tài xây dựng trò chơi bomberman nhiều người chơi kết hợp ai Đồ án 3 đề tài xây dựng trò chơi bomberman nhiều người chơi kết hợp ai Đồ án 3 đề tài xây dựng trò chơi bomberman nhiều người chơi kết hợp ai Đồ án 3 đề tài xây dựng trò chơi bomberman nhiều người chơi kết hợp ai
ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CƠNG NGHỆ THƠNG TIN Bộ mơn Mạng & Truyền Thơng ĐỒ ÁN ĐỀ TÀI : XÂY DỰNG TRÒ CHƠI BOMBERMAN NHIỀU NGƯỜI CHƠI KẾT HỢP AI MỤC LỤC CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI I II Tên đề tài giới thiệu đề tài: .4 Giới thiệu vấn đề cách giải : Giao thức TCP/IP .5 Lập trình socket Mơ hình Client Thuật toán: .10 III Công cụ áp dụng : 12 CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 12 I II III Các chức người dùng: 12 Mô tả chức năng: 12 Thiết kế sở liệu: .13 CHƯƠNG 3: ÁP DỤNG LÝ THUYẾT VÀ CHẠY THỬ SẢN PHẨM 14 - Vào GAME: .15 Màn hình chơi game: 15 TÀI LIỆU THAM KHẢO .17 PHỤ LỤC 18 CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI I Tên đề tài giới thiệu đề tài: Bomberman (ボンバーマン) trò chơi video dạng mê cung theo phong cách game thùng phát triển Hudson Soft Phiên trò chơi máy tính nhà Bomber Man ( 爆 弾 男 Bakudan Otoko?) phát hành vào tháng năm 1983 cho NEC PC-8801, NEC PC-6001 mkII, Fujitsu FM-7, Sharp MZ-700, Sharp MZ-2000, Sharp X1 MSX Nhật Bản, phiên kiểm duyệt cho MSX ZX Spectrum Châu Âu Eric Floaters.Nó có phần Nhật Bản gọi Bomberman 3-D, Bomberman điều khiển mê cung theo góc nhìn thứ Năm 1985, Bomberman phát hành cho hệ máy Nintendo Nảy sinh loạt Bomberman với nhiều phần dựa lối chơi Trong phát hành hệ NES / Famicom, nhân vật tên, Bomberman, robot phải tìm đường xuyên qua mê cung lẩn tránh kẻ thù Cửa vào dẫn đến mê cung lớn tìm thấy tảng đá, mà Bomberman phải phá cách đặt bom Có vật phẩm giúp cải thiện bom Bomberman, chẳng hạn khả Fire, giúp tăng phạm vi nổ bom Bomberman biến thành người trốn thành cơng Mỗi trị chơi có tổng cộng 50 cấp độ Các trị chơi máy tính gia ban đầu có số quy tắc khác (Trong đồ án này, em muốn cải tiến từ trò Bomberman cổ điển thành trị chơi kết nối sở liệu qua giao thức TCP, bên cạnh cịn cố gắng xây dựng phát triển Enemy AI) Hình ảnh minh họa II Giới thiệu vấn đề cách giải : Vấn đề đồ án việc để xây dựng chương trình game giống game Bomberman truyền thống, bên cạnh cịn phải thêm chức nhiều người chơi kết nối mạng máy tính, chức chơi với Bomberman trí tuệ nhân tạo Cụ thể cần áp dụng kiến thức lập trình hướng đối tượng kết hợp với mẫu thiết kế, kiến thức lập trình mạng (giao thức TCP/IP) giải thuật toán học áp dụng cho xử lý bản, xây dựng Enemy (thuật toán BFS, A*,Neural Network) Giao thức TCP/IP 1.1 Tổng quan TCP/IP giao thức cho phép kết nối hệ thống mạng không đồng với TCP/IP xem giản lược mơ hình tham chiếu OSI với tầng sau: - Tầng liên kết (Datalink Layer) - Tầng mạng (Internet layer) - Tầng giao vận (Transport Layer) - Tầng Ứng Dụng (Application Layer) a Tầng liên kết Tầng liên kết (còn gọi tầng liên kết liệu hay tầng giao tiếp mạng) tầng thấp mơ hình TCP/IP, bao gồm thiết bị giao tiếp mạng chương trình cung cấp thơng tin cần thiết để hoạt động, truy nhập đường truyền vật lý qua thiết bị giao tiếp mạng b Tầng mạng Tầng Internet ( hay gọi tầng Mạng) xử lý q trình truyền gói tin mạng, giao thức tầng bao gồm : IP ( Internet Protocol) , ICMP ( Internet Control Message Protocol) , IGMP ( Internet Group Message Protocol ) c Tầng giao vận Tầng giao vận phụ trách luồng liệu trạm thực ứng dụng tầng trên, tầng có giao thức TCP ( Transmisson Control Protocol) UDP (User Datagram Protocol) - TCP cung cấp luồng liệu tin cậy trạm, sử dụng chế chia nhỏ gói tin tầng thành gói tin có kích thước thích hợp cho tầng mạng bên dưới, báo nhận gói tin, đặt hạn chế thời gian timeout để đảm bảo bên nhân biết gói tin gửi Do tầng đảm bảo tính tin cậy nên tầng không cần quan tâm đến - UDP cung cấp dịch vụ đơn giản cho tầng ứng dụng Nó gửi liệu từ trạm tới trạm mà không đảm bảo gói tin đến tới đích Các chế đảm bảo độ tin cậy thực tầng tầng ứng dụng 1.2 Phương thức hoạt động giao thức TCP/IP Q trình đóng mở gói liệu TCP/IP Cũng tương tự mơ hình OSI, truyền liệu , q trình tiến hành từ tầng xuống tầng dưới, qua tầng liệu them vào thông tin điều khiển gọi Header Khi nhận liệu trình xảy ngược lại liệu truyền từ tấng lên qua tầng phần header tương ứng lấy đến tầng liệu khơng cịn phần header Cấu trúc liệu TCP/IP Hình cho ta thấy lược đồ liệu qua tầng.Trong hình ta thấy tầng khác liệu mang thuật ngữ khác - Trong tầng ứng dụng: liệu luồng gọi stream - Trong tầng giao vận: đơn vị liệu mà TCP gửi xuống gọi TCP segment - Trong tầng mạng, liệu mà IP gửi xuống tầng gọi IP Datagram - Trong tầng liên kết, liệu truyền gọi frame Lập trình socket 2.1 Khái niệm Socket Socket điểm cuối kết nối hai chương trình chạy mạng Trên quan điểm người phát triển ứng dụng, Socket phương pháp để thiết lập kết nối truyền thơng chương trình u cầu dịch vụ (được gắn nhãn Client) chương trình cung cấp dịch vụ (được gắn nhãn Server) mạng máy tính Đối với người lập trình, họ nhìn nhận Socket giao diện nằm tầng ứng dụng tầng khác mơ hình mạng OSI có nhiệm vụ thực việc giao tiếp chương trình ứng dụng với tầng bên mạng Để thực giao tiếp, hai q trình phải cơng bố số hiệu cổng socket mà sử dụng Mỗi cổng giao tiếp thể địa xác định hệ thống Khi q trình gán số hiệu cổng, nhận liệu gửi đến cổng từ q trình khác Q trình cịn lại u cầu tạo socket Ngoài số hiệu cổng, hai bên giao tiếp phải biết địa IP Địa IP giúp phân biệt máy tính với máy tính khác mạng TCP/IP Trong số hiệu cổng dung để phân biệt trình khác máy tính Số hiệu cổng gán cho socket phải phạm vi máy tính đó, có giá trị khoảng từ đến 65535 (16 bit) Trong thực tế số hiệu cổng từ đến 1023 (gồm có 1024 cổng) dành cho dịch vụ tiếng như: http: 80, telnet: 21, ftp: 23, … Nếu người quản trị nên dùng từ cổng 1024 trở lên 2.2 Nguyên lý hoạt động Dưới góc độ lập trình socket thường làm việc theo cặp, socket đóng vai trị làm server cịn socket khác đóng vai trị clients Socket phía server xác định cổng cho giao tiếp mạng, sau chờ nghe yêu cầu mà client gửi tới client socket Do cổng cho server socket phải biết chương trình client Như số hiệu cổng socket phía server xác định chương trình, ngược lại cổng cho client socket xác định hệ điều hành Khi socket phía client gửi gói tin tới socket phía server gói tin có chứa thơng tin địa hệ thống client cổng socket phía client nên server hồn tồn gửi thơng tin phản hồi cho client Khái qt q trình trao đổi liệu thơng qua socket sau: + Chương trình phía server tạo socket, socket chương trình gắn với cổng server Sau tạo ra, socket chờ lắng nghe yêu cầu từ phía clients + Khi chương trình phái clients cần kết nối với server, tạo socket, socket hệ điều hành gắn với cổng Chương trình client cung cấp cho socket địa mạng cổng socket phía server u cầu thực kết nối + Chương trình phía server chương trình phía clients trao đổi liệu với cách đọc từ socket ghi vào socket Mơ hình Client Server Mơ hình client/server sử dụng socket chế độ hướng kết nối TCP Giai đoạn 1: Server tạo socket, gán số hiệu cổng lắng nghe yêu cầu kết nối socket(): Server yêu cầu tạo socket để sử dụng dịch vụ tầng vận chuyển bind(): Server yêu cầu gán số hiệu cổng (port) cho socket listen(): Server lắng nghe yêu cầu nối kết từ client cổng gán Giai đoạn 2: Client tạo Socket, yêu cầu thiết lập nối kết với Server socket(): Client yêu cầu tạo socket để sử dụng dịch vụ tầng vận chuyển, thông thường hệ thống tự động gán số hiệu cổng rảnh cho socket Client Connect(): Client gởi yêu cầu kết nối đến Server có địa IP Port xác định Accept(): Server chấp nhận kết nối Client, kênh giao tiếp ảo hình thành, Client Server trao đổi thông tin với thông qua kênh ảo Giai đoạn 3: Trao đổi thông tin Client Server Sau chấp nhận yêu cầu kết nối, thông thường Server thực lệnh receive() nghe có thơng điệp u cầu (Request Message) từ Client gởi đến Server phân tích thực thi yêu cầu Kết gởi client lệnh send() Sau gởi yêu cầu lệnh send(), client chờ nhận thông điệp kết (ReplyMessage) từ Server lệnh receive() Giai đoạn 4: Kết thúc phiên làm việc Các câu lệnh receive(), send() thưc nhiều lần (ký hiệu hình ellipse) Kênh ảo bị xóa Server Client đóng socket lệnh close() Như tồn trình diễn hình bên dưới: Thuật toán: 4.0 Random (Low AI): Cho Enemy chạy random, trái phải 4.1 BFS: Trong lý thuyết đồ thị, tìm kiếm theo chiều rộng (BFS) thuật tốn tìm kiếm đồ thị việc tìm kiếm bao gồm thao tác: (a) cho trước đỉnh đồ thị; (b) thêm đỉnh kề với đỉnh vừa cho vào danh sách hướng tới Có thể sử dụng thuật tốn tìm kiếm theo chiều rộng cho hai mục đích: tìm kiếm đường từ đỉnh gốc cho trước tới đỉnh đích, tìm kiếm đường từ đỉnh gốc tới tất đỉnh khác Trong đồ thị khơng có trọng số, thuật tốn tìm kiếm theo chiều rộng ln tìm đường ngắn Thuật toán BFS đỉnh gốc nhìn đỉnh kề với đỉnh gốc Sau đó, với đỉnh số đó, thuật tốn lại nhìn trước đỉnh kề với mà chưa quan sát trước lặp lại Xem thêm thuật tốn tìm kiếm theo chiều sâu, sử dụng thao tác có trình tự quan sát đỉnh khác với thuật tốn tìm kiếm theo chiều rộng Cho Bomberman xác định Enemy, gần tiêu diệt đó, từ đặt bom để tiêu diệt Enemy Tồn Enemy di chuyển Bomberman lại đổi mục tiêu, điều làm cho thời gian tiêu diệt Enemy bị kéo dài 4.2 A*: Trong khoa học máy tính, A* (đọc A sao) thuật tốn tìm kiếm đồ thị Thuật tốn tìm đường từ nút khởi đầu tới nút đích cho trước (hoặc tới nút thỏa mãn điều kiện đích) Thuật toán sử dụng "đánh giá heuristic" để xếp loại nút theo ước lượng tuyến đường tốt qua nút Thuật tốn duyệt nút theo thứ tự đánh giá heuristic Do đó, thuật tốn A* ví dụ tìm kiếm theo lựa chọn tốt (best-first search) Thuật toán A* mô tả lần đầu vào năm 1968 Peter Hart, Nils Nilsson, Bertram Raphael Trong báo họ, thuật toán gọi thuật toán A; sử dụng thuật toán với đánh giá heuristic thích hợp thu hoạt động tối ưu, mà có tên A* Năm 1964, Nils Nilsson phát minh phương pháp tiếp cận dựa khám phá để tăng tốc độ thuật toán Dijkstra Thuật toán gọi A1 Năm 10 1967 Bertram Raphael cải thiện đáng kể thuật toán này, khơng thể hiển thị tối ưu Ơng gọi thuật tốn A2 Sau đó, năm 1968 Peter E Hart giới thiệu đối số chứng minh A2 tối ưu sử dụng thuật toán với đánh giá heuristic thích hợp thu hoạt động tối ưu Chứng minh ông thuật toán bao gồm phần cho thấy thuật tốn A2 thuật tốn tốt đưa điều kiện Do ơng đặt tên cho thuật toán A *(A sao, A-star) Thuật tốn A* có cách tìm kiếm Enemy giống với BFS nhiên có số ưu tiên, tiêu diệt Enemy gần BFS, A* chọn Enemy đến chết thơi III Cơng cụ áp dụng : Ngơn ngữ lập trình : Java (xây dựng chương trình thư viện có sẵn Java, với đồ họa sử dụng thư viện Java Swing) Cơ sở liệu : MySQL CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG I Các chức người dùng: User : Có thể đăng ký, đăng nhập để vào chơi trị chơi Có thể xem, sửa thơng tin cá nhân Có thể xem top user xếp hạng Có thể kết bạn, xem danh sách bạn bè Có thể tạo phòng, chọn đồ chơi, mời bạn vào phịng chơi, chơi game II Mơ tả chức năng: Đăng ký, đăng nhập: Nhiệm vụ ban đầu người dùng trước vào chơi đăng ký đăng nhập Đăng ký: Từ hình đăng ký người dùng nhập username, password xác nhận lại password sau gửi lên server, 11 server xác thực người dùng tồn hay chưa, có báo “username tồn tại”, chưa xác nhận “đăng ký thành công”, vào game Đăng nhập: Từ hình đăng nhập người dùng nhập username, password sau gửi lên server, server xác thực việc tồn username, password hay chưa, chưa báo “sai username password”, ngược lại người dùng vào game Xem, sửa thông tin cá nhân: Khi người dùng có nhu cầu xem, sửa thơng tin Từ hình sau đăng nhập người dùng nhấn vào nút “thơng tin cá nhân” xem, sửa thơng tin Sau việc sửa thơng tin (nếu có) gửi đến server để cập nhật database Xem top user xếp hạng: Khi người dùng có nhu cầu xem top người chơi game.Từ hình sau đăng nhập nhấn vào nút “top xếp hạng” Server trả kết 10 người chơi có điểm số tích lũy cao Kết bạn, xem danh sách bạn bè: Chức kết bạn xây dựng cho người dùng dễ thao tác Từ hình sau đăng nhập bấm vào nút “bạn bè”, xem danh sách bạn bè mình, muốn thêm bạn cần nhập username mà người dùng muốn làm bạn Sau gửi thông tin lên server để cập nhật database Tạo phòng chơi, chọn đồ chơi, mời bạn vào phòng chơi, chơi game: Chức chương trình Từ hình sau đăng nhập bấm vào nút “chơi game” Sau nhấn nút “chơi game” hiển thị phịng tồn Có thể vào chơi phịng người khác (có thể bị chủ phịng đá ngồi) Hoặc nhấn nút “tạo phịng chơi”, chọn “bản đồ”, mời bạn danh sách vào chơi qua nút “mời”, nhấn nút “start” chơi game 12 III Thiết kế sở liệu: Bảng user : Giúp hệ thống quản lý user: user_id: số thứ tự đăng ký người dùng (khóa) user_name: tên tài tài khoản password: mật sex: giới tính user win: số trận thắng lose: số trận thua state : true online, false offline Bảng friend: Giúp hệ thống quản lý danh sách friend user: friend_id: số thứ tự (khóa) user_id: id user (khóa ngoại) user_id_1: id user (khóa ngoại) Bảng history: Giúp hệ thống quản lý lịch sử đăng nhập user: history_id: số thứ tự (khóa) log_in: thời điểm đăng nhập log_out: thời điểm đăng xuất user_id: id user (khóa ngoại) Bảng room: Giúp hệ thống quản lý lịch sử đăng nhập user: room_id: số thứ tự (khóa) state: true người tạo phòng, false người tạo phòng thốt, phịng bị đóng 13 quantity: số lượng người chơi phòng user_id: id user tạo phịng (khóa ngoại) User : Có thể đăng ký, đăng nhập để vào chơi trị chơi Có thể xem, sửa thơng tin cá nhân Có thể xem top user xếp hạng Có thể kết bạn, xem danh sách bạn bè Có thể tạo phịng, chọn đồ chơi, mời bạn vào phòng chơi, chơi game IV.Sơ đồ thuật toán: Xem rank: Vào game: 14 Xem lịch sử: 15 CHƯƠNG 3: ÁP DỤNG LÝ THUYẾT VÀ CHẠY THỬ SẢN PHẨM - Mơi trường chạy: Eclipse Vào GAME: 16 Màn hình vào game (1) - Màn hình chơi game: Bắt đầu game Màn hình chơi game (1) Tiêu diệt Enemy 17 Màn hình chơi game (2) Bị Enemy tiêu diệt Màn hình chơi game (3) 18 TÀI LIỆU THAM KHẢO https://www.slideshare.net/hoangpham73157/bao-cao-do-an-pht-trin-h-thnggame-server-online https://www.researchgate.net/publication/ 329453697_Beating_Bomberman_with_Artificial_Intelligence https://www.youtube.com/watch?v=VE7ezYCTPe4&list=PLiHSiO7e0JtCtLrlerg7MYuzRBX2VuZd&index=1 https://yellowcodebooks.com/ 19 PHỤ LỤC Phần bao gồm nội dung cần thiết nhằm minh họa bổ trợ cho nội dung luận văn số liệu, mẫu biểu, tranh ảnh Phụ lục không dày phần luận văn Phụ lục đuợc đánh số trang tiếp với đồ án Source code thông tin chi tiết game: https://github.com/PhanMinhTuanAnh/DoAn3 20