Đồ á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
PROJECT 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á kho báu chôn bí mật kim tự tháp Ai Cập Trong trình khảo sát ông biết có đường độc đạo để vào kim tự tháp Hơn sau thời gian nghiên cứu ông biết cấu trúc bên Kim Tự Tháp sau: Hình 1: Một đồ mẫu kim tự tháp Bảng đồ kim tự tháp lưới hình vuông kích thước [N*N] hình vẽ Trong kim tự tháp có xác ướp (MUMMY) sẵn sàng ăn thịt người lỡ nhầm vào quậy nơi ngủ Không bên có số cạm bẫy nguy hiểm hố sâu rơi vào chết Tuy nhiên, nhà khảo cổ lại xác: xác ướp, cạm bẫy kho báu đặt đâu Biết tính nguy hiểm, nhà khảo cổ nhờ người bạn ông chuyên gia lập trình tạo ROBOT thông minh giúp ông vào kim tự tháp để truy tìm kho báu Mục tiêu ROBOT vào kho báu lấy vàng trở an toàn Trong vai trò người bạn nhà khảo cổ, bạn xây dựng ROBOT thông minh giúp ông tìm kho báu thành công MỘT SỐ QUI ƯỚC ROBOT bắt đầu vị trí góc ([1,1]) hình vẽ 1, vị trí ô xác định cặp giá trị (X,Y) Nếu ô vuông có chứa xác ướp (MUMMY) ô vuông xung quanh có mùi hôi (STENCH) Nếu ô vuông cạm bẫy (PIT) ô xung quanh có tiếng gió hú (BREEZE) Trong ô vuông có chứa kho báu (GOLD) ROBOT thấy ánh sáng lập lánh (GLITTER) Khi ROBOT đâm vào tường (WALL) phát tiếng BUMP Nếu xác ướp (MUMMY) bị giết thét tiếng hét hãi hùng (SCREAM) mà ROBOT đứng đâu nghe thấy ROBOT có khả cảm nhận giới xung quanh qua kí hiệu Ví dụ, có mùi hôi (STENCH), tiếng gió hú (BREEZE), có ánh sáng lấp lánh vàng (GLITTER), tiếng BUMP tiếng thét (SCREAM) giác quan cẩm nhận ROBOT biểu diễn [STENCH, BREEZE, GLITTER, NONE, NONE] Một khuyết điểm ROBOT thẳng (FORWARD), quay trái (TURN_LEFT) quay phải (TURN_RIGHT) với góc quay 90O Ngoài ra, có hành động GRAB để lấy vật ô với ROBOT (ví dụ vàng (GOLD) chẳng hạn) Trong trình tìm kho báu ROBOT có mũi tên (ARROW) để tự vệ, ROBOT bắn (SHOOT) lần Hành động trèo (CLIMB) kim tự tháp thực ROBOT vị trí cửa vào (vị trí xuất phát ban đầu) ROBOT chết vào ô chứa cạm bẫy (PIT) có xác ướp (MUMMY) Tuy nhiên, an toàn nhầm vào ô chứa xác ướp (MUMMY) xác ướp bị giết trước MINH HỌA LUẬT SUY LUẬN Trước bắt đầu minh họa trình suy luận tìm đường ROBOT ta qui ước viết tắt 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 an toàn (OK), STENCH BREEZE ô vuông [1,1], ROBOT suy ô kề [1,2] [2,1] không nguy hiểm Chúng ta đánh dấu OK cho ô Từ kiện ROBOT sống ô [1, 1] nên suy ô [1, 1] OK ta đánh dấu ô Ở vị trí ô [1,1] ROBOT cảm nhận xung quanh với giá trị [N,N,N,N,N] Hình 2: Dự đoán ô vuông an toàn Một ROBOT thông minh vào ô vuông OK Giả sử ROBOT định chuyển động lên phía trước (FORWARD) vào ô [2,1] hình 3: Hình 3: Di chuyển sang ô vuông [2, 1] Khi di chuyển sang ô [2,1] cảm nhận giá trị [N,B,N,N,N] ROBOT phát có BREEZE ô này, ROBOT suy có bẫy [PIT] nằm xung quanh ô [2,1] (có thể ô [2,2] ô [3,1]) Theo ô ROBOT qua ô [1,1] bẫy PIT ROBOT không bị rơi xuống hố Đến lúc ROBOT nhận ô đánh dấu OK ô [1,2] chưa qua Vì ROBOT khôn ngoan quay lại ô [1,1] qua ô [1,2] hình vẽ sau: Hình 4: Quá trình bước di chuyển ROBOT phát có STENCH ô [1, 2] tức phải có MUMMY đâu gần Nhưng MUMMY không nằm ô [1,1] không nằm ô [2,2] (vì nằm [2,2] ô [2,1] ROBOT phát STENCH) Do suy MUMMY nằm ô [1,3] Vì ô [1,2] BREEZE nên chắn ô [2,2] PIT suy ô [2,2] OK Do ta suy ô [3,1] PIT Từ suy luận ô [2,2] ô OK chưa qua nên ROBOT chuyển sang ô từ ô [1,2] sang ô [2,2] Từ vị trí [2,2] ta nhận ô [2,3] ô OK nên cho ROBOT di chuyển đến ô Tại ô [3,2] nhận [S,B,G,N,N] nhận vàng ô này, nên thực hành động GRAB để lấy vàng ngược lại ô an toàn để trở vị trí ban đầu CLIMB khỏi kim tự tháp Qua minh họa toán bạn thấy vấn đề khó toán xây dựng tập KB cho giúp cho ROBOT suy luận trường hợp như: “Có thể PIT ô [2,2] [3,1]” “Không có MUMMY ô [2,2]” … ĐỊNH DẠNG INPUT & OUTPUT Qui ước kí hiệu thực tạo đồ: • b: BREEZE • g: GLITTER, GOLD • p: PIT • s: STENCH • m: MUMMY A TẬP TIN BẢN ĐỒ Bản đồ kim tự tháp danh sách hai chiều mà phần tử danh sách chứa kí hiệu mô tả Bản đồ lưu tập tập tin pyramid_map.txt Dưới ví dụ tập tin đầu vào tương ứng với đồ Hình pyramid_map.txt [ [ [], [], [p], [] ], //dòng [ [], [], [], [] ], //dòng [ [m], [g], [p], [] ], //dòng [ [], [], [], [p] ] //dòng ] // Chú ý có dấu chấm sau dấu đóng ngoặc Giải thích: • Ký hiệu [ ] kí hiệu bắt đầu kết thúc giá trị phần tử ô vuông • Các giá trị nằm cặp dấu ngoặc vuông “[ ]” thông tin đại diện cho ô bảng đồ (Các giá trị cách dấu phẩy “,”) VD: [g]: Ô có GOLD (GLITTER)… • Trạng thái ô lại như: BREEZE, STENCH, bạn phải suy luận trình ROBOT di chuyển • Cần module riêng để xác định trạng thái ô mà ROBOT đứng • Ký hiệu [] danh sách rỗng, tương ứng với ô trống Hình B CÁC TẬP TIN OUTPUT Kết xuất tập tin gồm file robot_.txt visited_.txt (Ví dụ sinh viên có mã số 0612333 xuất tập tin robot_0612333.txt visited_0612333.txt) • • Nội dung tập tin robot_.txt chuỗi hành động liên tục ROBOT Nội dung tập tin visited_.txt ma trận đồ chứa thông tin đỉnh mà ROBOT suy luận trình tìm kho báu robot_.txt [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_.txt [ [[v], [[v,b], [[m], [[b], ] [v,b], [p], []], [v], [], []], [v,g,s,b], [p], []], [], [], [p]] Giải thích: File xuất chuỗi hành động ROBOT trình tìm kho báu có định dạng sau: • Chuỗi hành động cách dấu phẩy “,” • [x,y]: Chỉ tọa độ mà ROBOT qua • ACTION[x,y]: Là hành động ROBOT đích đến hành động Ví dụ: FW[2,1]: từ vị trí hành, thẳng (FORWARD) ROBOT đến ổ [2,1] GRAB[2,3]: Lấy vàng ô [2,3] • ROBOT có cách hành động sau: FORWARD ( FW ): 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 • v: đỉnh mà ROBOT qua Chú ý: Trường hợp bắn tên giết MUMMY MUMMY thét lên ta miêu tả hành động file xuất sau: • SHOOT[x,y:SCREAM] /*x,y tọa độ ô mà có MUMMY ngược lại cho vào tường có tọa độ (x,y)*/ Nếu ROBOT tông vào tường thi phát tiếng kêu BUMP • FW[x,y:BUMP] /*x,y tọa độ tường */ QUI ĐỊNH NỘP BÀI A Hình thức làm • Sinh viên làm làm nhóm (tối đa người) • Với bạn làm nhóm báo cáo source code cần ghi đầy đủ thông tin chi tiết Ngoài ra, báo cáo cần phân chia công việc rõ ràng người để giáo viên đánh giá cho điểm xác B Cấu trúc thư mục Bài tập nộp lên Moodle nén có tên .zip có cấu trúc sau: • BIN: chứa file thức thi (eg, EXE, ) bạn tạo file thực thi (Có thể bỏ qua thấy không cần thiết) • DOC: thư mực chứa file báo cáo • SRC: chứa source code tập • TEST: chứa trường hợp test bạn Mỗi CASE chứa file đồ file output yêu cầu đề Số lượng CASE thư mục TEST tùy ý (Cái để GV đánh giá số lượng trường hợp SV test thử) • Ngoài cần có file hướng dẫn chẳng hạn readme.txt để hướng dẫn cấu trúc thư mực, cách chạy chương trình v.v C Cấu trúc báo cáo • Cấu trúc tùy ý phải rõ ràng dễ đọc • Sinh viên nên trình bày chi tiết “khoe” làm (Vì GV dựa vào báo cáo để đánh giá) • Chuyển file báo cáo sang định dạng PDF nộp file DOC thư mục / doc D Thời gian nộp • Từ 29/10/2008 – 12/11/2008 chung cho lớp TH2006/01 TH2006/02 ◆☆◆ J COME ON & GOOD LUCK ! ... cạm bẫy kho báu đặt đâu Biết tính nguy hiểm, nhà khảo cổ nhờ người bạn ông chuyên gia lập trình tạo ROBOT thông minh giúp ông vào kim tự tháp để truy tìm kho báu Mục tiêu ROBOT vào kho báu lấy... vuông cạm bẫy (PIT) ô xung quanh có tiếng gió hú (BREEZE) Trong ô vuông có chứa kho báu (GOLD) ROBOT thấy ánh sáng lập lánh (GLITTER) Khi ROBOT đâm vào tường (WALL) phát tiếng BUMP Nếu xác ướp (MUMMY)... Mục tiêu ROBOT vào kho báu lấy vàng trở an toàn Trong vai trò người bạn nhà khảo cổ, bạn xây dựng ROBOT thông minh giúp ông tìm kho báu thành công MỘT SỐ QUI ƯỚC ROBOT bắt