You are on page 1of 6

GVLT: Nguyễn Khắc Huy GVHD: Nguyễn Lê Hoàng Dũng – Nguyễn Đức Huy

CTT527 – Phát triển game

Mini project 2D
Hạn nộp: 21g00 28/12/2017
Mục tiêu: Hoàn thiện kỹ năng xây dựng ứng dụng game 2D
Nội dung nộp: Mã nguồn ứng dụng và báo cáo ghi nhận lại các kỹ thuật mà bạn tâm
đắc như: kỹ thuật tối ưu xử lý, các thuật toán hỗ trợ logic game, các kỹ thuật render đồ
họa, v.v…

A. MÔ TẢ ỨNG DỤNG GAME

Một nhà khảo cổ muốn khám phá và truy tìm các cổ vật được đặt trong
các mê cung. Nhiệm vụ của nhà khảo cổ là phải tìm đường thu thập các cổ vật,
sau đó tìm cách thoát ra khỏi mê cung. Điểm bắt đầu của nhà khảo cổ cũng
chính là lối vào của mê cung. Sau một thời gian quan sát và phân tích trên các
tài liệu cổ kết hợp những mê cung đã trải nghiệm, nhà khảo cổ đã ghi nhận lại
được các đặc trưng sau:
- Mỗi mê cung có duy nhất một lối vào vào lối ra được đặt ở một vị trí bất kỳ
trong mê cung.
GVLT: Nguyễn Khắc Huy GVHD: Nguyễn Lê Hoàng Dũng – Nguyễn Đức Huy

Hình 1-Một góc bên trong mê cung với điểm đầu và cuối (ảnh minh họa)

- Xung quanh và bên trong mê cung được bao bọc và ngắn cách thành các lối đi
bởi vách đá cao và chắc chắn (Hình 1).
- Các cổ vật được đặt rải rác trên bản đồ (Ví dụ huy hiệu trong Hình 1 là một cổ
vật). Mỗi cổ vật có một trọng lượng riêng dao động từ 20 gram đến 20
kilogram, các nhà khoa học có thể xác định được số năm tuổi dễ dàng bằng
phương pháp đồng vị phóng xạ. Cổ vật có 4 loại chính gồm trang sức, vũ khí,
tượng đúc và vật dụng.
Biết rằng trang sức được cấu tạo bởi một trong ba loại vật liệu và vàng,
bạc và đồng, vàng có độ bền cao nhất được qui thành giá trị là 1000 đơn vị,
tương ứng cho bạc và đồng lần lượt là 800 và 300 đơn vị. Mỗi năm trôi qua
trang sức bị hao mòn độ bền là 0.0001%. Để khôi phục sửa chửa trang sức cần
tốn 200$ cho mỗi đơn vị độ bền. Riêng vàng và bạc cần tốn thêm khí 0.2 lít khí
gas để sửa chữa.
Mỗi vũ khí được đánh giá có độ sát thương khác nhau. Riêng vật dụng thì
có độ hữu dụng để đánh giá giá trị giữa các vật dụng.
- Người chơi có thể di chuyển nhà khảo cổ đi lại bên trong mê cung sử dụng các
phím mũi tên trên bàn phím hoặc các phím tương ứng A, S, D, W.
- Trò chơi có nhiều mê cung với kích thước khác nhau thử thách người chơi.
Trong đó một số mê cung sẽ xuất hiện ngẫu nhiên các loại quái vật ở một số vị
GVLT: Nguyễn Khắc Huy GVHD: Nguyễn Lê Hoàng Dũng – Nguyễn Đức Huy

trí ngẫu nhiên bên trong mê cung. Mỗi lần di chuyển quái vật chỉ di chuyển 1 ô,
tuy nhiên khi phát hiện ra nhà khảo cổ quái vật sẽ di chuyển 1 lần 2 ô. Mỗi loại
quái vật sẽ có tầm nhìn khác nhau và cách di chuyển khác nhau. Ví dụ:
o Xác ướp sẽ di chuyển mỗi lần 1 ô lân cận theo 4 hướng 2, 4, 6, 8 (Hình
3). Đồng thời có tầm nhìn là 4 ô lân cận không kể vị trí đang đứng theo

các hướng như Hình 2.

Hình 2-Tầm nhìn xác ướp

Hình 3- Xác ướp di chuyển

o Bò cạp sẽ di chuyển mỗi lần 1 ô theo 4 hướng 1, 3, 5, 7 (Hình 5).


Đồng thời có tầm nhìn là 4 ô chéo lân cận không kể vị trí đang
đứng như Hình 4.

Hình 4-Tầm nhìn bò cạp

Hình 5- Bò cạp di chuyển

o Cương thi sẽ có cách di chuyển giống với xác ướp, tuy nhiên tầm
nhìn thì kết hợp giữa bò cạp và xác ướp như Hình 6 bên dưới.

Hình 6-Tầm nhìn của cương thi

Do có sẵn các tài liệu cổ để lại, nên nhà khảo cổ luôn biết trước được
rằng mê cung sắp sửa đi vào có quái vật hay không. Ghi chú thêm là các
bức tường # có thể ngăn cản tầm nhìn của quái vật.
GVLT: Nguyễn Khắc Huy GVHD: Nguyễn Lê Hoàng Dũng – Nguyễn Đức Huy

B. YÊU CẦU
- Sử dụng XNA framework để xây dựng ứng dụng game dựa theo mô tả
trên.
- Ứng dụng game xây dựng cần đảm bảo các qui ước như sau:
o Phát sinh ngẫu nhiên mê cung có kích thước xác định cho trước
𝑚 𝑥 𝑛, và trong mê cung có các bức tường, cổ vật đặt ở các vị trí
ngẫu nhiên.
o Người chơi điều khiển nhân vật chính di chuyển trong mê cung,
nhặt các cổ vật. Lưu ý rằng người chơi không thể di chuyển qua
các vị trí đã đặt các bức tường.
o Thông báo người chơi gianh được chiến thắng khi nhặt được ít nhất
một cổ vật và di chuyển đến lối ra. Mỗi lần nhặt được một cổ vật,
nhà khảo cổ phải mang cổ vật đó trên người. Thông báo tổng trọng
lượng cổ vật mà nhà khảo cổ đang mang trên người cùng thông tin
số bước mà nhà khảo cổ đã di chuyển trong suốt quá trình chơi.
Biết rằng mỗi bước đi sẽ tương ứng với 1 ô di chuyển.
o Sau khi kết thúc màn chơi (nhà khảo cổ đã đến cửa ra của mê
cung), thông báo cho người dùng các thông tin sau:
 Số điểm thu được sau màn chơi. Số điểm được tinh bằng
công thức:
𝑆ố đ𝑖ể𝑚 = max(3 𝑥 𝑆ố ô 𝑡𝑟ố𝑛𝑔∗ − 𝑆ố 𝑏ướ𝑐 𝑐ℎâ𝑛 đã 𝑑𝑖 𝑐ℎ𝑢𝑦ể𝑛, 0)
*Số ô trống: là số ô không có đặt các bức tường #, bao gồm cả các ô đặt cổ vật.
 Số lượng và tổng trọng lượng các cổ vật mà nhà khảo cổ đã
mang theo đến lối ra. Lưu ý rằng nhà khảo cổ chỉ có thể
mang theo được tối đa là 50 kg.
- Cho phép hiển thị danh sách 5 người chơi có điểm cao nhất mỗi khi
người chơi chinh phục thành công một mê cung (màn chơi kết thúc).
- Cho phép người chơi chọn lưu xuống tập tin toàn bộ mê cung sau khi
màn chơi kết thúc bao gồm: mê cung với các khối tường gạch, các cổ vật
và các quái vật. Sinh viên tự thiết kế cấu trúc tập tin lưu trữ.
- Hỗ trợ hiển thị đường đi từ lối vào đến lối ra cho nhà khảo cổ trực tiếp
trên mê cung (một dạng cheat hỗ trợ thêm cho người chơi).
- Giao diện tương tác với người chơi thân thiện dễ dùng. Ví dụ: có menu
cho người chơi chọn lựa các option như kích thước mê cung, màu sắc
riêng cho từng đối tượng thể hiện giao diện, dễ thao tác.
GVLT: Nguyễn Khắc Huy GVHD: Nguyễn Lê Hoàng Dũng – Nguyễn Đức Huy

- Các yêu cầu khác: Hiển thị tên ngay phía trên nhân vật, có âm thanh khi
nhà khảo cổ chạm trán với các quái vật hoặc về đến cửa ra, có nhạc nền
trong suốt quá trình chơi.
- Viết báo cáo ghi nhận lại các kỹ thuật mà bạn đã tâm đắc sử dụng trong
quá trình xây dựng ứng dụng như: mẫu thiết kế, thuật toán đã áp dụng,
cấu trúc dữ liệu nào tối ưu xử lý, v.v… Lưu ý cần ghi rõ điểm mạnh và
điểm yếu khi áp dụng các kỹ thuật này. Nếu có đề xuất cải tiến, hãy mạnh
dạn ghi nhận lại.

 Yêu cầu nâng cao (0.5đ):


Nhằm đảm bảo tính đúng đắn của trò chơi cũng như hỗ trợ cho nhiều người
chơi nhất có thể. Chúng ta cần xây dựng thêm các chức năng hỗ trợ như sau:
a. Do mê cung được phát sinh ngẫu nhiên, nên sẽ tồn tại một mê cung
không có thành phần liên thông đi qua hai điểm ứng với lối vào và
lối ra hay còn gọi là mê cung không có lối thoát (Hình 7). Hãy phát
sinh mê cung đảm bảo rằng có duy nhất một thành phần liên thông
đi qua lối vào và lối ra.

Hình 7-Mê cung không có lối thoát

b. Danh sách đề nghị các cổ vật mà nhà khảo cổ nên lấy từ mê cung
sao cho tổng trọng lượng cổ vật phải mang ra là ít nhất mà tổng số
năm tuổi của các cổ vật là lớn nhất.

C. QUY ĐỊNH
- Bài làm cần được lưu theo cấu trúc thư mục như bên dưới
GVLT: Nguyễn Khắc Huy GVHD: Nguyễn Lê Hoàng Dũng – Nguyễn Đức Huy

- Trong đó:
o Thư mục gốc 1412001: Sửa tên lại thành mã số sinh viên của bạn.
o bin: thư mục chứa tập tin thực thi chính của trò chơi.
o doc: thư mục chứa hình tập tin báo cáo và tập tin hình ảnh sơ đồ
UML.
o ref: các liên kết hoặc tài liệu đã tham khảo sử dụng trong suốt quá
trình làm bài.
o src: mã nguồn bài làm.
- Mỗi ngày nộp trễ sẽ bị trừ 15% số điểm trên tổng điểm của bài tập. Thời
hạn tối đa nộp trễ là 3 ngày. Sau thời gian này sinh viên sẽ không được
nhận bài dưới bất kỳ hình thức nào, và sẽ nhận điểm 0 cho bài tập này.
- Sinh viên nén toàn bộ bài làm và đặt tên MSSV.zip/rar

D. TIÊU CHÍ ĐÁNH GIÁ


 Thực hiện đúng với yêu cầu đã đề ra.
 Trò chơi được cài đặt hoàn chỉnh.

You might also like