Skip to content

Ming1309/Asteroids-Game

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

106 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Refactoring và Nâng cấp Asteroid Game bằng C++

Thông tin Nhóm

Tên MSSV Vai trò
Phạm Quang Minh 23120298 Nhóm trưởng
Võ Đăng Khoa 23120286 Thành viên

Video demo

https://www.youtube.com/watch?v=8C4z5e41iAE

Công việc (đã thực hiện)

Phạm Quang Minh - 23120298

  • 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

Võ Đăng Khoa - 23120286

  • 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

Tỉ lệ đóng góp và điểm số

  • 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

Đánh giá theo yêu cầu

Làm việc nhóm (15%)

  • 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

Giao diện người dùng (20%)

  • 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 mềm + Mẫu thiết kế (20%)

  • 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

Đảm bảo chất lượng (20%)

  • 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 mô tả kiến trúc phần mềm và các module (10%)

  • 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)

Các chủ đề nâng cao (15%)

  • Design Pattern: State, Observer
  • DifficultySystem: Adaptive Difficulty
  • Mutex

About

No description, website, or topics provided.

Resources

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages