Mục tiêu
Bài tập lớn này có mục tiêu đánh giá năng lực viết và tổ chức chương trình, năng lực tự học sử dụng thư viện, KHÔNG có mục tiêu đánh giá khả năng thiết kế đồ họa hay tính sáng tạo hay kịch bản game thú vị. Do đó, sinh viên không phải quan tâm đến các việc không có tính kỹ thuật như việc chọn kịch bản thú vị, hình ảnh đẹp, âm thanh hay. (Trừ các bạn muốn vào top 10%).
Yêu cầu
Hãy xây dựng một chương trình trò chơi với đề tài và nội dung tự chọn. Hạn nộp trong 3 tuần cuối học kỳ (chi tiết do giáo viên thực hành thông báo sau).
Sinh viên cần đặt tại tài khoản Github cá nhân và nộp bài định kỳ (commit và push). Repository cần để chế độ private cho đến khi được yêu cầu mở public để giáo viên chấm bài. Để chứng minh quá trình làm bài, và chứng minh code là của bạn, bạn cần giữ lịch sử nộp bài tại repositry. Nếu đổi repository giữa học kỳ thì nên giữ repository cũ để có cho giáo viên xem đầy đủ lịch sử làm bài. Bạn có thể dùng chính repo dành cho các bài học online để phát triển thành repository cho sản phẩm bài tập lớn.
Barem dự kiến:
4 - 6: Học và làm game theo nội dung hướng dẫn hàng tuần của giáo viên, nộp bài đều đặn tại Github. Điểm đánh giá theo khối lượng code đã nộp, mức độ đúng hạn của các lần nộp, và mức độ hiểu code.
6.5 - 7:
(1) Game tự viết với thuật toán đơn giản và không đồ họa; hoặc
(2) Lấy cơ sở từ code được hướng dẫn và phát triển thêm một chút (ví dụ: thay đổi kịch bản; hoặc thêm âm thanh; hoặc thêm hoạt hình đơn giản, hoặc text)
7.5 - 8.5:
(1) Game tự viết có thuật toán nằm ngoài chương trình môn học (điểm đánh giá theo độ khó của thuật toán). hoặc
(2) Game tự viết có đồ họa đơn giản.
(3). Game phát triển từ code mẫu nhưng có thay đổi đáng kể về nội dung và bổ sung đáng kể các tính năng mới.
(điểm của loại (2) và (3) đánh giá theo số những tính năng tự làm hoặc tự học như âm thanh, nhạc nền, texture, hoạt hình, chuyển động, thuật toán,....)
9 -10: Chất lượng ở top 10% của lớp.
Ví dụ về một số game có dùng đồ họa:
Ngưỡng điểm 9-10: SwordmanX Dino in Jungle
Yêu cầu nộp bài:
Sinh viên cần để code project tại github ngay từ khi mới bắt đầu viết, trong đó có cả phần làm code mẫu theo hướng dẫn của giáo viên (rất quan trọng đối với ngưỡng điểm 4-6). Code cần để chế độ private cho đến khi nộp bài mới mở public. Tự bảo vệ và tự chịu trách nhiệm, không để người khác sao chép code của bạn trước thời hạn nộp bài.
Sinh viên cần tự xác định trước ngưỡng điểm mình muốn đạt được, và chứng minh cho giáo viên rằng mình xứng đáng được ngưỡng điểm đó. Cụ thể là sinh viên cần demo sản phẩm cho giáo viên, liệt kê và demo các tính năng mình đã học và làm được.
File README trong repo cần có các nội dung: (1) Tên và mã sinh viên, (2) Giới thiệu chủ đề game trong 1-2 câu. (3). Ngưỡng điểm bạn cho là bạn xứng đáng. (4) Các lý do bảo vệ ngưỡng điểm đó (chiểu theo barem ở trên, liệt kê các tính năng tự làm tự học, các thuật toán đã cài).
Cần liệt kê đầy đủ các nguồn tham khảo, ví dụ URL tới các tutorial tại web hoặc Youtube, link lấy các file ảnh và âm thanh, mô tả mức độ sử dụng AI trong khi viết code.
Để hướng đến mức điểm 9-10, hãy nêu thêm điểm nổi bật trong game của bạn.
Cách chấm bài
Trong giờ thực hành của 03 tuần cuối kì, sinh viên sẽ demo bài tập lớn, giáo viên sẽ hỏi vấn đáp để kiểm tra mức độ hiểu code và phát hiện các trường hợp quay cóp.
Sinh viên cần hiểu rõ toàn bộ code mình viết hoặc sử dụng, nếu có phần nào không hiểu sẽ nhận điểm 0 cho bài tập lớn. Không được lấy code của bất cứ nguồn nào trừ code mẫu của môn học. Không dùng thư viện đồ họa nào ngoài các thư viện SDL2 được giới thiệu trong môn học. Nếu tham khảo code của người khác mà không ghi rõ trong README thì sẽ bị coi là quay cóp.
Checklisk khi chấm bài
(danh sách dưới đây liệt kê tính năng để giáo viên dễ chấm bài chứ không có nghĩa các bạn cần làm hết mới được 10 nhé)
Tự làm những phần nào, phần nào lấy từ các kiểu tutorial/code mẫu
Liệt kê các nguồn tham khảo (code, hình ảnh, âm thanh...)
Dùng các lệnh vẽ hình
Texture
Background
Event bàn phím
Event chuột
Animation (hoạt hình)
Xử lý va chạm
Score (có tính điểm)
Lưu bảng điểm
Sound
Sound on off
Background music
Font
Menu
Pause/Resume
Status bar / lives (mạng/máu...)
Các điểm nổi bật khác
Code viết dễ đọc (gv đánh giá)
Hiểu rõ code (gv đánh giá)