LẬP TRÌNH GAME ỨNG DỤNG THUẬT TOÁN A

60 763 4
LẬP TRÌNH GAME ỨNG DỤNG THUẬT TOÁN A

Đ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

MỤC LỤC LỜI CAM ĐOAN LỜI CẢM ƠN MỤC LỤC DANH MỤC CÁC CHỮ VIẾT TẮT DANH MỤC HÌNH DANH MỤC BẢNG PHẦN MỞ ĐẦU 1 1. Tính cấp thiết của đề tài 1 2. Tổng quan về đề tài nghiên cứu 1 3. Mục đích nghiên cứu 1 4. Đối tượng nghiên cứu và phạm vi nghiên cứu 2 5. Phương pháp nghiên cứu 2 6. Những đóng góp của báo cáo 2 7. Kết cấu của báo cáo 3 CHƯƠNG 1: TỔNG QUAN VỀ CƠ SỞ LÝ THUYẾT 4 1.1. Tổng quan về lý thuyết đồ thị 4 1.1.1. Định nghĩa 4 1.1.2. Biểu diễn đồ thị trên máy tính 7 1.1.3. Ý nghĩa của lý thuyết đồ thị 11 1.2. Tổng quan về trí tuệ nhân tạo 13 1.2.1. Định nghĩa trí tuệ nhân tạo 13 1.2.2. Các nền tảng của trí tuệ nhân tạo 15 1.2.3. Các lĩnh vực trong trí tuệ nhân tạo 16 1.2.4.Các thành tựu nổi bật của trí tuệ nhân tạo hiện nay 20 1.3. Giới thiệu về thuật toán A 23 1.3.1. Sơ lược các bài toán tìm đường đi ngắn nhất 23 1.3.2. Thuật toán A 24 CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 32 2.1. Phân tích yêu cầu 32 2.1.1. Bài toán 32 2.1.2. Mục tiêu cần đạt 32 2.2. Phân tích hệ thống thông tin 32 2.2.1. Xác định tác nhân và các chức năng của chương trình 32 2.2.2. Biểu đồ Use Case tổng quát 33 2.2.3. Biểu đồ tuần tự 34 2.2.4. Biểu đồ hoạt động 35 CHƯƠNG 3: XÂY DỰNG CHƯƠNG TRÌNH GAME ỨNG DỤNG THUẬT TOÁN A 37 3.1. Giới thiệu về chương trình Game 37 3.2. Áp dụng thuật toán A vào Game 38 3.3. Xây dựng giao diện Game 41 3.3.1. Môi trường xây dựng 41 3.3.2. Giới thiệu về giao diện của Game 41 KẾT LUẬN VÀ KIẾN NGHỊ 48 HƯỚNG PHÁT TRIỂN CỦA ĐỀ TÀI 49 TÀI LIỆU THAM KHẢO 51

1 TRƯỜNG ĐẠI HỌC TÀI NGUYÊN VÀ MÔI TRƯỜNG HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN LẬP TRÌNH GAME ỨNG DỤNG THUẬT TOÁN A* Hà Nội – Năm 2017 TRƯỜNG ĐẠI HỌC TÀI NGUYÊN VÀ MÔI TRƯỜNG HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN SINH VIÊN: NGUYỀN THỊ MY LINH LẬP TRÌNH GAME ỨNG DỤNG THUẬT TOÁN A* Chuyên ngành : Người hướng dẫn : Thạc sỹ Vũ Văn Huân \ Hà Nội – Năm 2017 Công nghệ thông tin LỜI CAM ĐOAN Những nội dung đồ án tốt nghiệp thành từ nghiên cứu thực trực tiếp hướng dẫn giảng viên hướng dẫn Thạc sỹ Vũ Văn Huân Đồ án thực hoàn toàn mới, thành riêng em, không chép theo đồ án tương tự Mọi tham khảo sử dụng đồ án trích dẫn nguồn tài liệu danh mục tài liệu tham khảo Mọi chép không hợp lệ, vi phạm quy chế nhà trường, em xin hoàn toàn chịu trách nhiệm Sinh viên thực Nguyễn Thị My Linh LỜI CẢM ƠN Trong suốt trình học tập Trường Đại Học Tài Nguyên Môi Trường Hà Nội, chúng em thầy cô giảng dạy, giúp đỡ truyền đạt nhiều kiến thức vô quý giá Ngoài ra, chúng em rèn luyện thân môi trường học tập đầy sáng tạo khoa học Đây trình quan trọng giúp em thành công bắt tay vào nghề nghiệp tương lai sau Em xin chân thành cảm ơn Ban giám hiệu nhà trường, Ban chủ nhiệm khoa công nghệ thông tin, toàn thể thầy cô tận tình giảng dạy trang bị cho em nhiều kiến thức bổ ích suốt trình học tập trường vừa qua Đây quãng thời gian vô hữu ích, giúp em trưởng thành lên nhiều hành trang quan trọng thiếu chuẩn bị trường công việc sau Đặc biệt em xin cảm ơn đến thầy Vũ Văn Huân, thầy tận tình giúp đỡ, trực tiếp bảo, hướng dẫn em suốt trình làm đồ án tốt nghiệp Trong thời gian làm việc với thầy, em không ngừng tiếp thu thêm nhiều kiến thức bổ ích mà học tập tinh thần làm việc thái độ nghiên cứu nghiêm túc, hiệu quả, điều cần thiết cho em trình học tập công tác sau Mặc dù cố gắng suốt trình thực tập làm đồ án, kinh nghiệm thực tế trình độ chuyên môn chưa nhiều nên em không tránh khỏi thiếu sót, em mong bảo, góp ý chân thành từ thầy, cô giáo tất bạn Em xin chân thành cảm ơn! Sinh viên thực Nguyễn Thị My Linh MỤC LỤC DANH MỤC CÁC CHỮ VIẾT TẮT Chữ viết tắt AI TTNT Tên tiếng anh Artificial intelligence Nghĩa tiếng việt Trí tuệ nhân tạo Trí tuệ nhân tạo DANH MỤC HÌNH DANH MỤC BẢNG 10 PHẦN MỞ ĐẦU Tính cấp thiết đề tài Trí tuệ nhân tạo lĩnh vực gắn liền với ngành công nghệ thông tin, sản phẩm game trí tuệ nhân tạo xuất nhiều, trí tuệ nhân tạo trở nên quen thuộc dần với sống ngày Thuật toán A* thuật toán tìm kiếm đồ thị nhằm đưa lựa chọn tìm kiếm thông minh, tối ưu để thỏa mãn yêu cầu toán đưa Trên thực tế, người ta sử dụng thuật toán tìm kiếm tạo nên chương trình nhằm phục vụ cho thực tiễn nhiều chẳng hạn như: - Tạo nên trạng thái di chuyển thông minh an toàn cho Robot Các chương trình tìm kiếm đối tượng định vị Các chức tìm kiếm đường ngắn đồ… Vậy nên em muốn đề xuất thực đề tài để hiểu rõ thuật toán tìm kiếm A* ứng dụng thuật toán vào chương trình Gamecụ thể sử dụng thuật toán để tìm kiếm đường tới đích cách tối ưu Tổng quan đề tài nghiên cứu Đề tài hệ thống lại số sở lý thuyết đồ thị thuật toán tìm đường, từ áp dụng thuật toán tìm kiếm A* vào game Đề tài thực nhằm mục đích xây dựng hệ thống giải toán tìm kiếm đường thực tế dựa chiến lược tìm kiếm Heuristic xây dựng trò chơi ứng dụng thuật toán Mục đích nghiên cứu - Mục đích tổng quát: Tạo sản phẩm Game ứng dụng Thuật toán tìm kiếm A* mang tính trí tuệ nhân tạo phục vụ cho giải trí • Mục tiêu cụ thể: Hiểu rõ Lý thuyết đồ thị Thuật toán tìm kiếm A* 46 Đề tài thực dựa ý tưởng game Pacman áp thuật toán tìm kiếm A* để đưa lựa chọn đường cho nhân vật Ghost Nhân vật Ghost di chuyển theo thuật toán A* để đuổi theo bắt nhân vật Pacman người chơi điều khiển Như giới thiệu Chương (Mục 2.1.1, Trang 24), Game xây dựng dành cho người chơi Người chơi điều khiển nhân vật tròn màu vàng Đội địch gồm ma máy tính di chuyển.Người chơi cần di chuyển khéo léo để tránh va chạm với ma để không bị thua Người chơi điều khiển nhân vật ăn bóng to (Power Pills) map Ăn bóng nhỏ đường giúp cho người chơi tăng số điểm Khi người chơi ăn hết bóng to map chuyển sang khác với map khác Game kết thúc chơi, nhân vật đội người chơi bị quái vật ăn chơi hết Ở trò chơi này, ma di chuyển để bắt nhân vật người chơi nên ma sử dụng thuật toán để tìm kiếm nhân vật người chơi nhanh Tuy nhiên số lượng ma nhiều (4 ma đấu với người chơi), tất di chuyển công người chơi theo thuật toán A* gây khó khăn lớn cho người chơi Vậy nên trò chơi xây dựng ma màu đỏ di chuyển theo thuật toán A* ma lại di chuyển theo ngẫu nhiên để phù hợp 3.2 Áp dụng thuật toán A* vào Game Ý tưởng thuật toán - Bước 0: Khai báo mảng liệu để lưu trữ nút, • • hướng đi, g(n) Khai báo mảng lưu nút đến chưa duyệt Khai báo mảng lưu nút duyệt Khai báo mảng lưu nút trước nút • 47 • • • - Khai báo mảng lưu độ dài từ gốc đến nút xét (hàm g(n)) Bước 1: Chọn nút bắt đầu đích kết thúc Lấy tọa độ ma (Ghost) làm điểm xuất phát start Packman game đích cần đến des Bước 2: Tìm kiếm đường sử dụng thuật toán A* while (true){ • • • Lấy danh sách chưa duyệt nút có value = curPos Gán curPos vị trí temp Nếu (temp == vị trí packman){ Đưa vị trí đích des = temp; Break; } • • Đánh dấu temp vị trí duyệt qua, tìm hướng cho curPos Nếu(!các vị trí duyệt){ Tính f(n); //với g(n) độ dài từ start đến nút xét Add vào queue; Lưu g(n), lưu hướng lưu nút trước nút xét; } while (start != vị trí tại) { Lấy vị trí nút trước nút tại; Lấy hướng nút đó;} return hướng đi; } Việc thực bước ý tưởngthuật toán code lớp GhostCoach (Xem hình 3.1) 48 H ình 3.1: Khai báo HashMap để lưu nút Hình 3.1ở tương ứng với bước bước ý tưởng thuật toán Hình 3.2: Phần code tìm kiếm nút có f(n) nhỏ theo thuật toán A* 49 Hình 3.2 phần code tìm kiếm đường tương ứng với vòng while() Bước Hình 3.3: Phần code đưa đường theo thuật toán A* Phần code hình 3.3 đưa hướng sau tìm nút vòng while() Sau frame thuật toán thực lần nhân vật Packman game di chuyển nên đích đến thay đổi vị trí Hình 3.4: Hàm đánh giá Heuristic tính khoảng cách Hamming Euclid Con ma Game di chuyển theo hướng lấy Hàm đánh giá Heuristic phần code truyền vào tham số value, vị trí xét đích (Hình 3.4) Value giá trị g(n) tính khoảng cách từ điểm nguồn đến nút tại, h(n) khoảng cách từ nút đến đích.Để tính khoảng cách h(n) hàm đánh giá Heuristic có 50 thể sử dụng theo cách tính khoảng cách Hamming tính theo khoảng cách Euclid Lấy tọa độ nút xét tọa độ đích áp dụng cách tính khoảng cách để tính h(n) Với hai điểm có tọa độ (x, y) (x’, y’), ta có: Công thức tính khoảng cách Hamming: |x – x’| + |y – y’| Công thức tính khoảng cách Euclid: 3.3 Xây dựng giao diện Game 3.3.1 Môi trường xây dựng - Công cụ: Game viết ngôn ngữ Java phần mềm Eclipse - Yêu cầu cấu hình:Hệ điều hành Window, Linux … 3.3.2 Giới thiệu giao diện Game a) Giao diện Menu vào Game: Hình 3.5: Giao diện chạy chương trình 51 Khi chạy Run() Project cửa sổ giao diện Menu hình 3.5, Menu gồm có chức Chơi game, Hướng dẫn Thoát game b) Giao diện Hướng dẫn Khi chọn Hướng dẫn Menu cửa sổ dẫn cho người chơi biết thông tin nhân vật game cách thức chơi Người chơi điều khiển nhân vật màu vàng cách phím mũi tên lên – xuống – phải – trái để ăn bóng lớn đồ Ăn hết bóng lớn góc chuyển sang khác Hình 3.6: Giao diện chọn xem Hướng dẫn c) Giao diện Chơi game 52 Hình 3.7: Hình ảnh chơi Game Khi lựa chọn chơi game, người chơi di chuyển để tránh va chạm với ma, ma đỏ di chuyển thông minh theo thuật toán A* để bắt packman người chơi Ăn bóng lớn cộng 50 điểm, ăn bóng nhỏ cộng điểm Phần điểm số thể dòng Score Khi hoàn thành nhiệm vụ ăn bóng to game cửa sổ thông báo người chơi qua cửa hỏi có muốn tiếp tục chơi hay không hình 3.8 53 Hình 3.8: Thông báo hoàn thành chơi Nếu người chơi lựa chọn Yes chuyển đến tiếp theo, lựa chọn No nhận thông báo kết thúc trò chơi hình 3.9, người chơi bấm OK cửa sổ game tắt, lúc cửa sổ Menu ban đầu d) Hình 3.9: Thông báo người chơi không chọn chơi Khi người chơi bị thua game 54 Khi người chơi bị ma đuổi kịp đụng vào ma, chương trình game thông báo với người chơi bạn bị thua đưa số điểm bạn đạt ván chơi vừa Hình 3.10: Thông báo người chơi thua game Sau nhận thông báo hình 3.10, người chơi bấm OK hỏi lựa chọn tiếp tục chơi lại hay không 55 Hình 3.11: Thông báo lựa chọn chơi tiếp hay thoát game Nếu người chơi lựa chọn chơi lại bấm Yes, sau bấm Yes cửa sổ game vừa chơi thua đóng lại cửa sổ game chơi Nếu người chơi lựa chọn không chơi lại bấm No, sau bấm No cửa sổ game đóng lại cửa sổ Menu game ban đầu e) Khi người chơi thắng game Khi hoàn thành đến cuối người chơi nhận thông báo chúc mừng hoàn thành trò chơi hình 3.12 56 Hình 3.12: Thông báo thắng game Ở đề tài game thời gian lực có hạn nên dừng lại map tương đương với game 57 KẾT LUẬN VÀ KIẾN NGHỊ KẾT LUẬN Đồ án tập trung nghiên cứu thuật toán A* việc tìm kiếm đường sử dụng hàm đánh giá f(n), từ ứng dụng thuật toán chương trình Game Nhân vật di chuyển tìm kiếm theo thuật toán A* thể linh hoạt việc tìm hướng cho tối ưu mặt thời gian Trong thời gian nghiên cứu hoàn thành báo cáo, em tìm hiểu vấn đề Lý thuyết đồ thị, lĩnh vực Trí tuệ nhân tạo Thuật toán tìm kiếm đường A*,cụ thể sau: - Hệ thống lại kiến thức tổng quan Lý thuyết đồ thị - Khái quát Trí tuệ nhân tạo lĩnh vực nghiên cứu Trí tuệ nhân tạo - Tìm hiểu thuật toán tìm kiếm A* sử dụng hàm đánh giá Heuristic f(n) áp dụng thuật toán A* vào Game KIẾN NGHỊ Do thời gian nghiên cứu có hạn, nên chương trình chưa hoàn thiện đầy đủ chức Phần mềm chưa thiết kế cách hoàn chỉnh mặt đồ họa giao diện Một số tính khác Lưu điểm, Ghi danh,… chưa đưa vào để hoàn thiện 58 HƯỚNG PHÁT TRIỂN CỦA ĐỀ TÀI Hướng phát triển đề tài xây dựng chương trình hoàn thiện chức năng, khả liên kết phần…để đưa vào sử dụng giải trí thực tế, tiếp cận với người chơi Thực tối ưu giao diện thiết kế cách khoa học, chặt chẽ Tạo nhiều đồ game, tăng mức độ khó theo chơi Xử lí âm hình ảnh đặc sắc Tối ưu hóa code, xây dựng hệ thống bảo mật tốt để Game an toàn bảo mật Trong tương lai Game xây dựng nhiều ngôn ngữ lập trình khác, liên kết mạng có thể: Chia sẻ điểm số, Ghi danh, Xếp hạng… để tăng sức hấp dẫn thêm cho Game thu hút nhiều đối tượng chơi Bên cạnh đó, việc lấy tảng cốt lõi thuật toán A* để phát triển chương trình tìm kiếm chiến lược cao có tiềm lớn Các ứng dụng tìm kiếm đồ lĩnh vực giao thông, du lịch…Hay chương trình hoạt động di chuyển tìm đường an toàn tối ưu Robot không gian định… Nếu tích lũy đủ lực kinh nghiệm việc phát triển ứng dụng nêu thuật toán tìm kiếm A* nói riêng thuật toán tìm kiếm nói chung có ý nghĩa lớn Tổng kết, có nhiều hạn chế việc tìm hiểu xây dựng chương trình với kết đạt giúp em có thêm khả nghiên cứu trí tuệ nhân tạo vànâng cao trình độ lập trình với ngôn ngữ Java Tìm tòi nguồn tài liệu nước nước kiến thức hỗ trợ cho đề tài, học hỏi kỹ xử lý đồ họa game, cách thức mô thuật toán tìm kiếm vào code, triển khai thuật toán ứng dụng cụ thể… 59 Từ tích lũy thời gian làm đề tài hướng tới việc phát xây dựng ứng dụng với nhiều chức năng, tiện ích phong phú sau Chương trình game tiếp tục phát triển hướng tới trò chơi giải trí nhiều phiêu lưu, gay cấn qua chơi có đầy đủ chức cần thiết cho trò chơi 60 TÀI LIỆU THAM KHẢO [1] Đặng Nguyễn Đức Tiến, 2009, Giáo trình Lý thuyết đồ thị, Trường Đại học Khoa học Tự nhiên Thành Phố Hồ Chí Minh [2] Nguyễn Nhật Quang, 2010, Bài giảng Trí tuệ nhân tạo, Trường Đại học Bách Khoa Hà Nội [3] R.E Bellman, 1978, An Introduction to Artificial Intelligence: Can Computers Think? [4] R.Kurzweil, 1990, The Age of Intelligent Machines [5] E.Rich and K Knight, 1991, Artigicial Intelligence, Second Edition [6] P H Winston, 1992, Artigicial Intelligence, Third Edition [7] Wichit Sombat, 2012 The Making of Packman - design/make the maze, http://youtube.com/watch?v=Q11X6aaaESM [8] Trần Minh Luân, 2014 Hướng dẫn code thuật toán để tìm đường mê cung, http://diendan.congdongcviet.com/threads/t203930::huongdan-code-thuat-toan-a-de-tim-duong-trong-me-cung.cpp [9] Một số hình ảnh đồ họa game lấy từ Google Code Archive Paul- gramming/downloads Gramming, https://code.google.com/archive/p/paul- ... TRƯỜNG ĐẠI HỌC TÀI NGUYÊN VÀ MÔI TRƯỜNG HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN SINH VIÊN: NGUYỀN THỊ MY LINH LẬP TRÌNH GAME ỨNG DỤNG THUẬT TOÁN A* Chuyên ngành : Người hướng dẫn : Thạc sỹ Vũ Văn Huân... hợp lệ, vi phạm quy chế nhà trường, em xin hoàn toàn chịu trách nhiệm Sinh viên thực Nguyễn Thị My Linh LỜI CẢM ƠN Trong suốt trình học tập Trường Đại Học Tài Nguyên Môi Trường Hà Nội, chúng em... góp ý chân thành từ thầy, cô giáo tất bạn Em xin chân thành cảm ơn! Sinh viên thực Nguyễn Thị My Linh MỤC LỤC DANH MỤC CÁC CHỮ VIẾT TẮT Chữ viết tắt AI TTNT Tên tiếng anh Artificial intelligence

Ngày đăng: 03/07/2017, 14:56

Mục lục

  • LỜI CẢM ƠN

  • DANH MỤC CÁC CHỮ VIẾT TẮT

  • PHẦN MỞ ĐẦU

    • 1. Tính cấp thiết của đề tài

    • 2. Tổng quan về đề tài nghiên cứu

    • 3. Mục đích nghiên cứu

    • 4. Đối tượng nghiên cứu và phạm vi nghiên cứu

    • 5. Phương pháp nghiên cứu

    • 6. Những đóng góp của báo cáo

    • 7. Kết cấu của báo cáo

    • Đồ thị (Graph) là một cấu trúc rời rạc gồm các đỉnh và các cạnh nối các đỉnh đó. Đồ thị được ký hiệu là G = (V,E), trong đó:

    • V là tập đỉnh (vertex)

    • E ⊆ V x V là tập hợp các cạnh (edge)

      • Hình 1.1 : Một số hình ảnh của đồ thị

      • Hình 1.5: Đồ thị có hướng

      • 1.1.2. Biểu diễn đồ thị trên máy tính

      • Biểu diễn bằng danh sách kề có hai cách như sau:

      • int ke[MAX][MAX];

      • int sodinhke[MAX];

        • Bảng 1.1 : Tóm tắt đồ thị G

          • Hình 1.7: Minh họa mảng 2 chiều lưu đỉnh kề và mảng 1 chiều lưu số phần tử

          • Cách 2:

            • Hình 1.8: Minh họa biểu diễn bằng danh sách liên kết

            • Quy ước = 0 với ∀i. Đối với đa đồ thị thì việc biểu diễn cũng tương tự trên, chỉ có điều nếu như (i, j) là cạnh thì không phải ta ghi số 1 vào vị trí mà là ghi số cạnh nối giữa đỉnh i và đỉnh j.

              • Hình 1.9: Biểu diễn đồ thị dưới dạng ma trận kề

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

Tài liệu liên quan