1. Trang chủ
  2. » Luận Văn - Báo Cáo

Đồ án trò chơi đi tìm kho báu

8 1,4K 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 8
Dung lượng 242,47 KB

Nội dung

Đồ án trò chơi đi tìm kho báu Đồ án trò chơi đi tìm kho báu Đồ án trò chơi đi tìm kho báu Đồ án trò chơi đi tìm kho báu Đồ án trò chơi đi tìm kho báu Đồ án trò chơi đi tìm kho báu Đồ án trò chơi đi tìm kho báu Đồ án trò chơi đi tìm kho báu Đồ án trò chơi đi tìm kho báu Đồ án trò chơi đi tìm kho báu Đồ án trò chơi đi tìm kho báu

Trang 1

PROJECT 2

TRUY TÌM KHO BÁU

Giáo viên hướng dẫn thực hành:

Nguyễn Ngọc Thảo, nnthao@fit.hcmuns.edu.vn

Lê Ngọc Thành, lnthanh@fit.hcmuns.edu.vn

Võ Đình Phong, vdphong@fit.hcmuns.edu.vn Trần Ngọc Trung, tntrung@fit.hcmuns.edu.vn

MIÊU TẢ TRÒ CHƠI

Một nhà khảo cổ học vô tình khám phá được một kho báu được chôn bí mật trong một kim tự tháp Ai Cập Trong quá trình khảo sát ông biết được rằng có một con đường độc đạo duy nhất để đi vào kim tự tháp này Hơn nữa sau một thời gian nghiên cứu ông biết được cấu trúc bên trong Kim Tự Tháp như sau:

Hình 1: Một bản đồ mẫu trong kim tự tháp

Trang 2

 Bảng đồ kim tự tháp là một lưới các hình vuông kích thước [N*N] như hình vẽ

 Trong kim tự tháp này có một xác ướp (MUMMY) sẵn sàng ăn thịt người nếu ai đó đi lỡ đi nhầm vào quậy nơi nó ngủ

 Không những thế bên trong còn có một số cạm bẫy nguy hiểm là các hố sâu và nếu ai rơi vào thì chết chắc

 Tuy nhiên, nhà khảo cổ lại không biết chính xác: xác ướp, các cạm bẫy và kho báu đặt ở đâu

Biết tính nguy hiểm, nhà khảo cổ đã nhờ một người bạn ông là một chuyên gia lập trình tạo ra ROBOT thông minh giúp ông đi vào kim tự tháp để truy tìm kho báu Mục tiêu của con ROBOT này là đi vào kho báu lấy vàng và trở về an toàn Trong vai trò người bạn của nhà khảo cổ, bạn hãy xây dựng một ROBOT thông minh giúp ông tìm kho báu thành công 

MỘT SỐ QUI ƯỚC

 ROBOT luôn bắt đầu ở vị trí góc dưới ([1,1]) như trong hình vẽ 1, vị trí các ô được xác định bởi cặp giá trị (X,Y)

 Nếu một ô vuông có chứa xác ướp (MUMMY) thì 4 ô vuông xung quanh nó sẽ có mùi hôi (STENCH)

 Nếu một ô vuông là cạm bẫy (PIT) thì 4 ô xung quanh sẽ có tiếng gió hú (BREEZE)

 Trong ô vuông có chứa kho báu (GOLD) thì ROBOT sẽ thấy ánh sáng lập lánh (GLITTER)

 Khi ROBOT đâm vào tường (WALL) thì nó sẽ phát ra tiếng BUMP

 Nếu xác ướp (MUMMY) bị giết thì nó sẽ thét tiếng hét hãi hùng (SCREAM) mà nếu ROBOT đứng ở đâu cũng có thể nghe thấy

 ROBOT sẽ có khả năng cảm nhận thế giới xung quanh qua 5 kí hiệu Ví dụ, nếu có mùi hôi (STENCH), tiếng gió hú (BREEZE), có ánh sáng lấp lánh của vàng (GLITTER), không có tiếng BUMP và không có tiếng thét (SCREAM) thì giác quan cẩm nhận của ROBOT biểu diễn [STENCH, BREEZE, GLITTER, NONE, NONE]

 Một khuyết điểm nữa của ROBOT là nó chỉ có thể đi thẳng (FORWARD), quay trái (TURN_LEFT) và quay phải (TURN_RIGHT) với mỗi góc quay là 90O

 Ngoài ra, còn có hành động GRAB để lấy một vật gì đó trong cùng một ô với ROBOT (ví dụ vàng (GOLD) chẳng hạn) Trong quá trình đi tìm kho báu ROBOT

Trang 3

chỉ có một mũi tên (ARROW) duy nhất để tự vệ, vì vậy ROBOT chỉ có thể bắn (SHOOT) một lần duy nhất

 Hành động trèo (CLIMB) ra ngoài kim tự tháp chỉ thực hiện được khi ROBOT ở tại

vị trí cửa vào (vị trí xuất phát ban đầu) của nó

 ROBOT chết nếu nó đi vào ô chứa cạm bẫy (PIT) hoặc có xác ướp (MUMMY) Tuy nhiên, nó vẫn an toàn nếu nó đi nhầm vào ô chứa xác ướp (MUMMY) nhưng xác ướp đó đã bị giết trước đó

MINH HỌA LUẬT SUY LUẬN

Trước khi bắt đầu minh họa quá trình suy luận tìm đường của ROBOT ta qui ước các viết tắt như sau:

R: ROBOT

B: BREEZE

G: GLITTER, GOLD

OK: Ô vuông an toàn.

P: PIT

S: STENCH

V: VISITED

M: MUMMY

N: NONE

Ở vị trí ban đầu là an toàn (OK), không có STENCH và BREEZE ở ô vuông [1,1], ROBOT có thể suy ra 2 ô kề nó [1,2] và [2,1] là không nguy hiểm Chúng ta đánh dấu

OK cho các ô này Từ sự kiện ROBOT vẫn sống khi ở ô [1, 1] nên suy ra ô [1, 1] cũng

OK và ta đánh dấu các ô này Ở vị trí ô [1,1] ROBOT cảm nhận xung quanh với giá trị [N,N,N,N,N]

Trang 4

Hình 2: Dự đoán các ô vuông an toàn.

Một ROBOT thông minh sẽ chỉ đi vào các ô vuông OK Giả sử ROBOT quyết định chuyển động lên phía trước (FORWARD) vào ô [2,1] như hình 3:

Hình 3: Di chuyển sang ô vuông [2, 1]

Khi di chuyển sang ô [2,1] nó cảm nhận giá trị [N,B,N,N,N] ROBOT phát hiện ra có BREEZE ở ô này, do đó ROBOT sẽ suy ra có một cái bẫy [PIT] nằm đâu đó xung quanh ô [2,1] (có thể là ô [2,2] hoặc ô [3,1]) Theo những ô ROBOT đã đi qua thì ô [1,1] không có bẫy PIT vì ROBOT đã ở đó và không bị rơi xuống hố Đến lúc này ROBOT nhận ra vẫn còn một ô được đánh dấu là OK là ô [1,2] chưa được đi qua Vì vậy nếu là một ROBOT khôn ngoan thì nó sẽ quay lại ô [1,1] và đi qua ô [1,2] như hình

vẽ sau:

Trang 5

Hình 4: Quá trình các bước di chuyển tiếp theo.

ROBOT phát hiện có STENCH ở ô [1, 2] tức là phải có MUMMY ở đâu gần đó Nhưng MUMMY không nằm trong ô [1,1] cũng không nằm trong ô [2,2] (vì nếu nó nằm ở [2,2] thì ô [2,1] ROBOT đã phát hiện ra STENCH) Do đó có thể suy ra MUMMY nằm

ở ô [1,3] Vì ô [1,2] không có BREEZE nên chắc chắn rằng ô [2,2] không thể là PIT được vì vậy suy ra ô [2,2] là OK Do đó ta suy ra ô [3,1] là PIT Từ những suy luận trên thì ô [2,2] hiện tại là ô OK và chưa đi qua nên ROBOT sẽ chuyển sang ô từ ô [1,2] sang

ô [2,2] Từ vị trí [2,2] ta nhận được ô [2,3] là ô OK nên cho ROBOT di chuyển đến ô này Tại ô [3,2] nó nhận được [S,B,G,N,N] và nó nhận được vàng tại ô này, nên thực hiện hành động GRAB để lấy vàng và đi ngược lại những ô an toàn để trở về vị trí ban đầu và CLIMB ra khỏi kim tự tháp

Qua minh họa bài toán các bạn thấy rằng vấn đề khó nhất ở bài toán này là xây dựng một tập KB cho giúp cho ROBOT có thể suy luận ra những trường hợp như: “Có thể PIT ở các ô [2,2] hoặc [3,1]” hoặc “Không có MUMMY ở ô [2,2]” …

ĐỊNH DẠNG INPUT & OUTPUT

Qui ước kí hiệu khi thực hiện tạo bản đồ:

b: BREEZE

g: GLITTER, GOLD

p: PIT

s: STENCH

Trang 6

m: MUMMY

A TẬP TIN BẢN ĐỒ

Bản đồ kim tự tháp là một danh sách hai chiều mà mỗi phần tử là một danh sách chứa các kí hiệu đã mô tả ở trên Bản đồ này được lưu trong tập tập tin pyramid_map.txt Dưới đây là ví dụ tập tin đầu vào tương ứng với bản đồ Hình 1

pyramid_map.txt

[

[ [], [], [p], [] ], //dòng 1

[ [], [], [], [] ], //dòng 2

[ [m], [g], [p], [] ], //dòng 3

[ [], [], [], [p] ] //dòng 4

] // Chú ý có dấu chấm ngay sau dấu đóng ngoặc

Giải thích:

• Ký hiệu [ ] là kí hiệu bắt đầu và kết thúc giá trị phần tử của một ô vuông

• Các giá trị nằm giữa 2 cặp dấu ngoặc vuông “[ ]” chỉ thông tin đại diện cho mỗi ô

của bảng đồ (Các giá trị cách nhau bằng dấu phẩy “,”).

 VD: [g]: Ô này có GOLD (GLITTER)…

• Trạng thái các ô còn lại như: BREEZE, STENCH, các bạn phải suy luận ra trong quá trình ROBOT di chuyển

• Cần module riêng để xác định trạng thái của ô hiện tại mà ROBOT đang đứng

• Ký hiệu [] là danh sách rỗng, tương ứng với các ô trống trong Hình 1

B. CÁC TẬP TIN OUTPUT

Kết quả xuất ra tập tin gồm 2 file robot_<MSSV>.txt và visited_<MSSV>.txt (Ví dụ sinh viên có mã số 0612333 sẽ xuất ra tập tin robot_0612333.txt và visited_0612333.txt)

• Nội dung tập tin robot_<MSSV>.txt là chuỗi hành động liên tục của ROBOT

• Nội dung tập tin visited_<MSSV>.txt là ma trận bản đồ chứa thông tin các đỉnh mà ROBOT suy luận ra trong quá trình tìm kho báu

Trang 7

[1,1], FW[2,1], TL[2,1], TL[2,1], FW[1,1], TR[1,1], FW[2,1], TR[2,2], TL[2,2], FW[2,3], GRAB[2,3], , ,CLIMB[1,1]

visited_<MSSV>.txt

[

[[v], [v,b], [p], []],

[[v,b], [v], [], []],

[[m], [v,g,s,b], [p], []],

[[b], [], [], [p]]

]

Giải thích:

File xuất là một chuỗi hành động của ROBOT trong quá trình tìm kho báu có định dạng như sau:

• Chuỗi hành động cách nhau bằng dấu phẩy “,”

• [x,y]: Chỉ tọa độ mà ROBOT đi qua

• ACTION[x,y]: Là hành động của ROBOT và đích đến của hành động đó

 Ví dụ:

 FW[2,1]: từ vị trí hiện hành, đi thẳng (FORWARD) thì ROBOT đến được

ổ [2,1]

 GRAB[2,3]: Lấy vàng ở ô [2,3]

• ROBOT có cách hành động sau:

 FORWARD ( FW ): đi thẳng

 TURN RIGHT (TR): quay phải 90 độ

 TURN LEFT (TL): quay trái 90 độ

 SHOOT: Bắn tên

 GRAB: Lấy vàng

 CLIMB: Trèo ra ngoài

• v: đỉnh mà ROBOT đã đi qua

Chú ý:

Trường hợp bắn tên và giết được MUMMY thì MUMMY sẽ thét lên ta miêu tả hành động trong file xuất như sau:

SHOOT[x,y:SCREAM] /*x,y là tọa độ ô mà có MUMMY ngược lại thì cho nó vào

Trang 8

tường có tọa độ (x,y)*/

Nếu ROBOT tông vào tường thi nó sẽ phát ra tiếng kêu BUMP

FW[x,y:BUMP] /*x,y là tọa độ tường */

QUI ĐỊNH NỘP BÀI

A Hình thức làm bài

• Sinh viên có thể làm một mình hoặc làm nhóm (tối đa 2 người)

• Với các bạn làm nhóm thì trong bài báo cáo và source code cần ghi đầy đủ thông tin chi tiết cả 2 Ngoài ra, trong báo cáo cần phân chia công việc rõ ràng của mỗi người để giáo viên có thể đánh giá và cho điểm chính xác hơn

B. Cấu trúc thư mục

Bài tập nộp lên Moodle được nén có tên <MSSV>.zip và có cấu trúc như sau:

• BIN: chứa file thức thi (eg, EXE, ) nếu bạn có thể tạo được các file thực thi (Có thể bỏ qua nếu thấy không cần thiết)

• DOC: thư mực chứa file báo cáo

• SRC: chứa source code bài tập

• TEST: chứa các trường hợp test của bạn

Mỗi CASE sẽ chứa các file bản đồ và các file output như yêu cầu của đề bài.

 Số lượng CASE trong thư mục TEST là tùy ý (Cái này để GV đánh giá số lượng trường hợp SV đã test thử)

• Ngoài ra cần có file hướng dẫn chẳng hạn như readme.txt để hướng dẫn cấu trúc thư mực, cũng cách chạy chương trình v.v

C. Cấu trúc bài báo cáo

• Cấu trúc tùy ý nhưng phải rõ ràng và dễ đọc

Sinh viên nên trình bày chi tiết và “khoe” những gì mình làm được (Vì GV cũng

sẽ dựa vào bài báo cáo để đánh giá).

• Chuyển file báo cáo sang định dạng PDF và nộp cùng file DOC trong thư mục /

doc.

D Thời gian nộp bài

• Từ 29/10/2008 – 12/11/2008 chung cho cả 2 lớp TH2006/01 và TH2006/02

◆☆◆

 J COME ON & GOOD LUCK !

Ngày đăng: 08/12/2016, 14:45

TỪ KHÓA LIÊN QUAN

w