| Tên | MSSV | Vai trò |
|---|---|---|
| Phạm Quang Minh | 23120298 | Nhóm trưởng |
| Võ Đăng Khoa | 23120286 | Thành viên |
https://www.youtube.com/watch?v=8C4z5e41iAE
- Thiết lập repository git, cấu hình CI, .gitignore, quy tắc đặt tên nhánh, viết commit
- Tái cấu trúc lớp Entity thành abstract class và phân chia thành các module
- Xây dựng tài liệu kiến trúc (ARCHITECTURE.md) và quy ước code (CODING_CONVENTION.md)
- Triển khai EntityManager để quản lý danh sách thực thể và vòng đời
- Phát triển GameManager để điều phối vòng lặp game chính và quản lý trạng thái
- Tạo lớp Renderer để tách logic hiển thị ra khỏi GameManager
- Viết test cho Entity, EntityManager
- Triển khai Observer Pattern với hệ thống sự kiện EventSystem
- Áp dụng Dependency Injection trong Score Manager, Collision System, GameManager
- Triển khai Factory Pattern cho Entity và Movement
- Triển khai Strategy Pattern cho Movement (zigzag, adaptive, circular, sinusoidal, straight)
- Triển khai hệ thống độ khó DifficultySystem
- Thêm hiệu ứng bất khả xâm phạm cho Player
- Viết unit test cho những phần mình làm
- Quản lý việc merge code từ các nhánh feature và giải quyết xung đột
- Viết báo cáo tiến độ, báo cáo đồ án
- Chuyển đổi từ raw pointers (Entity*) sang smart pointers (std::unique_ptr) để tăng cường quản lý bộ nhớ và loại bỏ rò rỉ
- Vẽ class diagram
- Tạo lớp AssetManager để tải và lưu trữ texture
- Triển khai InputManager để xử lý đầu vào từ người chơi
- Phát triển và triển khai CollisionSystem với Grid-based spatial partitioning để tối ưu hóa phát hiện va chạm
- Tối ưu hóa hiệu suất và cải thiện xử lý lỗi trong vòng lặp chính
- Kiểm tra và đảm bảo mã nguồn tuân thủ quy ước coding theo CODING_CONVENTION.md
- Chuẩn hóa và cải thiện chất lượng comment trong toàn bộ mã nguồn để tăng tính dễ đọc và bảo trì
- Triển khai State Pattern cho các trạng thái game
- Triển khai Strategy Pattern và Factory Pattern cho hệ thống vũ khí Weapon (laser, spread, standard)
- Thiết kế và triển khai các giao diện menu
- Tạo kịch bản và quay video demo
- Viết unit test cho những phần mình làm
- Kiểm tra code trước khi nộp
- Sử dụng doxygen tạo tài liệu tự động
- Phạm Quang Minh: 50% đóng góp
- Võ Đăng Khoa: 50% đóng góp
Tỉ lệ điểm: Chia theo tỉ lệ 10:10
- Phân công công việc: Phân chia các module rõ ràng giữa các thành viên, mỗi người phụ trách các thành phần khác nhau của trò chơi
- Hoạt động Git:
- Phạm Quang Minh: Hoạt động thường xuyên
- Võ Đăng Khoa: Hoạt động thường xuyên
- Link Drive biên bản họp nhóm, insight: https://drive.google.com/drive/u/0/folders/1L1ok6l2pXjizwznmd0EOryBF1cWQUy9G
- Cài đặt lại mã nguồn theo hướng đối tượng (3%): Đã hoàn toàn cấu trúc lại mã nguồn, tách biệt rõ ràng các thành phần
- Chức năng thêm và cải tiến (14%):
- Hệ thống phát hiện va chạm tối ưu sử dụng phân vùng không gian (Grid-based spatial partitioning)
- Hệ thống sự kiện để giao tiếp giữa các thành phần độc lập
- Quản lý bộ nhớ tự động với Smart Pointers
- Hệ thống độ khó Difficulty System
- Hệ thống di chuyển Movement Stategies
- Hệ thống vũ khí Weapon Strategies
- Hiệu ứng bất khả xâm phạm
- Màn hình menu, pause, gameover, chọn độ khó
- Hệ thống tính điểm score manager
- Thêm mạng sống
- Bố cục giao diện hợp lý (3%): Giữ nguyên bố cục trò chơi gốc, bố trí giao diện menu, pause, instruction, chọn độ khó hợp lí
- Kiến trúc phân tầng chia thành các module rõ ràng:
- Core: Các thành phần cốt lõi được sử dụng bởi nhiều module khác
- Entities: Các đối tượng trong trò chơi như Người chơi, Tiểu hành tinh, Đạn
- Logic: Các hệ thống xử lý logic như Va chạm, Quản lý thực thể, Quản lý trò chơi
- Input: Xử lý đầu vào từ người dùng
- Presentation: Hiển thị hình ảnh và hoạt ảnh
- Mẫu thiết kế đã áp dụng:
- Singleton: Hệ thống sự kiện, Quản lý tài nguyên
- Factory: Tạo đối tượng và chiến lược
- Strategy: Chiến lược di chuyển và vũ khí
- Observer: Hệ thống giao tiếp giữa các thành phần
- State: Quản lý trạng thái trò chơi
- Dependency Injection: Quản lý quan hệ giữa các thành phần
- Kiểm thử đơn vị: Sử dụng Google Test viết test đầy đủ cho các module
- Quy ước lập trình: Tuân thủ quy ước đặt tên, định dạng mã theo tài liệu CODING_CONVENTION.md
- Xem xét mã nguồn: Thực hiện review code khi merge các nhánh tính năng vào nhánh develop
- Quản lý phiên bản: Sử dụng git flow với các nhánh tính năng (feature), phát triển (develop), và chính (main) rõ ràng
- Tài liệu kiến trúc: Tệp ARCHITECTURE.md mô tả chi tiết cấu trúc phân tầng của hệ thống
- Sơ đồ lớp: Biểu đồ UML thể hiện mối quan hệ giữa các thành phần
- Tài liệu API: Sử dụng Doxygen để tạo tài liệu từ chú thích trong mã nguồn
- **Tài liệu Design Pattern **: Có đầy đủ tài liệu về các Design Pattern được sử dụng trong đồ án (Observer, State, Stategy, Factory)
- Design Pattern: State, Observer
- DifficultySystem: Adaptive Difficulty
- Mutex