Báo cáo bài tập lớn học phầntrí tuệ nhân tạo đề tài xây dựng trò chơi 3 tu sĩ và 3 con quỷ

22 0 0
Báo cáo bài tập lớn học phầntrí tuệ nhân tạo đề tài xây dựng trò chơi 3 tu sĩ và 3 con quỷ

Đ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

Thuật toán khởi đầu tại đỉnh gốc hoặc chọn mộtđỉnh nào đó coi như gốc và duyệt tất cả các đỉnh lân cận.. Khi đã kiểm tra một đỉnh, đỉnh đó sẽ được đánh dấu đi qua.. Quá trìnhđó lặp lại c

lOMoARcPSD|39270540 BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO BÀI TẬP LỚN HỌC PHẦN TRÍ TUỆ NHÂN TẠO Đề tài: Xây dựng trò chơi 3 tu sĩ và 3 con quỷ GVHD: Trần Thanh Huân Thành viên: Nguyễn Phúc Hưng Nguyễn Quang Hưng Nhóm: 18 Lớp: 20221IT6043001 Hà Nội, Năm 2022 Downloaded by sau xanh (saudinh2@gmail.com) lOMoARcPSD|39270540 MỤC LỤC MỤC LỤC 1 LỜI CẢM ƠN 2 DANH SÁCH HÌNH VẼ…………………………………………………….3 CHƯƠNG 1 Cơ sở lý thuyết………………………………………………4 CHƯƠNG 2 Phân tích bài toán 7 2.1 Mục đích bài toán 7 2.2 Thuật toán của bài toán 8 CHƯƠNG 3 Lập trình trò chơi 9 3.1 Chương trình cho người tự chơi 9 3.1.1 Giới thiệu tổng quan trò chơi……………………………………………… 9 3.1.2 Mã nguồn và giải thích…………………………………………………… 9 3.2 Chương trình cho máy tự chơi 12 3.2.1 Giới thiệu tổng quan trò chơi………………………………………………12 3.2.2 Mã nguồn và giải thích…………………………………………………… 12 CHƯƠNG 4 Giao diện chương trình .18 4.1 Giao diện chương trình……………………………………………………….18 4.1.1 Giao diện chương trình cho người chơi……………………………………18 4.1.2 Giao diện chương trình cho máy tự chơi………………………………… 18 CHƯƠNG 5 Kết luận ……………………………………………………20 5.1 Kết luận……………………………………………………………………….20 CHƯƠNG 6 Tài liệu tham khảo .…………………….21 6.1 Tài liệu tham khảo…………………………………………………………… 21 1 Downloaded by sau xanh (saudinh2@gmail.com) lOMoARcPSD|39270540 LỜI CẢM ƠN Là một sinh viên trường đại học Công nghiệp Hà Nội, báo cáo bài tập lớn là minh chứng cho những kiến thức đã có sau thời gian học tập Trong quá trình hoàn thành bài tập lớn, ngoài sự cố gắng của nhóm thì nhóm cũng nhận được sự hướng dẫn tận tình của thầy Trần Thanh Huân Qua đây, nhóm xin chân thành cảm ơn khoa Công nghệ thông tin, trường đại học Công nghiệp Hà Nội đã trang bị kiến thức cho em trong suốt quá trình học tập Đặc biệt, nhóm cảm ơn tới thầy Trần Thanh Huân đã luôn giúp đỡ, hướng dẫn, chỉ bảo tận tình để giúp nhóm hoàn thành tốt bài tập lớn của mình Nhóm đã cố gắng hoàn thành bài tập lớn nhưng vẫn rất mong nhận được sự đóng góp ý của thầy cô và các bạn để bài tập lớn cuả nhóm được hoàn thiện hơn Chúng em xin chân thành cảm ơn! Nhóm thực hiện 18 2 Downloaded by sau xanh (saudinh2@gmail.com) lOMoARcPSD|39270540 DANH SÁCH HÌNH VẼ Danh sách hình vẽ: Hình 1: Mô tả thuật toán…………………………………………………….4 Hình 2: Ví dụ đồ thị BFS……………………………………………………5 Hình 3: Sơ đồ cây………………………………………………………… 13 Hình 4: Giao diện bắt đầu………………………………………………… 18 Hình 5: Giao diện đăng ký…………………………………………………18 Hình 6: Giao diện đăng nhập………………………………………………19 Hình 7: Giao diện trò chơi (trò chơi dành cho người)…………………… 19 Hình 8: Giao diện trò chơi (trò chơi dành cho máy)………………………19 3 Downloaded by sau xanh (saudinh2@gmail.com) lOMoARcPSD|39270540 CHƯƠNG 1 Cơ sở lý thuyết Thuật toán tìm kiếm theo chiều rộng (BFS: Breadth First Search) 1.1 Ý tưởng thuật toán Tìm kiếm theo chiều rộng (BFS) là một thuật toán duyệt hoặc tìm kiếm trên một cây hoặc đồ thị Thuật toán khởi đầu tại đỉnh gốc (hoặc chọn một đỉnh nào đó coi như gốc) và duyệt tất cả các đỉnh lân cận Sau đó, lần lượt đối với các đỉnh lân cận, nó kiểm tra các đỉnh con của đỉnh đó mà chưa đi qua Khi đã kiểm tra một đỉnh, đỉnh đó sẽ được đánh dấu đi qua Quá trình đó lặp lại cho đến khi tìm được đường đi ngắn nhất Chính xác hơn, thuật toán có thể được mô tả như sau:  Đầu tiên ta thăm đỉnh nguồn S  Việc thăm đỉnh ss sẽ phát sinh thứ tự thăm các đỉnh (u1, u2, … up) (u1, u2, …up) kề với S (những đỉnh gần S nhất) Tiếp theo, ta thăm đỉnh u1, khi thăm đỉnh u1 sẽ lại phát sinh yêu cầu thăm những đỉnh (v1, v2, …, vq) (v1, v2, …, vq) kề với u1 Nhưng rõ ràng những đỉnh v này “xa” Ss hơn những đỉnh u nên chúng chỉ được thăm khi tất cả những đỉnh u đều đã được thăm Tức là thứ tự thăm các đỉnh sẽ là: s, u1, u2, …, up, v1, v2, …, vq, … Mô tả thuật toán 4 Downloaded by sau xanh (saudinh2@gmail.com) lOMoARcPSD|39270540 Thuật toán tìm kiếm theo chiều rộng sử dụng một danh sách để chứa những đỉnh đang “chờ” thăm Tại mỗi bước, ta thăm một đỉnh đầu danh sách, loại nó ra khỏi danh sách và cho những đỉnh kề với nó chưa được thăm xếp hàng vào cuối danh sách Thuật toán sẽ kết thúc khi danh sách rỗng 1.2 Phân tích thuật toán Thuật toán sử dụng một cấu trúc dữ liệu hàng đợi (queue) để chứa các đỉnh sẽ được duyệt theo thứ tự ưu tiên chiều rộng Các bước thực hiện thuật toán: Bước 1: Khởi tạo  Các đỉnh đều ở trạng thái chưa được đánh dấu Ngoại trừ đỉnh nguồn s đã được đánh dấu  Một hàng đợi ban đầu chỉ chứa 1 phần tử là s Bước 2: Lặp lại các bước sau cho đến khi hàng đợi rỗng:  Lấy đỉnh u ra khỏi hàng đợi  Xét tất cả những đỉnh v kề với u mà chưa được đánh dấu, với mỗi đỉnh v đó: o Đánh dấu v đã thăm o Lưu lại vết đường đi từ u đến v o Đẩy v vào trong hàng đợi (đỉnh v sẽ chờ được duyệt tại những bước sau) Bước 3: Truy vết tìm đường đi 1.3 Ví dụ Xét đồ thị sau đây, với đỉnh nguồn s = 1 5 Downloaded by sau xanh (saudinh2@gmail.com) lOMoARcPSD|39270540 Hình 2: Ví dụ đồ thị BFS ST Đỉnh đã duyệt Các đỉnh Các đỉnh còn lại T trong hàng đợi 1Ѳ Ѳ 1,2,3,4,5,6,7,8,9,10,11,12, 13 21 2,3,11 4,5,6,7,8,9,10,11,12,13 3 1,2 1,2,4 3,5,6,7,8,9,10,11,12,13 4 1,2,3 11,4,6 5,7,8,9,10,12,13 5 1,2,3,11 4,6,12,13 5,7,8,9,10 6 1,2,3,11,4 6,12,13 5,7,8,9,10 7 1,2,3,11,4,6 12,13,7,18 5,9,10 8 1,2,3,11,4,6,12 13,7,8 5,9,10 9 1,2,3,11,4,6,12,13 7,8,9 5,10 10 1,2,3,11,4,6,12,13 8,9 5,10 ,7 11 1,2,3,11,4,6,12,13 9,10 5 ,7 12 1,2,3,11,4,6,12,13 10,5 Ѳ ,7,8,9 13 1,2,3,11,4,6,12,13 5 Ѳ ,7,8,9,10 14 1,2,3,11,4,6,12,13 Ѳ Ѳ ,7,8,9,10,5 Để thứ tự các phần tử lấy ra khỏi hàng đợi, ta thấy trước hết là 1; sau đó đến 2, 3; rồi mới tới 4, 5; cuối cùng là 6 Rõ ràng là đỉnh gần S hơn sẽ được duyệt trước Và như vậy, ta có nhận xét: nếu kết các thuật toán đồ thị hợp lưu vết tìm đường đi thì đường đi từ S tới F sẽ là đường đi ngắn nhất (theo nghĩa qua ít cạnh nhất) 6 Downloaded by sau xanh (saudinh2@gmail.com) lOMoARcPSD|39270540 CHƯƠNG 2 Phân tích bài toán 2.1Mục đích của bài toán Bài toán tập trung vào quy tắc: Nếu ở 1 nơi nào đó, số quỷ nhiều hơn số tu sĩ thì quỷ sẽ ăn thịt tu sĩ- nói theo ứng xử trò chơi, đây là trạng thái thua- còn nói theo tập trạng thái ta muốn xây dựng thì đây là trạng thái vi phạm, vó nó sẽ không được xem xét trong tập trạng thái Cách thức biến đổi từ trạng thái này đến trạng thái khác là: Từ bờ bên này có thuyền chở 1, 2 tu sĩ hoặc qủy lên thuyền vào cho chạy qua bờ bên kia Trạng thái xung đột sẽ chỉ được xem xét sau khi tu sĩ hay quỷ đã sang được bên kia Tìm kiếm theo chiều rộng (BFS) là một thuật toán tìm kiếm trong đồ thị trong đó việc tìm kiếm chỉ bao gồm 2 thao tác: (a) cho trước một đỉnh của đồ thị; (b) thêm các đỉnh kề với đỉnh vừa cho vào danh sách có thể hướng tới tiếp theo Có thể sử dụng thuật toán tìm kiếm theo chiều rộng cho hai mục đích: tìm kiếm đường đi từ một đỉnh gốc cho trước tới một đỉnh đích, và tìm kiếm đường đi từ đỉnh gốc tới tất cả các đỉnh khác Trong đồ thị không có trọng số, thuật toán tìm kiếm theo chiều rộng luôn tìm ra đường đi ngắn nhất có thể Thuật toán BFS bắt đầu từ đỉnh gốc và lần lượt nhìn các đỉnh kề với đỉnh gốc Sau đó, với mỗi đỉnh trong số đó, thuật toán lại lần lượt nhìn trước các đỉnh kề với nó mà chưa được quan sát trước đó và lặp lại Xem thêm thuật toán tìm kiếm theo chiều sâu, trong đó cũng sử dụng 2 thao tác trên nhưng có trình tự quan sát các đỉnh khác với thuật toán tìm kiếm theo chiều rộng 7 Downloaded by sau xanh (saudinh2@gmail.com) lOMoARcPSD|39270540 2.2Thuật toán của bài toán Xét về nơi có thể xảy ra xung đột thì có tất cả 3 nơi: “Bờ 1” “Thuyền” “Bờ 2” Dễ thấy đới với thuyền thì theo mô tả bài toán, sẽ không có xung đột trên thuyền Đơn giản thì thuyền phải có ít nhất 1 tu sĩ hoặc quỷ điều khiển mới chạy được, và trên thuyền cho phép chở nhiều nhấy 2 tu sĩ hoặc quỷ Xét mọi trường hợp, không có xung đột trên thuyền Cho nên ta chỉ quan tâm đến tình trạng tu sĩ và quỷ 2 bên bờ, và vị trí của thuyền ở bờ 1 hay bờ 2 Một nhận xét nữa là nếu đã biết bờ 1 có x tu sĩ, y quỷ, ta cũng biết luôn bên bờ 2 có 3-x tu sĩ và 3-y quỷ Vậy để phân biệt các trạng thái của bài này ta chỉ cần biết 3 yếu tố: - Số tu sĩ ở bờ 1(x) - Số quỷ bở bờ 1(y) - Thuyền có đang ở bờ 1 không(b) (true/false) Như vậy, chỉ cần dung 1 mảng [3][3][2]- theo thứ tự [số tu sĩ bờ 1][số quỷ bờ 1][thuyền có đang ở bờ 1 không ?] là có thể mô tả tất cả các trạng thái có thể Quy tắc xung đột đối với trạng thái[x,y,b]: Xung đột nếu: o Hoặc là x>0 và y>x (xung đột ở bên bờ 1) o Hoặc là 3-x>0 và 3-y>3-x (xung đột bên bờ 2) Tập trạng thái có thể đến từ [x,y,true] :[x-1,y,false], [x-2,y, false], [x- 1,y-1,false], [x,y-1,false], [x,y-2,false] Tương tự ta có tập trạng thấy[x,y,false]: [x+1,y,true], [x,y+1,true], [x+1,y+1,true],[x+2,y,true],[x,y+2,true] Thực tế thì phải xem xét xem các giá trị thực của x, y Trạng thái đầu: [3, 3, true] Trạng thái đích: [0, 0, false] 8 Downloaded by sau xanh (saudinh2@gmail.com) lOMoARcPSD|39270540 CHƯƠNG 3 Lập trình trò chơi 3.1 Trò chơi cho người chơi 3.1.1 Giới thiệu tổng quan trò chơi Trò chơi được xây dựng dưới dạng web game, xử dụng HTML, CSS và Javascript để lập trình thuật toán và giao diện người dung Trò chơi bao gồm phần đăng nhập, đồng hồ tính thời gian 3.1.2 Mã nguồn thuật toán và giải thích Mã nguồn cơ chế hoạt động của trò chơi Cách nhận diện tu sĩ và quỷ trong khi chuyển đổi trạng thái của tu sĩ hoặc quỷ từ bờ này sang bờ kia: var game=function() { var p=0; var m=0; for(var i=0;i

Ngày đăng: 25/03/2024, 17:26

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

Tài liệu liên quan