1. Trang chủ
  2. » Giáo Dục - Đào Tạo

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

56 906 2

Đ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

Cấu trú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. 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

  • CHƯƠNG 1: TỔNG QUAN VỀ CƠ SỞ LÝ THUYẾT

    • 1.1. Tổng quan về lý thuyết đồ thị

      • 1.1.1. Định nghĩa

  • Lý thuyết đồ thị là một lĩnh vực đã có từ lâu và có nhiều ứng dụng hiện đại. Những tư tưởng cơ bản của lý thuyết đồ thị được đề xuất vào những năm đầu của thế kỷ 18 bởi nhà toán học lỗi lạc người Thụy Sỹ Lenhard Eurler. Chính ông là người đã sử dụng đồ thị để giải bài toán nổi tiếng về các cây cầu ở thành phố Konigsberg.

  • Năm 1852 Francis Guthrie đưa ra bài toán bốn màu về vấn đề liệu chỉ với bốn màu có thể tô màu một bản đồ bất kì sao cho không có hai nước nào cùng biên giới được tô cùng màu. Bài toán này được xem như đã khai sinh ra lý thuyết đồ thị và chỉ được giải sau một thế kỷ vào năm 1976 bởi Kennenth Appel và Wolfgang Haken.

  • Trong toán học và tin học, lý thuyết đồ thị (Graph Theory) nghiên cứu các tính chất của đồ thị (Graph). Một cách không chính thức, đồ thị là một tập các đối tượng được gọi là các đỉnh (hoặc nút) nối với nhau bởi các cạnh (hoặc cung). Cạnh có thể có hướng hoặc vô hướng. Đồ thị thường được vẽ dưới dạng một tập các điểm (các đỉnh) nối với nhau bằng các đoạn thẳng (các cạnh).

  • Đồ 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.2: Đơn đồ thị

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

  • Để lưu trữ đồ thị và thực hiện các thuật toán khác nhau với đồ thị trên máy tính cần phải tìm những cấu trúc dữ liệu thích hợp để mô tả đồ thị. Việc chọn cấu trúc dữ liệu nào để biểu diễn đồ thị có tác động rất lớn đến hiệu quả của thuật toán. Vì vậy, việc chọn lựa cấu trúc dữ liệu để biểu diễn đồ thị phụ thuộc vào từng tình huống cụ thể (bài toán và thuật toán cụ thể).

  • Dưới đây là ba phương pháp biểu diễn đồ thị trên máy tính cơ bản:

    • Hình 1.6: Đồ thị G

  • Xét theo đồ thị G, ta có bảng tóm tắt như Bảng 1.1:

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

  • Cách 1:

  • Sử dụng một ma trận (mảng 2 chiều) và một dữ liệu là mảng một chiều.

  • int ke[MAX][MAX];

  • int sodinhke[MAX];

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

  • Trong đó mảng 2 chiều sẽ lưu những đỉnh kề và cần có số đỉnh kề để biết với mỗi đỉnh như vậy thì số đỉnh kề là bao nhiêu. Chẳng hạn như hình đồ thị cho ở trên, ta cần một ma trận gồm có 5 dòng và 3 cột ( 5 x 3), số dòng tương ứng với số đỉnh của đồ thị, ma trận sẽ lưu số đỉnh kề của đỉnh đó. Mảng này chỉ lưu các cạnh kề của từng đỉnh nền ta tự hiểu từ trên xuống lần lượt là các đỉnh a, b, c, d, e.

    • 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

  • Giả sử G = (V, E) là một đơn đồ thị có số đỉnh. Không mất tính tổng quát có thể coi các đỉnh được đánh số 1, 2, ..., n. Khi đó ta có thể biểu diễn đồ thị bằng một ma trận vuông A = [] cấp n. Trong đó:

  • 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ề

    • Hình 1.10: Đồ thị G với các cạnh e

    • Bảng 1.2: Biểu diễn đồ thị dưới dạng ma trận liên thuộc

    • 1.1.3. Ý nghĩa của lý thuyết đồ thị

  • Lý thuyết đồ thị là ngành khoa học xuất hiện từ lâu nhưng có nhiều ứng dụng hiện đại, có vị trí quan trọng của mình trong việc áp dụng để giải các bài toán thực tế nhờ vào việc áp dụng các định lý, công thức và thuật toán. Một bộ phận quan trọng của lý thuyết đồ thị là dạng bài toán Tìm kiếm đường đi, được hình thành và có nhiều thuật toán giải quyết khác nhau đưa ra kết quả phù hợp với từng bài toán.

  • Với sự xuất hiện của nhiều của các hệ thống mạng như: hệ thống mạng điện, mạng sản xuất, mạng lưới giao thông, mạng Internet… đã làm nảy sinh ra các nhu cầu vận chuyển các chất liệu trên các mạng này sao cho đạt hiệu quả cao nhất, chất liệu ở đây có thể là dòng điện, dữ liệu, hàng hóa…; hiệu quả ở đây có thể xét theo tiêu chuẩn về thời gian, độ dài quãng đường, chi phí và độ an toàn... Vậy nên các bài toán Tìm kiếm đường đi nói riêng và các bài toán đồ thị nói chung có vai trò quan trọng trong các ngành khoa học hiện đại, nó giúp giải quyết các bài toán luồng hiệu quả và tối ưu hơn, đem lại nhiều ứng dụng thực tiễn, đảm bảo các yêu cầu thời gian, chi phí, tiền bạc… được tốt hơn.

    • 1.2. Tổng quan về trí tuệ nhân tạo

      • 1.2.1. Định nghĩa trí tuệ nhân tạo

  • Trí tuệ nhân tạo là trí thông minh của máy do con người tạo ra. Ngay từ khi chiếc máy tính điện tử đầu tiên ra đời, các nhà khoa học máy tính đã hướng đến phát hiển hệ thống máy tính (gồm cả phần cứng và phần mềm) sao cho nó có khả năng thông minh như loài người. Mặc dù cho đến nayước mơ này vẫn còn xa mới thành hiện thực, tuy vậy những thành tựu đạt được cũng không hề nhỏ: chúng ta đã làm được các hệ thống (phần mềm chơi cờ vua chạy trên siêu máy tinh GeneBlue) có thể thắng được vua cờ thế giới; chúng ta đã làm được các phần mềm có thể chứng minh được các bài toán hình học; các loại Robot xử lý dữ liệu thông minh... Hay nói cách khác, trong một số lĩnh vực, máy tính có thể thực hiện tốt hơn hoặc tương đương con người (tất nhiên không phải tất cả các lĩnh vực). Đó chính là các hệ thống thông minh. Có nhiều cách tiếp cận để làm ra trí thông minh của máy (hay là trí tuệ nhân tạo), chẳng hạn là nghiên cứu cách bộ não người sản sinh ra trí thông minh của loài người như thế nào rồi ta bắt chước nguyên lý đó, nhưng cũng có những cách khác sử dụng nguyên lý hoàn toàn khác với cách sản sinh ra trí thông minh của loài người mà vẫn làm ra cái máy thông minh như hoặc hơn người; cũng giống như máy bay hiện nay bay tốt hơn con chim do nó có cơ chế bay không phải là giống như cơ chế bay của con chim. Như vậy, trí tuệ nhân tạo ở đây là nói đến khả năng của máy khi thực hiện các công việc mà con người thường phải xử lý; và khi dáng vẻ ứng xử hoặc kết quả thực hiện của máy là tốt hơn hoặc tương đương với con người thì ta gọi đó là máy thông minh hay máy đó có trí thông minh. Hay nói cách khác, đánh giá sự thông minh của máy không phải dựa trên nguyên lý nó thực hiện nhiệm vụ đó có giống cách con người thực hiện hay không mà dựa trên kết quả hoặc dáng vẻ ứng xử bên ngoài của nó có giống với kết quả hoặc dáng vẻ ứng xử của con người hay không.

    • 1.2.2. Các nền tảng của trí tuệ nhân tạo

    • 1.2.3. Các lĩnh vực trong trí tuệ nhân tạo

  • Khái niệm lập luận (reasoning) và suy diễn (reference) được sử dụng rất phổ biến trong lĩnh vực AI. Lập luận là suy diễn logic, dùng để chỉ một tiến trình rút ra kết luận (tri thức mới) từ những giả thiết đã cho (được biểu diễn dưới dạng cơ sở tri thức). Như vậy, để thực hiện lập luận người ta cần có các phương pháp lưu trữ cơ sở tri thức và các thủ tục lập luận trên cơ sở tri thức đó.

  • Muốn máy tính có thể lưu trữ và xử lý tri thức thì cần có các phương pháp biểu diễn tri thức. Các phương pháp biểu diễn tri thức ở đây bao gồm các ngôn ngữ biểu diễn và các kỹ thuật xử lý tri thức. Một ngôn ngữ biểu diễn tri thức được đánh giá là “tốt” nếu nó có tính biểu đạt cao và các tính hiệu quả của thuật toán lập luận trên ngôn ngữ đó. Tính biểu đạt của ngôn ngữ thể hiện khả năng biểu diễn một phạm vi rộng lớn các thông tin trong một miền ứng dụng. Tính hiệu quả của các thuật toán lập luận thể hiện chi phí về thời gian và không gian dành cho việc lập luận. Tuy nhiên, hai yếu tố này dường như đối nghịch nhau, tức là nếu ngôn ngữ có tính biểu đạt cao thì thuật toán lập luận trên đó sẽ có độ phức tạp lớn (tính hiệu quả thấp) và ngược lại (ngôn ngữ đơn giản, có tính biểu đạt thấp thì thuật toán lập luận trên đó sẽ có hiệu quả cao). Do đó, một thách thức lớn trong lĩnh vực AI là xây dựng các ngôn ngữ biểu diễn tri thức mà có thể cân bằng hai yếu tố này, tức là ngôn ngữ có tính biểu đạt đủ tốt (tùy theo từng ứng dụng) và có thể lập luận hiệu quả.

  • Học máy (machine learning) là một lĩnh vực nghiên cứu của AI đang được phát triển mạnh mẽ và có nhiều ứng dụng trong các lĩnh vực khác nhau như khai phá dữ liệu, khám phá tri thức,…

  • Đây là một lĩnh vực của trí tuệ nhân tạo liên quan đến việc nghiên cứu và xây dựng các kĩ thuật cho phép các hệ thống "học" tự động từ dữ liệu để giải quyết những vấn đề cụ thể. Ví dụ như các máy có thể "học" cách phân loại thư điện tử xem có phải thư rác (spam) hay không và tự động xếp thư vào thư mục tương ứng. Học máy rất gần với suy diễn thống kê (statistical inference) tuy có khác nhau về thuật ngữ.

  • Học máy có liên quan lớn đến thống kê, vì cả hai lĩnh vực đều nghiên cứu việc phân tích dữ liệu, nhưng khác với thống kê, học máy tập trung vào sự phức tạp của các giải thuật trong việc thực thi tính toán. Nhiều bài toán suy luận được xếp vào loại bài toán NP-khó, vì thế một phần của học máy là nghiên cứu sự phát triển các giải thuật suy luận xấp xỉ mà có thể xử lý được.

  • Học máy có hiện nay được áp dụng rộng rãi bao gồm máy truy tìm dữ liệu, chẩn đoán y khoa, phát hiện thẻ tín dụng giả, phân tích thị trường chứng khoán, phân loại các chuỗi DNA, nhận dạng tiếng nói và chữ viết, dịch tự động, chơi trò chơi và cử động rô-bốt (robot locomotion).

  • 1.2.4. Các thành tựu nổi bật của trí tuệ nhân tạo hiện nay

  • a) Xử lý ngôn ngữ tự nhiên

  • Nổi lên gần đây nhất là Watson - một hệ thống máy tính có khả năng trả lời các câu hỏi nêu ra bằng ngôn ngữ tự nhiên. Cùng với hệ thống machine learning ưu việt, trí tuệ nhân tạo Watson được giao nhiệm vụ xử lý tất cả các nhu cầu về phân tích dữ liệu lớn cho các tổ chức, doanh nghiệp,… qua nền tảng mở IBM Watson Analytics. Tức là con người có thể giao tiếp với siêu máy tính này bằng ngôn ngữ nói bình thường, được trả về bằng các câu trả lời như con người thật.

  • Đỉnh cao của khả năng này là Watson – trong Game show Jeopardy! – một trò chơi đưa ra các câu trả lời gợi ý và yêu cầu người chơi phải đoán câu hỏi hợp lý cho chúng. Tháng 2 năm 2010, Watson đã có thể thường xuyên giành phần thắng trước người chơi Jeopardy, thậm chí còn thắng được cả giải thưởng lớn 1 triệu USD.

  • Các AI của Apple hay Google qua sự thể hiện của Siri hay Google Dịch, Google tìm kiếm bằng giọng nói… cũng có thể thực hiện được điều này, dù vẫn có những sai sót nhưng trải nghiệm của người dùng vẫn cảm thấy vô cùng thú vị với việc tương tác này.

  • b) Đưa ra ý kiến và phương hướng chữa bệnh

  • Ngoài khả năng xử lý ngôn ngữ tự nhiên một cách chính xác, Waston còn là một cỗ máy đưa ra ý kiến và phương hướng chữa bệnh trong vài giây. Báo chí không ngớt lời ca ngợi “bác sỹ” Watson về chiến tích cứu sống một bệnh nhân Nhật qua việc tìm ra chứng ung thư máu hiếm gặp ở bà sau khi các bác sỹ bằng xương bằng thịt đã bó tay. Chưa hết, hàng loạt các bệnh viện tại Thái Lan, Ấn Độ và Trung Quốc cũng đang bắt đầu đồng bộ sâu Watson vào các hệ thống máy tính của mình để phục vụ cho công tác chẩn đoán và điều trị. Sau khi thu thập và phân tích hết các dữ liệu bệnh án (có thể duyệt cùng lúc 1,5 triệu bệnh án), các kết quả xét nghiệm cũng như các nghiên cứu trước đây trên toàn cầu, Watson đưa ra ý kiến và gợi ý phương hướng cứu chữa chỉ sau vài giây.

  • c) Xử lý dữ liệu không có cấu trúc, dữ liệu Big data

  • Cứ mỗi năm lượng dữ liệu của nhân loại lại tăng lên gấp đôi, việc này đòi hỏi những siêu máy tính có khả năng xử lý dữ liệu phức tạp và tốc độ. Giờ đây các cỗ máy trí tuệ nhân tạo hoàn toàn có khả năng “hấp thụ” và “tiêu hóa” mọi loại dữ liệu, từ cấu trúc (structured data – các thuộc tính được định nghĩa sẵn như họ tên, giới tính,…) cho đến phi cấu trúc (unstructured data – dạng tự do và không có cấu trúc định sẵn như dữ liệu văn bản, tập tin video, hình ảnh, âm thanh,…) đến từ mọi nguồn được đăng tải hoặc có khả năng tiếp cận được thông qua loạt giao diện lập trình ứng dụng của hệ thống Watson. Đó là AI với tên gọi Lucy của công ty Equals 3 hay IBM Watson của IBM

  • d) Trí tuệ nhân tạo chiến thắng các game khó

  • AlphaGo, phần mềm trí tuệ nhân tạo do Deepmind, công ty con của Google xây dựng đã đánh bại nhà vô địch cờ vây thế giới Lee Se-dol trong ván đấu cuối cùng để giành chiến thắng áp đảo 4-1 trong môn thể thao trí tuệ được đánh giá là phức tạp nhất lịch sử.

  • Ngoài ra còn có Arnold – AI nhân tạo này được phát triển bởi Guillaume Lample và Devendra Chaplot, “Arnold” sử dụng hệ thống nơ ron nhân tạo không khác chút so với hệ thống giúp trí tuệ nhân tạo DeepMind của Google học chơi game trên máy Atari. Thay vì dạy AI học cách làm quen với game như một con người, Lample và Chaplot chỉ dạy “Arnold” chơi Doom bằng cách phản ứng trước những vật thể di chuyển trên màn hình. Và đó cũng chính là lý do khiến cho AI này chỉ chơi được Deathmatch, nơi mỗi game thủ phải chiến đấu cho bản thân mình, gặp ai cũng phải bắn chứ không thể chơi Team Deathmatch vì nó có thể sẽ hạ gục hết đồng đội trước khi kịp nhìn thấy đối thủ.

  • e) Nhận dạng giọng nói và khuôn mặt

  • Một nhóm nghiên cứu của Microsoft vừa lập kỷ lục nhận dạng giọng nói với tỷ lệ lỗi thấp nhất chỉ 6,3%, vượt qua kỷ lục 6,9% đang được trí tuệ nhân tạo Watson của IBM nắm giữ.

  • Với tiến bộ này, Microsoft đang ngày càng tiến gần hơn tới viễn cảnh tạo ra một máy tính có khả năng hiểu được lời nói và con người. Bên cạnh đó, nó còn giúp Microsoft cung cấp dịch vụ trò chuyện qua các công nghệ như Cortana, Skype Translator và những dịch vụ nhận dạng ngôn ngữ khác.

  • Các chương trình nhận dạng khuôn mặt cũng được phát triển rất mạnh. Các nhà nghiên cứu tại Đại học Texas và Cornell (Mỹ) cho biết việc che những chi tiết cần bảo mật như khuôn mặt, biển số xe… sẽ sớm lạc hậu vì ứng dụng hiện đại sẽ giải mã được ảnh gốc. Sử dụng công cụ học sâu (deep learning), phần mềm AI xác định được 71% các khuôn mặt và chữ số. Tỷ lệ này tăng lên tới 83% nếu máy tính được phép đoán 5 lần. Trong khi đó, khả năng nhận diện của con người chỉ đạt 0,2%. Dù thuật toán không khôi phục được ảnh gốc, nó có thể dựng lại hình ảnh tương tự dựa trên những gì nó nhìn thấy.

  • Năm 2016 hãng công nghệ Samsung đã ra mắt điện thoại Samsung Note 7 có cảm biến quét mống mắt để tăng tính bảo mật cho các dữ liệu bên trong điện thoại. Hệ thống sẽ quét mống mắt của người sử dụng, chuẩn hóa và mã hóa lại thành một loại dữ liệu như một loại ID. Khi cần truy cập máy thì người sử dụng sẽ đưa mống mắt mình ra quét, nếu hợp lệ với ID thì sẽ được phép truy cập.

  • Rất nhiều hãng công nghệ nổi tiếng có tham vọng tạo ra được những AI vì giá trị của chúng là vô cùng lớn, giải quyết được rất nhiều vấn đề của con người mà loài người đang chưa giải quyết được. Trí tuệ nhân tạo mang lại rất nhiều giá trị cho cuộc sống loài người, nhưng cũng tiềm ẩn những nguy cơ. Nhiều chuyên gia lo lắng rằng khi trí tuệ nhân tạo đạt tới một ngưỡng tiến hóa nào đó thì đó cũng là thời điểm loài người bị tận diệt. Dự báo cho rằng từ 5 đến 10 năm nữa, ngành khoa học này sẽ phát triển lên tới đỉnh cao. Hãy cùng chờ đợi những thành tựu mới nhất của loài người về lĩnh vực này.

    • 1.3. Giới thiệu về thuật toán A*

      • 1.3.1. Sơ lược các bài toán tìm đường đi ngắn nhất

  • Trong các ứng dụng thực tế, bài toán tìm đường đi ngắn nhất giữa hai đỉnh của một đồ thị liên thông có một ý nghĩa to lớn, có thể dẫn về bài toán như vậy nhiều bài toán thực tế quan trọng. Ví dụ, bài toán chọn một hành trình tiết kiệm nhất (theo tiêu chuẩn hoặc khoảng cách hoặc thời gian hoặc chi phí) trên một mạng giao thông đường bộ, đường thủy,… hay bài toán chọn một phương pháp tiết kiệm nhất để đưa ra một hệ thống động lực từ trạng thái xuất phát đến trạng một trạng thái đích, bài toán lập lịch thi công các công các công đoạn trong một công trình thi công lớn, bài toán lựa chọn đường truyền tin với chi phí nhỏ nhất trong mạng thông tin… Có rất nhiều phương pháp để giải các bài toán như vậy. Thế nhưng thông thường, các thuật toán được xây dựng dựa trên cơ sở lý thuyết đồ thị tỏ ra là các thuật toán có hiệu quả cao nhất.

    • 1.3.2. Thuật toán A*

  • Thuật toán A* được mô tả lần đầu tiên năm 1986 bởi Peter Hart, Nils Nilso và Bertram Raphael. Trong báo cáo của họ, thuật toán được gọi là thuật toán A, khi sử dụng thuật toán này với một hàm đánh giá Heuristic thích hợp sẽ thu được hoạt động tối ưu, do đó mà có tên là thuật toán A*.

  • Trong khoa học máy tính, A* là một thuật toán tìm kiếm trong đồ thị. Thuật toán này tìm một đường đi từ nút khởi đầu tới một nút đích cho trước (hoặc tới một nút thỏa mãn điều kiện đích). Thuật toán sử dụng một đánh giá Heuristic để xếp loại từng nút theo ước lượng về tuyến đường tốt nhất đi qua nút đó. Thực hiện duyệt các nút theo thứ tự của đánh giá Heuristic này. Hàm đánh giá Heuristic là các hàm đánh giá thô, giá trị của hàm phụ thuộc vào trạng thái hiện tại của bài toán tại mỗi bước giải, đánh giá chi phí để đi từ nút hiện tại n đến nút đích (mục tiêu). Nhờ giá trị này, ta có thể chọn được cách hành động tương đối hợp lý trong từng bước của thuật giải. Do đó, thuật toán A* là một ví dụ của tìm kiếm theo lựa chọn tốt nhất (best-first search).

    • Hình 1.12: Cây đồ thị tìm kiếm đường đi từ Arad đến Bucharest

    • Hình 1.13: Xuất phát bắt đầu từ Arad

    • Hình 1.14: Từ Arad duyệt đến Sibi

    • Hình 1.15: Từ Sibi duyệt đến Rimin

    • Hình 1.16: Từ Rimin quay về Fagar

    • Hình 1.17: Từ Fagar đi đến Pite

  • CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG

    • 2.1. Phân tích yêu cầu

      • 2.1.1. Bài toán

  • Game được xây dựng dành cho 1 người chơi. Người chơi sẽ điều khiển một nhân vật màu vàng. Đội địch gồm 4 con ma do 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 các con ma để không bị thua.

  • Người chơi sẽ điều khiển nhân vật của mình đi ăn những quả bóng to (Power Pills) trong map. Ăn những quả bóng nhỏ trên đường đi giúp cho người chơi tăng được số điểm của mình. Khi người chơi ăn được hết 4 quả bóng to trong map thì sẽ được chuyển sang màn khác với một map khác. Mỗi lần ăn quả bóng to người chơi sẽ được cộng 50 điểm, ăn các quả bóng nhỏ thì được cộng 5 điểm. Game Over khi trong màn chơi nhân vật của người chơi bị con ma ăn.

    • 2.1.2. Mục tiêu cần đạt

    • 2.2. Phân tích hệ thống thông tin

      • 2.2.1. Xác định tác nhân và các chức năng của chương trình

  • Chương trình gồm có 3 chức năng chính là Chơi mới, Hướng dẫn và Thoát game.

    • Bảng 2.1: Bảng các chức năng của chương trình

    • 2.2.2. Biểu đồ Use Case tổng quát

      • Hình 2.1: Biểu đồ Use Case tổng quát

    • 2.2.3. Biểu đồ tuần tự

      • Hình 2.2: Biểu đồ tuần tự chức năng chơi mới

      • Hình 2.3 : Biểu đồ tuần tự chức năng xem hướng dẫn

    • 2.2.4. Biểu đồ hoạt động

      • Hình 2.4: Biểu đồ hoạt động của chương trình game

  • CHƯƠNG 3: XÂY DỰNG CHƯƠNG TRÌNH GAME ỨNG DỤNG THUẬT TOÁN A*

    • 3.1. Giới thiệu về chương trình Game

  • Lấy ý tưởng từ game Pacman cổ điển của hãng Namco Bandai - Nhật Bản phát hành trên các máy game thùng từ năm 1980. Pacman nổi tiếng với hình ảnh sinh vật miệng rộng màu vàng, lạc vào mê cung để đi tìm báu vật. Đề tài thực hiện dựa trên ý tưởng của game Pacman và áp thuật toán tìm kiếm A* để đưa ra lựa chọn đường đi cho nhân vật Ghost. Nhân vật Ghost sẽ di chuyển theo thuật toán A* để đuổi theo bắt nhân vật Pacman do người chơi điều khiển.

  • Như đã giới thiệu ở Chương 2 (Mục 2.1.1, Trang 24), Game được xây dựng dành cho 1 người chơi. Người chơi sẽ điều khiển một nhân vật tròn màu vàng. Đội địch gồm 4 con ma do 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 các con ma để không bị thua.

  • Người chơi sẽ điều khiển nhân vật của mình đi ăn những quả bóng to (Power Pills) trong map. Ăn những quả bóng nhỏ trên đường đi giúp cho người chơi tăng được số điểm. Khi người chơi ăn được hết 4 quả bóng to trong map thì sẽ được chuyển sang màn khác với một map khác.. Game kết thúc khi trong màn chơi, nhân vật của đội người chơi bị quái vật ăn hoặc khi chơi hết 4 màn.

  • Ở trò chơi này, con ma di chuyển để bắt nhân vật của người chơi nên con ma sẽ sử dụng thuật toán để tìm kiếm được nhân vật của người chơi nhanh nhất. Tuy nhiên vì số lượng con ma nhiều (4 con ma đấu với 1 người chơi), nếu tất cả đều di chuyển tấn công người chơi theo thuật toán A* thì sẽ gây khó khăn lớn cho người chơi. Vậy nên trò chơi này sẽ xây dựng chỉ một con ma màu đỏ di chuyển theo thuật toán A* và 3 con ma còn lại di chuyển theo ngẫu nhiên để phù hợp hơn.

    • 3.2. Áp dụng thuật toán A* vào Game

  • Ý tưởng thuật toán

  • Việc thực hiện các bước ý tưởng thuật toán được code ở trong lớp GhostCoach. (Xem hình 3.1).

    • Hình 3.1: Khai báo HashMap để lưu các nút

    • Hình 3.1 ở trên tương ứng với bước 0 và bước 1 trong ý tưởng thuật toán. Hình 3.2: Phần code tìm kiếm các nút có f(n) nhỏ nhất theo thuật toán A*

    • Hình 3.3: Phần code đưa ra đường đi theo thuật toán A*

  • Phần code ở hình 3.3 đưa ra các hướng đi sau khi tìm được các nút ở vòng while() đầu tiên. Sau một frame thuật toán sẽ thực hiện một lần vì nhân vật Packman trong game luôn di chuyển nên đích đến luôn thay đổi vị trí của nó.

    • Hình 3.4: Hàm đánh giá Heuristic tính khoảng cách Hamming và Euclid

  • Con ma trong Game sẽ di chuyển theo các hướng đi đã lấy được này. Hàm đánh giá Heuristic trong phần code truyền vào 3 tham số là value, vị trí đang xét và đích (Hình 3.4). Value chính là giá trị g(n) được tính bằng khoảng cách từ điểm nguồn đến nút hiện tại, h(n) chính là khoảng cách từ nút hiện tại đến đích. Để tính được khoảng cách h(n) trong hàm đánh giá Heuristic thì có thể sử dụng theo 2 cách đó là tính khoảng cách Hamming hoặc tính theo khoảng cách Euclid. Lấy tọa độ của nút đang xét và tọa độ của đích hiện tại rồi áp dụng 1 trong 2 cách tính khoảng cách kia để tính h(n).

  • 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

      • 3.3.2. Giới thiệu về giao diện của Game

        • Hình 3.5: Giao diện chính khi chạy chương trình

  • Khi chạy Run() trong Project sẽ hiện ra cửa sổ giao diện Menu chính như hình 3.5, Menu gồm có 3 chức năng chính là Chơi game, Hướng dẫn và Thoát game.

  • Khi chọn Hướng dẫn trong Menu sẽ hiện ra một cửa sổ mới chỉ dẫn cho người chơi biết các thông tin nhân vật trong game và cách thức chơi. Người chơi sẽ điều khiển nhân vật màu vàng bằng cách các phím mũi tên lên – xuống – phải – trái để ăn các quả bóng lớn trong bản đồ. Ăn hết 4 quả bóng lớn ở 4 góc sẽ được chuyển sang màn khác.

    • Hình 3.6: Giao diện khi chọn xem Hướng dẫn

    • Hình 3.7: Hình ảnh màn chơi đầu tiên trong Game

  • Khi lựa chọn chơi game, người chơi sẽ di chuyển để tránh va chạm với các con ma, con ma đỏ di chuyển thông minh nhất vì nó đi theo thuật toán A* để bắt con packman của người chơi. Ăn 1 quả bóng lớn sẽ được cộng 50 điểm, ăn 1 quả bóng nhỏ sẽ được cộng 5 điểm. Phần điểm số thể hiện ở dòng Score.

  • Khi hoàn thành nhiệm vụ ăn 4 quả bóng to trong một màn game sẽ hiện ra một cửa sổ thông báo rằng người chơi đã qua được cửa hiện tại và hỏi rằng có muốn tiếp tục chơi màn tiếp theo hay không như hình 3.8.

    • Hình 3.8: Thông báo khi hoàn thành một màn chơi

  • Nếu người chơi lựa chọn Yes thì sẽ chuyển đến màn tiếp theo, nếu lựa chọn No thì sẽ nhận thông báo kết thúc trò chơi như ở hình 3.9, người chơi bấm OK và cửa sổ game sẽ tắt, lúc này chỉ còn cửa sổ Menu ban đầu.

    • Hình 3.9: Thông báo khi người chơi không chọn chơi màn tiếp theo

  • Khi người chơi bị con ma đuổi kịp hoặc đụng vào con ma, chương trình game sẽ thông báo với người chơi rằng bạn đã bị thua và đưa ra số điểm bạn đã đạt được trong ván chơi vừa rồi.

    • Hình 3.10: Thông báo khi người chơi thua game

  • Sau khi nhận được thông báo như hình 3.10, người chơi bấm OK sẽ được hỏi lựa chọn tiếp tục chơi lại hay không.

    • 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 sẽ bấm Yes, sau khi bấm Yes cửa sổ game vừa chơi thua sẽ đóng lại và một cửa sổ game chơi mới sẽ hiện ra. Nếu người chơi lựa chọn không chơi lại sẽ bấm No, sau khi bấm No cửa sổ game đóng và chỉ còn lại mỗi cửa sổ Menu game ban đầu.

  • Khi hoàn thành đến màn cuối cùng người chơi sẽ nhận được thông báo chúc mừng đã hoàn thành trò chơi như hình 3.12.

  • KẾT LUẬN VÀ KIẾN NGHỊ

  • Đồ án đã tập trung nghiên cứu về thuật toán A* trong việc tìm kiếm đường đi sử dụng hàm đánh giá f(n), từ đó ứng dụng thuật toán trong chương trình Game. Nhân vật di chuyển tìm kiếm theo thuật toán A* đã thể hiện được sự linh hoạt trong việc tìm hướng đi sao cho tối ưu về mặt thời gian.

  • Trong thời gian nghiên cứu và hoàn thành báo cáo, em đã tìm hiểu được những vấn đề cơ bản của Lý thuyết đồ thị, các lĩnh vực trong Trí tuệ nhân tạo và Thuật toán tìm kiếm đường đi A*, cụ thể như sau:

  • Do thời gian nghiên cứu có hạn, nên chương trình vẫn chưa được hoàn thiện đầy đủ các chức năng.

  • Phần mềm chưa được thiết kế một cách hoàn chỉnh về mặt đồ họa và giao diện. Một số tính năng khác như Lưu điểm, Ghi danh,… vẫn chưa được đưa vào để hoàn thiện hơn.

  • HƯỚNG PHÁT TRIỂN CỦA ĐỀ TÀI

  • TÀI LIỆU THAM KHẢO

  • [8] Trần Minh Luân, 2014. Hướng dẫn code thuật toán để tìm đường trong mê cung, http://diendan.congdongcviet.com/threads/t203930::huong-dan-code-thuat-toan-a-de-tim-duong-trong-me-cung.cpp

Nội dung

MỤC LỤC LỜI CAM ĐOAN LỜI CẢM ƠN MỤC LỤC DANH MỤC HÌNH DANH MỤC BẢNG PHẦN MỞ ĐẦU 1 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 5 1.1.3. Ý nghĩa của lý thuyết đồ thị 9 1.2. Tổng quan về trí tuệ nhân tạo 10 1.2.1. Định nghĩa trí tuệ nhân tạo 10 1.2.2. Các nền tảng của trí tuệ nhân tạo 12 1.2.3. Các lĩnh vực trong trí tuệ nhân tạo 13 1.3. Giới thiệu về thuật toán A 17 1.3.1. Sơ lược các bài toán tìm đường đi ngắn nhất 17 1.3.2. Thuật toán A 18 CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 26 2.1. Phân tích yêu cầu 26 2.1.1. Bài toán 26 2.1.2. Mục tiêu cần đạt 26 2.2. Phân tích hệ thống thông tin 26 2.2.1. Xác định tác nhân và các chức năng của chương trình 26 2.2.2. Biểu đồ Use Case tổng quát 27 2.2.3. Biểu đồ tuần tự 28 2.2.4. Biểu đồ hoạt động 29 CHƯƠNG 3: XÂY DỰNG CHƯƠNG TRÌNH GAME ỨNG DỤNG THUẬT TOÁN A 31 3.1. Giới thiệu về chương trình Game 31 3.2. Áp dụng thuật toán A vào Game 32 3.3. Xây dựng giao diện Game 34 3.3.1. Môi trường xây dựng 34 3.3.2. Giới thiệu về giao diện của Game 35 KẾT LUẬN VÀ KIẾN NGHỊ 37 HƯỚNG PHÁT TRIỂN CỦA ĐỀ TÀI 38 TÀI LIỆU THAM KHẢO 39

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 : Công nghệ thông tin Người hướng dẫn : Thạc sỹ Vũ Văn Huân Hà Nội – Năm 2017 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 Tên tiếng anh Nghĩa tiếng việt AI Artificial intelligence Trí tuệ nhân tạo TTNT Trí tuệ nhân tạo DANH MỤC HÌNH DANH MỤC BẢNG 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 Game cụ 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* Vận dụng tốt kiến thức lập trình tảng kỹ thuật lập trình để tạo sản phẩm Game ứng dụng thuật toán A* Đối tượng nghiên cứu phạm vi nghiên cứu Đối tượng nghiên cứu gồm có: - Lý thuyết đồ thị Trí tuệ nhân tạo Thuật toán A* Phạm vi nghiên cứu: - Tổng quan lý thuyết đồ thị trí tuệ nhân tạo Thuật toán A* Phương pháp nghiên cứu • • • • • • Lý thuyết: Tổng hợp kiến thức lý thuyết đồ thị tìm kiếm Tìm hiểu thuật toán tìm kiếm A* Phân tích thiết kế cho chương trình game Thực nghiệm: Ngôn ngữ lập trình: Java Công cụ lập trình: Phần mềm Eclipse Phầm mềm hỗ trợ phân tích thiết kế: Visual Paradigm Những đóng góp báo cáo Đồ án hoàn thành có đóng góp sau đây: - Hệ thống hóa vấn đề lý thuyết lý thuyết đồ thị, trí tuệ nhân - tạo Lý thuyết thuật toán A* Chương trình Game ứng dụng thuật toán A* Kết cấu báo cáo Đồ án gồm có chương sau: Chương 1: Tổng quan sở lý thuyết Chương trình bày tổng quan Lý thuyết đồ thị giới thiệu Trí tuệ nhân tạo Đồng thời đề cập giải thích thuật toán A* 1.1 Tổng quan lý thuyết đồ thị 1.2 Tổng quan trí tuệ nhân tạo 1.3 Giới thiệu thuật toán A* Chương 2: Phân tích thiết kế hệ thống Mô tả chức chương trình game xây dựng biểu đồ cần thiết Biểu đồ Use Case, biểu đồ Hoạt động, biểu đồ Tuần tự 2.1 Phân tích yêu cầu 2.2 Phân tích hệ thống thông tin Chương 3: Xây dựng chương trình Game ứng dụng thuật toán A* Trong chương giải thích việc áp dụng thuật toán vào game Demo chương trình Game 3.1 Giới thiệu chương trình Game 3.2 Áp dụng thuật toán A* vào Game 3.3 Xây dựng giao diện Game CHƯƠNG 1: TỔNG QUAN VỀ CƠ SỞ LÝ THUYẾT 1.1 Tổng quan lý thuyết đồ thị 1.1.1 Định nghĩa Lý thuyết đồ thị lĩnh vực có từ lâu có nhiều ứng dụng đại Những tư tưởng lý thuyết đồ thị đề xuất vào năm đầu kỷ 18 nhà toán học lỗi lạc người Thụy Sỹ Lenhard Eurler Chính ông người sử dụng đồ thị để giải toán tiếng cầu thành phố Konigsberg Năm 1852 Francis Guthrie đưa toán bốn màu vấn đề liệu với bốn màu tô màu đồ cho hai nước biên giới tô màu Bài toán xem khai sinh lý thuyết đồ thị giải sau kỷ vào năm 1976 Kennenth Appel Wolfgang Haken Trong toán học tin học, lý thuyết đồ thị (Graph Theory) nghiên cứu tính chất đồ thị (Graph) Một cách không thức, đồ thị tập đối tượng gọi đỉnh (hoặc nút) nối với cạnh (hoặc cung) Cạnh có hướng vô hướng Đồ thị thường vẽ dạng tập điểm (các đỉnh) nối với đoạn thẳng (các cạnh) Đồ thị (Graph) cấu trúc rời rạc gồm đỉnh cạnh nối đỉnh Đồ thị ký hiệu G = (V, E), đó: V tập đỉnh (vertex) E ⊆ V x V tập hợp cạnh (edge) Một số hình ảnh minh họa đồ thị (Hình 1.1) Hình 1.1 : Một số hình ảnh đồ thị a) 10 Các dạng đồ thị đặc biệt gồm có dạng phổ biến: Đơn đồ thị - 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 • 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ưởng thuật toán code lớp GhostCoach (Xem hình 3.1) 42 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* 43 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ó 44 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 45 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) 46 Giao diện Chơi game 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 47 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) 48 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 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 49 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 50 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 51 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 52 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 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ể… 53 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 54 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, https://code.google.com/archive/p/paulgramming/downloads 55 56

Ngày đăng: 10/07/2017, 22:28

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w