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

Đề tài xây dựng trò chơi rắn săn mồi sử dụng thuật toán bfs

32 23 0

Đ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

Thông tin cơ bản

Tiêu đề Xây Dựng Trò Chơi Rắn Săn Mồi Sử Dụng Thuật Toán Bfs
Tác giả Nguyễn Công Minh, Vũ Văn Định
Trường học Trường Đại Học Điện Lực
Chuyên ngành Nhập Môn Trí Tuệ Nhân Tạo
Thể loại báo cáo chuyên đề
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 32
Dung lượng 1,24 MB

Nội dung

Hệ thống trí tuệ nhân tạo cần có những khảnăng sau:Xử lý ngôn ngữ tự nhiên: để có thể phân tích, hiểu câu hỏi và tổng hợp câu trả lờidựa trên một ngôn ngữ giao tiếp thông thường và phổ b

TRƯỜNG ĐẠI HỌC ĐIỆN LỰC KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO CHUN ĐỀ MƠN: NHẬP MƠN TRÍ TUỆ NHÂN TẠO ĐỀ TÀI: XÂY DỰNG TRÒ CHƠI RẮN SĂN MỒI SỬ DỤNG THUẬT TOÁN BFS Sinh viên thực Giảng viên hướng dẫn : NGUYỄN CÔNG MINH : VŨ VĂN ĐỊNH Ngành : CÔNG NGHỆ THÔNG TIN Chuyên ngành : CÔNG NGHỆ PHẦN MỀM Lớp : D16CNPM7 HÀ NỘI, 12/2023 lOMoAR cPSD| 328 163 18 MỤC LỤC LỜI MỞ ĐẦU .3 CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1.1 Tổng quan trí tuệ nhân tạo .4 1.1.1 Khái niệm .4 1.1.2 Phân loại .5 1.1.3 Ứng dụng trí tuệ nhân tạo 1.1.4 Mặt tích cực khó khăn trí tuệ nhân tạo 1.2 Tổng quan đề tài 1.2.1 Mơ tả trị chơi .9 1.2.2 Lịch sử hình thành phát triển trò chơi .9 1.2.3 Ứng dụng đề xuất cải tiến trò chơi 10 1.3 Các công nghệ áp dụng đề tài 11 1.3.1 Tổng quan ngơn ngữ lập trình Python 11 1.3.2 Thư viện Pygame 12 CHƯƠNG 2: ỨNG DỤNG THUẬT TOÁN BREADTH FIRST SEARCH XÂY DỰNG SNAKE GAME 14 2.1 Thuật toán Breadth First Search 14 2.1.1 Mơ tả thuật tốn 14 2.1.2 Thuật toán 14 2.1.3 Ưu,nhược điểm 16 2.2 Ứng dụng thuật toán Breadth First Search xây dựng Snake Game 17 2.2.1 Thuật tốn BFS trị chơi rắn săn mồi 17 Áp dụng thuật toán BFS .17 CHƯƠNG 3: XÂY DỰNG VÀ TRIỂN KHAI ỨNG DỤNG 19 3.1 Xây dựng trò chơi .19 3.1.1 Xây dựng khung nhìn 19 3.1.2 Xây dựng rắn thức ăn 20 3.1.3 Hiển thị điểm số thông điệp 22 3.2 Hoạt động trò chơi .22 3.2.1 Di chuyển 22 3.2.2 Tìm đường 24 3.3 Áp dụng thuật toán BFS .25 3.4 Hồn thiện trị chơi .26 KẾTLUẬN 31 Tài liệu tham khảo 32 lOMoAR cPSD| 328 163 18 LỜI MỞ ĐẦU Trí tuệ nhân tạo ngành thuộc lĩnh vực khoa học máy tính Là trí tuệ người lập trình tạo nên với mục tiêu giúp máy tính tự động hố hành vi thơng minh người Trí tuệ nhân tạo có bước phát triển lớn, đột phá cơng nghệ, ngành định hình lại xã hội Với hướng dẫn Thầy Vũ Văn Định nhóm em nghiên cứu xây dựng trò chơi rắn săn mồi sử dụng thuật tốn tìm kiếm theo chiều rộng (BFS) Trị chơi rắn săn mồi trò chơi cổ điển, phổ biến dễ cài đặt Trong trò chơi đòi hỏi rắn phải có khả định thơng minh để tìm kiếm mồi, tránh va chạm với thân biên đồ, kèm theo sống sót lâu Đây tốn thú vị, áp dụng nhiều kỹ thuật thuật toán khác để giải Và BFS thuật tốn tìm kiếm theo chiều rộng tiếng lý thuyết đồ thị Thuật toán duyệt từ gốc loang dần đến nút có độ sâu tăng dần Nó thuật tốn đơn giản giúp tìm đường ngắn ô ma trận Dựa thuật toán xây dựng AI đơn giản cho Snake game Từ mơ tả phần ứng dụng AI thực tế Do kiến thức vốn hiểu biết trí tuệ nhân tạo nhiều hạn chế nên đề tài nghiên cứu cịn nhiều thiếu sót, nhóm em kính mong cô thông cảm đưa nhận sét đề tài để nhóm hồn thiện Nhóm em xin chân thành cảm ơn! lOMoAR cPSD| 328 163 18 CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1.1 Tổng quan trí tuệ nhân tạo 1.1.1 Khái niệm Ngày nay, cụm từ “Trí tuệ nhân tạo” hay AI khơng cịn q xa lạ bắt gặp nhiều ứng dụng AI nhiều lĩnh vực đời sống y tế, giáo dục, thể thao, công nghiệp,… nhiều lĩnh vực khác Khái niệm Trí tuệ nhân tạo (Artificial Intelligence) hay AI xuất từ nhiều thập kỷ trước từ khái niệm trí tuệ nhân tạo dần hồn thiện Ta đưa khái niệm AI sau: Trí tuệ nhân tạo hay trí thơng minh nhân tạo (Artifical intelligence – viết tắt AI) ngành thuộc lĩnh vực Khoa học máy tính (Computer science) Là trí thơng minh thể máy móc người lập trình mơ q trình suy nghĩ hoạt động người giúp máy tính tự học, tự đưa định mà không cần lập trình trước hay nói cách khác q trình mơ não người máy tính Ngồi cịn nhiều cách đưa khái niệm AI nhiên chúng xoay quanh đặc điểm sau: Hệ thống hành động người Con người lấy làm thước đo đánh giá mức độ thông minh máy tính Theo cách định nghĩa này, trí tuệ nhân tạo phát triển nhằm tạo hệ thống có hành vi hay hành động tương tự người Hệ thống trí tuệ nhân tạo cần có khả sau: Xử lý ngôn ngữ tự nhiên: để phân tích, hiểu câu hỏi tổng hợp câu trả lời dựa ngôn ngữ giao tiếp thông thường phổ biến tiếng Anh Biểu diễn tri thức: phục vụ việc lưu giữ tri thức thông tin hệthống Suy diễn: sử dụng tri thức có để đưa câu trảlời Học máy: sử dụng để thích nghi học hỏi mơi trường, hồn cảnh khác Hệ thống suy nghĩ người AI hành động cách thơng minh dựa q trình phân tích liệu tương tự q trình suy nghĩ người Những nghiên cứu theo hướng dựa việc nghiên cứu trình nhận thức tư người, từ mô tạo hệ thống có khả tự nhận thức, tư hay nói cách khác q trình mơ não người Tuy nhiên bước cản lớn phát triểnAI Hệ thống suy nghĩ hợp lý Thực tế cho thấy người bị chi phối tâm lý, cảm xúc Do vậy, lúc người suy nghĩ hành động theo hướng đạt tới kết tốt Do lOMoAR cPSD| 328 163 18 hệ thống xây dựng để có khả lập luận dựa việc sử dụng hệ thống logic để đưa kết tốt Hệ thống hành động hợp lý Đôi khi, ta phải đưa định tình bất ngờ chưa có yếu tố mà dựa phản xạ Tương tự vậy, hệ thống hành động hợp lý sử dụng hai cách tiếp cận dựa suy diễn dựa phản xạ để đạt kếtquảtốt 1.1.2 Phân loại Phân loại AI dựa vào hai yếu tố, từ dó ta có hai cách phân loại sau: Cách 1: Phân loại dựa mức độ thơng minh: Artificial Narrow Intelligence (ANI - Trí tuệ nhân tạo hẹp) Loại trí tuệ nhân tạo đại diện cho tất AI có, bao gồm AI phức tạp có khả tạo Trí tuệ nhân tạo hẹp đề cập đến hệ thống AI thực nhiệm vụ cụ thể cách tự động cách sử dụng khả giống người Những cỗ máy khơng thể làm chúng lập trình để làm, có phạm vi lực hạn chếhoặchẹp Artificial General Intelligence (AGI - Trí tuệ nhân tạo chung) Trí tuệ nhân tạo tổng quát/ chung khả AI học, nhận thức, hiểu hoạt động hoàn toàn giống người Các hệ thống xây dựng độc lập nhiều lực hình thành kết nối tổng quát hóa lĩnh vực Artificial Super Intelligence (ASI - Siêu trí tuệ nhân tạo) Được coi đỉnh cao nghiên cứu AI ASI ngồi việc tái tạo trí thơng minh nhiều mặt người, tốt việc có nhớ lớn hơn, xử lý phân tích liệu nhanh khả định Cách 2: Phân loại dựa khả mô suy, hành động người: Reactive Machines - AI phản ứng Là dạng hệ thống AI lâu đời nhất, khả hạn chế Chúng mô khả phản ứng tâm trí người với loại kích thích khác Những máy khơng có chức dựa nhớ Điều có nghĩa máy sử dụng kinh nghiệm đạt trước để thơng báo cho hành động chúng, tức máy khơng có khả “học hỏi” Limited Memory - AI với trí nhớ giới hạn AI có nhớ hạn chế AI ngồi việc có khả phản ứng túy, cịn có khả học hỏi từ liệu lịch sử để đưa định Gần tất ứng dụng lOMoAR cPSD| 328 163 18 có mà biết thuộc thể loại AI Hầu hết tất ứng dụng AI ngày nay, từ chatbot trợ lý ảo xe tự lái điều khiển AI nhớ hạn chế Theory of Mind - Lý thuyết Trí tuệ nhân tạo AI loại tồn dạng khái niệm cơng trình tiến hành Đây lý thuyết mà AI hiểu rõ thực thể mà tương tác cách phân biệt nhu cầu, cảm xúc, niềm tin hay nói cách khác thấu hiểu “con người” Self-Awareness - Tự nhận thức Cơng nghệ AI có khả tự nhận thức thân, có ý thức hành xử người Thậm chí, chúng cịn bộc lộ cảm xúc hiểu cảm xúc người Đây xem bước phát triển cao công nghệ AI nhiên đến thời điểm tại, công nghệ chưa khả thi 1.1.3 Ứng dụng trí tuệ nhân tạo Y tế chăm sóc sức khoẻ AI định lâm sàng: IBM Watson hệ thống hàng đầu hỗ trợ chăm sóc sức khỏe AI, giúp bác sĩ đưa định hiệu Với khả máy học (machine learning) khả xử lý ngôn ngữ tự nhiên, hệ thống giúp bác sĩ xem xét hồ sơ sức khoẻ điện tử bệnh nhân cập nhật thông tin hướng dẫn điều trị từ cơng trình nghiên cứuykhoa AI hồ sơ sức khoẻ điện tử: Hiện nay, EHR trở thành công việc tiêu tốn nhiều thời gian nhân viên y tế sở chăm sóc sức khỏe Cơng nghệ AI hứa hẹn giúp nhà cung cấp dịch vụ chăm sóc sức khỏe thu thập, lưu trữ, định dạng lại theo dõi liệu lâm sàng, kế hoạch đánh giá cá nhân hóa AI chẩn đốn: Cơng nghệ AI sử dụng để cải thiện chất lượng chẩn đoán, đặc biệt X quang AI dựa nguồn liệu 129.450 hình ảnh lâm sàng để chẩn đốn bệnh da, kết chứng minh hệ thống phânloại ung thư da mức tương đương với bác sĩ da liễu AI quản lý khám, chữa bệnh: Việc đưa công nghệ AI vào hệ thống quản lý chăm sóc sức khỏe giúp xác định chẩn đoán điều trị khơng cần thiết Do đó, cơng nghệ AI y tế không tập trung vào tương tác cổ điển bệnh nhân với nhà cung cấp dịch vụ chăm sóc sức khỏe mà cịn sử dụng quản lý hệ thống y tế cho tổ chức quymơlớn Giáo dục Trí tuệ nhân tạo giúp cá nhân hóa lộ trình học tập: Trí tuệ nhân tạo tổng hợp liệu để đề xuất lộ trình học tập rõ ràng, phù hợp với học viên Sự chênh lệch lOMoAR cPSD| 328 163 18 khả tiếp thu, tiềm phát triển học viên giải Giáo dục ứng dụng trí tuệ nhân tạo nhằm hướng tới tối ưu hóa khả tiếp thu, khắc phục điểm yếu phát huy mạnh riêng người Trí tuệ nhân tạo trợ giảng đa nhiệm: Giáo viên khơng cần phải thực nhiều tác vụ lặp lại chấm bài, thống kê điểm, báo cáo giáo án… AI thiết lập công việc tự động hóa Nhờ đó, người dạy tập trung vào chuyên môn, nâng cao tay nghề hướng dẫn học sinh sát Trí tuệ nhân tạo định hướng nghề nghiệp: Bất lợi giáo dục nước phát triển, học sinh đào tạo đồng bộ, có hội khám phá thiếu định hướng dựa khả cá nhân Trí tuệ nhân tạo giải thực trạng cách tổng hợp, phân tích khả năng, sở thích, tư người để định hướng nghềnghiệp An ninh quân AI trông việc theo dõi phát hiện: AI sử dụng để theo dõi hoạt động quân phát mối đe dọa an ninh qua phương tiệntruyềnthông,xã hội.Máy bay khơng người lái (drone) qn sự: AI tích hợp vào máy bay khơng người lái để tăng cường lực quân sự, khả trinh sát Máy bay khơng người lái có nhiệm vụ bay cạnh tiêm kích chiến đấu hỗ trợ phi công trongcác nhiệm vụ cách bổ sung thêm cho họ khả giám sát hỏa lực vốn sẵn có Xử lí ngơn ngữ tự nhiên Chatbot: chatbot thông minh với khả hội thoại tự nhiên mang đến trải nghiệm tốt cho khách hàng tạ o lợi cạnh tranh vượt trội Một dịch vụ khách hàng tốt giúp tạo ấn tượng tốt làm tiền đề cho việc gia tăng tăng doanh thu Dịch thuật tự động: Google có máy chủ riêng, sử dụng cơng nghệ AI có khả lưu trữ lượng lớn liệu dịch thuật Điều quan trọng đáng ý Google Dịch tính tích lũy kết dịch thuật (bản dịch có sẵn) từ dịch giả AI tự động chọn lọc dịch cho phù hợpnhất Giải trí: Gợi ý nội dung: AI sử dụng để gợi ý phim, âm nhạc, sách nội dung giải trí khác dựa q trình quan sát tìm hiểu sở thích cá nhân người dùng Các trò chơi đối kháng với máy (game người chơi):Trong game người, người chơi phải chơi với máy, chơi với AI Nó phân tích hành vi người chơi sau tổng hợp liệu, “học” lối chơi đáp trả họ, trình diễn lặp lặp lại Chính cách xử lý giúp trí thơng minh nhân tạo chương trình cờ vây AlphaGo đánh bại Lee Sedol, kì thủ với 18 giải quốc tế môn cờ với tỉ số 4-1vào2016 lOMoAR cPSD| 328 163 18 AI tìm kiếm phân tích liệu: Công nghệ AI cho phép xử lý lượng lớn liệu phức tạp tốc độ cao, chẳng hạn việc phân tích liệu lịch sử để dự báo xu hướng hành vi mua hàng khách hàng tương lai Các cơng cụ phân tích văn hỗ trợ AI sàng lọc liệu phi cấu trúc đánh giá củakhách hàng bình luận mạng xã hội, để tìm thông tin quý giá ý kiến sở thích người mua Đồng thời, AI phát hoạt động gian lận hay bất thường giao dịch tài Mơ thử nghiệm sản phẩm: AI giúp tổ chức thiết kế sản phẩm Đây cách hoạt động: nhà thiết kế kỹ sư đưa mục tiêu thiết kế vào thuật toán thiết kế tổng qt Các thuật tốn sau khám phá tất hốn vị có giải pháp tạo phương án thiết kế Cuối cùng, sử dụng học máy để kiểm tra lần lặp cải thiện 1.1.4 Mặt tích cực khó khăn trí tuệnhântạo Trí tuệ nhân tạo (AI) lĩnh vực có nhiều mặt tích cực tiềm lớn, đối diện với nhiều khó khăn thách thức Mặt tích cực trí tuệ nhân tạo Giải vấn đề phức tạp: AI có khả xử lí phân tích liệu phức tạp cách nhanh chóng hiệu quả, giúp giải vấn đề lớn phức tạp phân tích liệu y tế, dự đốn thời tiết tối ưu hố q trình sản xuất Tăng cường suất: AI thực nhiệm vụ lặp lặp lại cách tự động giúp tang cường suất giảm công việc tay chân cho người Phát triển trí tuệ: Nghiên cứu lĩnh vực AI giúp người hiểu rõ cách hoạt động não học hỏi từ Ứng dụng y tế: AI có tiềm lớn việc chuẩn đoán bệnh, dự đoán biến chứng tạo phương pháo điều trị hiệu Khó khăn trí tuệ nhân tạo Đạo đức luân lý: Sử dụng AI đặt nhiều vấn đề đạo đức luân lý chẳng hạn quyền riêng tư, tự động hố cơng việc tạo vũ khí tự động Khả thất nghiệp: AI thay cơng việc người trongnhiều ngành gây tình trạng thất nghiệp bất ổn xãhội Rủi ro an ninh: Sử dụng AI để tạo phần mềm độc hại cơng mạng gây rủi ro an ninh lớn, từ việc đánh cắp liệu cá nhân đến công mạng quốc gia.Hạn chế hiểu biết tư duy: Hiện AI có hạn chế việc hiểu biết sâu rộng tư đa chiều người Nó gặp khó khăn đối mặt với tình phức tạp lOMoAR cPSD| 328 163 18 Quản lí liệu: AI yêu cầu lượng lớn liệu để huấn luyện hoạt động hiệu Việc quản lí bảo vệ liệu gây nhiều rắc rối quyền riêng tư an ninh 1.2 Tổng quan đề tài 1.2.1 Mơ tả trị chơi Snake game, tựa game kinh điển phổ biến với nhiều hệ Snakegame hay gọi trò chơi rắn săn mồi trò chơi mà cần khiến rắn di chuyển đến chỗ thức ăn Trong bài áp dụng thuật tốn BFS để tạo AI cho trị chơi Con rắn di chuyển qua trái, phải, lên, xuống Trong q trình di chuyển Thuật tốn giúp rắn tự tìm đường tốt đến mồi Tránh cắn trúng thân đâm vào tường biên đạt số điểm lớn cóthể Con rắn ngày dài địi hỏi phải có khả điều khiển để né tránh chướng ngại vật kể thể Với thuật tốn BFS, ta dễ dàng tìm đường ngắn đầu rắn thức ăn Ta trang bị cho rắn lực điểu khiển thể để tránh vật cản thông qua nhận xét quan trọng: “ Miễn tồn đường từ đầu rắn đến đuôi rắn, rắn có thểđitiếp” 1.2.2 Lịch sử hình thành phát triển trò chơi Trò chơi Snake (hay gọi rắn săn mồi) trò chơi điện tử trở thành biểu tượng ngành cơng nghiệp game Trị chơi Snake xuất vào năm 1970 máy tính đơn giản DEC PDP-1 Trị chơi không phát triển để công bố mà ví dụ minh họa cho hệ thống máy tính thời kỳ Đến thập kỷ 1980 game Snake trở nên phổ biến xuất máy chơi game điện tử Nokia 6110 vào năm 1997 Điều làm cho trò chơi trở nên tiếng toàn cầu trở thành trò chơi điện thoại di động Trong thập kỷ 1990, Snake xuất nhiều hệ thống máy tính thiết bị di động khác nhau, phiên trò chơi phát triển cải thiện liên tục Nokia Snake (1997): Snake trở nên phổ biến điện thoại di động Nokia giới thiệu trò chơi điện thoại di động Nokia 6110 Snake II (2000): Phiên Snake II có thêm tính gấp đơi, khiến rắn tăng gấp đôi ăn mồi Nhiều phiên biến thể: Kể từ đó, có hàng loạt phiên biến thể trò chơi Snake phát triển nhiều tảng thiết bị khác nhau, từ điện thoại di động đến máy tính cá nhân trang web chơi game trực tuyến Ngày nay, Snake cịn tồn nhiều hình thức khác Ngoài phiên điện thoại di động, có phiên trị chơi trực tuyến miễn phí tích hợp vào trình duyệt web Snake trở thành phần ký ức game nhiều người chơi kính trọng biểu tượng lịch sử game điện tử lOMoAR cPSD| 328 163 18 1.2.3 Ứng dụng đề xuất cải tiến trò chơi Trò chơi rắn săn mồi (Snake) khơng trị giải trí đơn thuần, mà cịn có nhiều ứng dụng lợi ích khác ngồi việc giúp người chơi giải trí Trị chơi Snake cách tuyệt vời để giải trí giảm căng thẳng Người chơi chơi thời gian ngắn để giải toả căng thẳng giải trí khoảnh khắc trống rảnh Chơi Snake yêu cầu tập trung kỹ phản xạ, giúp cải thiện khả tập trung nhanh nhẹn người chơi Trong số trường hợp, phiên trò chơi Snake sử dụng để giảng dạy lập trình làm ví dụ minh họa cho khái niệm khoa học máy tính Việc phát triển phiên riêng trị chơi Snake giúp người học lập trình phát triển kỹ lập trình hiểu rõ nguyên tắc trò chơi điện tử Người thiết kế giao diện sử dụng yếu tố trò chơi Snake để thiết kế yếu tố tương tác ứng dụng trang web, đặc biệt với việc sử dụng hình ảnh rắn mơ hình chuyển động Trị chơi Snake sử dụng lĩnh vực trí tuệ nhân tạo để phát triển thuật tốn máy học học sâu, đặc biệt ngữ cảnh việc học máy tự học (reinforcement learning) Cải tiến trị chơi rắn săn mồi tạo trải nghiệm thú vị cho người chơi Chúng ta cải thiện đồ họa hiệu ứng để tạo trải nghiệm hấp dẫn Sử dụng đồ họa 3D hiệu ứng đặc biệt để làm cho trò chơi trở nên sống động Thêm chế độ chơi đa người để người chơi thi đấu với bạn bè người chơi trực tuyến khác Phát triển chế độ chơi đối kháng trực tuyến, người chơi thi đấu trực tuyến với người chơi khác từ khắp nơi giới Tạo nhiều cấp độ khó khăn thách thức khác để người chơi không cảm thấy chán chường Cho phép người chơi chọn kỹ đặc điểm đặc biệt cho rắn họ, giúp họ tạo chiến lược chơi riêng trải nghiệm cá nhân hóa Thêm chế độ chơi theo cấp độ, người chơi phải hồn thành chơi với điều kiện thách thức đặc biệt để tiến xa trị chơi Sử dụng trí tuệ nhân tạo để tạo hệ thống điều khiển cho rắn không người chơi, giúp tạo trải nghiệm chơi đầy thách thức Xây dựng hệ thống điểm số xếp hạng trực tuyến để khuyến khích cạnh tranh tham gia người chơi Cho phép rắn tương tác với môi trường xung quanh, tránh chướng ngại vật tận dụng chúng để đạt mục tiêu Tạo nhiều chơi đồ đa dạng, đồ có tính chất điểm đặc biệt, giúp người chơi không cảm thấy nhàm chán Tích hợp tính tương tác với cộng đồng, cho phép người chơi chia sẻ thành tích, gợi ý chí thiết kế chơi đồ 10 lOMoAR cPSD| 328 163 18 Bảng 2.2 Mơ tả q trình duyệt nút Trong trường hợp khơng tìm đến đường từ đầu rắn đến thức ăn, ta trả đường từ đầu đến rắn Ngồi ra, q trình game rắn tăng trưởng quy tắc trị chơi u cầu rắn khơng đâm vào tường cắn vào thân nên ta cần thêm số hàm để đường rắn không bị trùng vào nút chứa thân rắn tường Cài đặt BFS Ta quy ước sau: pfood: Trạng thái bắt đầu/ đỉnh bắt đầu psnake: Trạng thái đích/ nút đích pboard: Các ô bảng chơi/ mảng trạng thái Ta khởi tạo hàng đợi trống “queue” để chứa vị trí cần duyệt BFS Khởi tạo danh sách gọi “inqueue” để theo dõi xem vị trí thăm hay chưa Khởi tạo biến boolean “found” với giá trị “False” Biến sử dụng để kiểm tra xem có tìm thấy đường hợp lệ từ thức ăn tới đầu rắn hay khơng Đầu tiên ta đưa vị trí thức ăn ban đầu “pfood” vào hàng đợi Xét hàng đợi, ta lấy vị trí từ cuối hàng đợi để xét, lúc vị trí xét vị trí thức ăn ban đầu Để tránh lặp ta xét vị trí có “inqueue” hay chưa Nếu có ta bỏ qua lần lặp này, khơng ta bắt đầu duyệt đưa vị trí vào “inpueue” để đánh dấu duyệt Tiếp theo từ vị trí ban đầu ta đưa vị trí lân cận ô chứa vị trí thức ăn (4 hướng lên, xuống, trái, phải) vào hàng đợi để duyệt, bước ta cần dùng hàm khác để kiểm tra xem bước thực khơng Nếu bước di chuyển đầu rắn, ta đặt “found” thành “true” tìm thấy đường đến đầu rắn Ngoài ra, ta cần kiểm tra xem vị trí di chuyển có bị rắn chiếm giữ không (đảm bảo logic rắn không đâm vào thân giảm số vị trí cần xét cho thuật tốn) Nếu vị trí khơng bị rắn chiếm giữ ta cập nhật lại khoảng cách “pboad” trả lại đường “found” cho rắn Sau tiếp tục vịng lặp tìm đến đầu rắn 17 lOMoAR cPSD| 328 163 18 CHƯƠNG 3: XÂY DỰNG VÀ TRIỂN KHAI ỨNG DỤNG 3.1 Xây dựng trịchơi 3.1.1 Xây dựng khung nhìn Đầu tiên để sử dụng trò chơi ta cần khai báo ba thư viện: pygame, time, rando Sau sử dụng hàm pygame.init để khởi tạo cửa sổ game Ở chúng tasử dụng mã màu RGB để tạo màu cho trị chơi Kích thước khung trị chơi: HEIGHT: Chiều cao khung trị chơi, có giá trị 20 WIDTH: Chiều rộng khung trị chơi, có giá trị 20 FIELD_SIZE: Tổng số khung trị chơi, tính cách nhân HEIGHT WIDTH (20*20 = 400) 19 lOMoAR cPSD| 328 163 18 Tiếp in cửa sổ hình Sử dụng hàm time.clock để xố hình vẽ lại vng sau chu kỳ 3.1.2 Xây dựng rắn thức ăn Khi có khung hình, tiếp tục sử dụng hàm để rắn thức ăn lên hình Các thơng số biểu diễn Rắn: HEAD: Chỉ số đại diện cho đầu rắn Nó có giá trị 0, ngụ ý đầu rắn nằm vị trí cấu trúc liệu biểu thị rắn FOOD: Một số (0) sử dụng để biểu thị thức ăn bảng trò chơi UNDEFINED: Một giá trị số sử dụng để biểu thị ô không xác định trốngtrênbảngtrị chơi.Nóđược tính bằngcách(HEIGHT+1)*(WIDTH+1) Thức ăn gán giá trị nhỏ (0), ô chưa duyệt gán trạng thái lớn tổng số ô tồn ma trận (UNDEFINED), ô thuộc thân rắn nhận giá trị lần ô chưa duyệt (2*UNDEFINED) Điều giúp cho chương trình phân biệt đâu chứa đường SNAKE_BLOCK: Kích thước ơ bảng trị chơi, có giá trị 20 pixel SNAKE_SPEED: Tốc độ di chuyển rắn, có giá trị 200 mili giây (0.2 giây) cho khung hình cập nhật Điều xác định tốc độ di chuyển rắn bảng trò chơi Sau có rắn, tiếp tục sử dụng hàm new_food để tạo thức ăn cho rắn 20 lOMoAR cPSD| 328 163 18 Tiếp đến sử dụng hàm draw để vẽ rắn thức ăn lên hình Cung cấp trạng thái ban đầu cho rắn mồi 21 lOMoAR cPSD| 328 163 18 3.1.3 Hiển thị điểm số thông điệp FONT_STYLE: Kiểu font văn sử dụng, trường hợp "bahnschrift" với kích thước 12 SCORE_FONT: Kiểu font văn khác sử dụng để hiển thị điểm số, trường hợp "comicsansms" với kích thước 20 3.2 Hoạt động trò chơi 3.2.1 Di chuyển Vừa tìm hiểu cách để tạo nên khung hình với đối tượng rắn thức ăn, bổ sung thêm hàm để cung cấp hoạt động cho rắn 22 lOMoAR cPSD| 328 163 18 Để rắn tiến đến chỗ thức ăn ta cần kiểm tra hướng rắn: Trái: đầu rắn không nằm cột lưới chơi cho phép di chuyển sang trái Phải: đầu rắn không nằm cột cuối lưới chơi cho phép di chuyển sang phải Lên: đầu rắn không nằm hàng lưới chơi cho phép di chuyển lên Xuống: đầu rắn không nằm hàng cuối lưới chơi cho phép di chuyển xuống Kiểm tra xem ô bảng có tự (khơng bị rắn chiếm) hay khơng, vị trí xét khơng xuất danh sách nút có chứa thân rắn trống có chứa thức ăn nên rắn di chuyển vào vị trí Nếu khơng rắn xét vị trí khác tìm hướng mà rắn di chuyển Cuối cùng, ta trả kết kiểm tra xem rắn di chuyển theo hướng cho hay không Sau kiểm tra xem bảng có tự (khơng bị rắn chiếm) hay khơng, idx không xuất danh sách psnake đến vị trí psize trả True ngược lại trả False 23 lOMoAR cPSD| 328 163 18 Để tạo chuyển động cho rắn sử dụng hàm make_move 3.2.2 Tìm đường Ta sử dụng hàm virtual_shortest_move() sử dụng để tìm đường tới thức ăn mà rắn thực di chuyển Hàm đưa rắn tới vị trí thức ăn mà BFS tìm Tại vị trí ta lại kiểm tra có tồn đường từ đầu rắn tới hay khơng Đây hàm quan trọng để thực nhận xét đầu Hàm để kiểm tra đuôi 24 lOMoAR cPSD| 328 163 18 Để rắn đuổi theo đi, ta hốn đổi trạng thái chứa thức ăn với ô chứa đuôi rắn duyệt BFS Sau BFS tìm đường ngắn đến vị trí mà không duyệt qua ô chứa thức ăn Dựa kết thuật tốn BFS ta tìm đường ngắn dài Ngắn nên rắn đuổi theo thức ăn, đuổi theo nó nên chọn đường dài đường ngắn Nhờ có thêm khơng gian lại trị chơilâuhơn 3.3 Cài đặt thuậttốnBFS BFS hàm ta sử dụng việc xây dựng trị chơi rắn săn mồi Thuật toán giúp cho rắn tìm đường ngắn từ thức ăn đến rắn với việc thỏa mãn điều kiện mà ta cần đề rắn di chuyển vào ô mà thân chiếm lấy rắn tiếp tục di chuyển tồntạiđường đitừđầuconrắnđếnđicủanó.Taviếthàmbroad_BFSđểtriểnkhai 25 lOMoAR cPSD| 328 163 18 thuật tốn ma trận trị chơi lưu lại trạng thái duyệt ô Đây thơng tin quan trọng để rắn tìm đường phù hợp Trị chơi rắn săn mồi áp dụng thuật toán BFS sử dụng hàng đợi xét duyệt trạng thái hàng đợi Các cấu trúc hàm gồm: pfood: Trạng thái bắt đầu/ đỉnh bắt đầu psnake: Trạng thái đích/ nút đích pboard: Các bảng chơi/ mảng trạng thái Ta tạo hàng đợi (queue) đẩy có chứa thức ăn (pfood) vào hàng đợi (queue) tạo Ta có danh sách vị trí xét (inqueue) dùng để theo dõi ô xét Khi hàng đợi khơng rỗng ta cho chạy vịng lặp Ta lấy phần tử thứ khỏi hàng đợi Nếu phần tử thứ chưa xét duyệt ta tiếp tục vòng lặp Ta dùng hàm for i in range(4): để xét chuyển động rắn tiếp (lên trên, xuống dưới, sang trái, sang phải) Nếu có đường đến vị trí có chứa đầu rắn ta trả kết tìm đường Nếu không ta tiếp tục với điều kiện Nếu ô trùng với thân rắn trở thành thân rắn cho phép rắn di chuyển đến vị trí Cịn vị trí thêm vào hàng đợi ta bổ sung nút vào cuốihàngđợi 3.4 Hồn thiện trịchơi Định nghĩa hàm có tên gameLoop khơng có tham số Khởi tạo biến có tên game_over game _close gán cho chúng giá trị Flase 26 lOMoAR cPSD| 328 163 18 Gọi hàm initial_game() để thiết lập trạng thái ban đầu trò chơi Bắt đầu vòng lặp while với điều kiện not game_over, vòng lặp tiếp tục game_over trở thành True Sau bắt đầu vịng lặp while khác vòng lặp Vòng lặp chạy game_close True, tức trò chơi kết thúc người chơi thua Và môt số hành động hiển thị thông báo điểm số lênmànhình Xử lý kiện từ bàn phím Bắt đầu vòng lặp for lặp qua chuỗi giá trị Chuỗi giá trị cho cách gọi hàm pygame.event.get(), trả danh sách sử kiện xảy từ lần gọi cuối Kiểm tra xem phím nhấn bàn phím hay chưa Kiểm tra xem phím nhấn có phải Q ESC hay không Nếu đúng, khối mã khác thực thi Khối mã gán giá trị True cho biến game_over giá trị Flase cho biến game_close Đồng nghĩa với việc người chơi muốn thoát khỏi trò chơi kết thúc vòng lặp Kiểm tra xem phín nhấn có phải C hay khơng Nếu C, khối mã gọi lại hàm gameLoop để chơi lại trò chơi từ đầu Xử lý kiện từ chuột 27 lOMoAR cPSD| 328 163 18 Bắt đầu vòng lặp for để lặp qua chuỗi giá trị Tương tự chuỗi giá trị cho cách gọi lại hàm pygame.event.get() Nhưng vòng lặp có trách nhiệm xử lý kiện từ chuột Nếu người chơi nhấn đóng cửa sổ trị chơi, khối mã thực thi Khối mã gán giá trị True cho biến game_over để kết thúc vòng lặp Gọi hàm board_reset để đặt lại bảng trò chơi với rắn thức ăn vị trí Gọi hàm board_BFS để tìm đường ngắn từ rắn đến thức ăn trò chơi Câu lệnh if thực thi khối lệnh điều kiện Gọi hàm có tên find_safe_way gán kết cho biến best_move giúp tìm cách an tồn cho rắn di chuyển biến giúp lưu trữ hướng động tác Câu lệnh else thực thi khối mã điều kiện if sai, gọi đến hàm khác có tên follow_tail gán kết cho biến best_move Hàm khiến rắn theo khơng có đường đến thức ăn Hàm any possible move gán kết cho biến best_move Hàm tìm hàm tìm động tác cho rắn khơng có cách an tồn khơng thể cho rắn theo đuôi Với cách rắn cố gắng tránh tường biên nhiều tốt 28 lOMoAR cPSD| 328 163 18 Gọi phương thức fill đối tượng dis truyền vào đối số blue để tơ xanh cho cửa sổ trị chơi Gọi phương thức tick đối tượng clock, truyền vào đối số SNAKE_SPEED Clock dùng để điều khiển thời gian, tick dùng để cập nhật clock giới hạn số khung hình giây Kết đạt sau chạy chương trình: 29 lOMoAR cPSD| 328 163 18 Cửa sổ trò chơi ban đầu Khi rắn dài khó quan sát Thơng báo kết thúc trị chơi 30 lOMoAR cPSD| 328 163 18 KẾT LUẬN Sau trình nghiên cứu xây dựng trò chơi rắn săn mồi, nhóm chúng em xin tổng kết số điều sau: Kết đạt Thiết kế AI đơn giản cho trò chơi rắn săn mồi dựa thuật tốn tìm kiếm theo chiều rộng Con rắn tuân theo quy tắc “Miễn đường từ đầu rắn tới rắn, rắn tiếp tục đi” Thoả mãn số ràng buộc đâm vào than thua, ăn đồ ăn chiều dài tang lên đơn vị Sử dụng thuật tốn BFS hiệu giúp rắn gần ln tìm đường tới thức ăn Chương trình thực thi thành cơng xuất cửa sổ Hạn chế Thuật toán thực hữu dụng cửa sổ khung hình nhỏ Giao diện chưa thẩm mỹ, phần than rắn khó nhìn Do kiến thức lập trình cịn hạn chế hầu hết chương trình tham khảo dựa chương trình có sẵn Chưa đưa hướng phát triển mở rộng cho trò chơi Kết luận Chúng em nhiều thiếu sót đề tài q trình thực đề tài Từ chúng em mong nhân nhiều ý kiến đóng góp từ thầy để hồn thiện đề tài bổ sung thêm kiến thức Chúng em xin chân thành cảm ơn ! 31 lOMoAR cPSD| 328 163 18 Tài liệu tham khảo [1] PGS.TS Từ Minh Phương, Giáo trình Nhập mơn trí tuệ nhân tạo, Nhà xuất Thơng tin truyền thông, xuất năm 2014 [2] Python ( ngôn ngữ lập trình) - Wikipedia https://vi.wikipedia.org/wiki/Python_(ng%C3%B4n_ng%E1%BB%AF_l %E1%BA %ADp_tr%C3%ACnh) [3] Tạo AI đơn giản cho game rắn với BFS https://github.com/trituenhantaoio/snake_bfs/blob/master/snake_bfs.p y [4] BFS (Breadth first search) https://vnoi.info/wiki/algo/graph-theory/breadth-firstsearch.md [5] Pygame – Wikipedia Tiếng Việt https://vi.wikipedia.org/wiki/Pygam e 32

Ngày đăng: 03/01/2024, 15:10

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

TÀI LIỆU LIÊN QUAN

w