Skip to content

dominhhieu1405/Tower-Defense

Repository files navigation

[English]

Tower-Defense

Tài nguyên đã sử dụng

Các phần mềm đã sử dụng

Giới thiệu game

Tower Defense là một trò chơi chiến thuật nơi bạn cần xây dựng hệ thống phòng thủ để ngăn chặn làn sóng kẻ địch xâm nhập. Với đồ họa pixel đơn giản nhưng bắt mắt, hệ thống tháp và quái đa dạng, cùng nhiều màn chơi từ dễ đến khó, trò chơi hứa hẹn mang lại trải nghiệm hấp dẫn cho những ai yêu thích thể loại chiến thuật – thủ thành.

Mục lục

0. Cách tải game

a. Cách 1: Không bao gồm code.

Tải game đã biên dịch sẵn tại link sau: https://github.com/dominhhieu1405/Tower-Defense/releases
Cách này tiết kiệm bộ nhớ và thời gian tải đi rất nhiều (khoảng 27MB).

  • File TowerDefenseInstaller.exe là file cài đặt game. Sau khi tải về, chỉ cần click vào file này và làm theo hướng dẫn để cài đặt game.

  • File TowerDefense.zip là file nén chứa game đã biên dịch sẵn. Sau khi tải về, chỉ cần giải nén ra và click vào file tower_defense.exe để chơi game.

b. Cách 2: Bao gồm code và có thể biên dịch.

Bước 1: Clone repo này về.
Hoặc Chọn Code -> Download Zip (Khoảng 90MB)

image

  • Tất cả code đều nằm trong thư mục src.

Bước 2: Cài CLion Tại đây (Hoặc các IDE hỗ trợ C++ khác) và các thành phần phụ trợ để code

Một số chú ý:

  • Phải xóa xóa tất cả cc file dll của c++ trong thư mục dự án. Các file dll này chỉ dành cho người chơi không cài sẵn c++ trong máy.
  • Dự án này sử dụng CMake để biên dịch, vì vậy bạn cần cài đặt CMake trong máy tính của mình. Bạn có thể tải CMake tại đây.

Bước 3: Nếu muốn hiện CMD thì mở file CMakeLists.txt tìm 2 dòng

# add_executable(tower_defense ${SOURCES} ${APP_ICON_RESOURCE_WINDOWS}) # Hiện cmd khi chạy
add_executable(tower_defense WIN32 ${SOURCES} ${APP_ICON_RESOURCE_WINDOWS}) # Không hiện cmd khi chạy

Bỏ dấu # ở dòng đầu tiên và thêm dấu # vào dòng thứ 2.

Bước 4: Build và run game: Trong CLion nhấn SHIFT+F10

1. Bắt đầu game

Khi mờ game sẽ thấy hiện ra giao diện nhập tên.

Giao diện chính

Sau khi nhập tên và nhấn enter, chúng ta sẽ vào giao diện chính của game

Giao diện chính

Giao diện chính của gane gồm 4 nút:

  • CHƠI TIẾP: Bắt đầu màn cuối cùng đã chơi (Nếu có)
  • BẢN ĐỒ: Hiển thị danh sách các level trong game
  • XẾP HẠNG: Hiển thị bảng xếp hạng của tất cả người chơi
  • THOÁT: Thoát game

2. Chọn level

Có tổng cộng 9 level với mức độ khó dễ khác nhau để bạn chơi. Khi di chuột lên 1 level, level đó sẽ tối màu đi. Chỉ cần click chuột để chơi level đó.

Danh sách level

Tuy nhiên khi mới bắt đầu, bạn chỉ mở được 1 level. Chiến thắng lần lượt từng level để mở khóa và chơi level tiếp theo:

Level đã mở khóa

3. Giao diện trong game:

image

  • Bản đồ (1): Là giao diện chính khi chơi, nơi bạn sẽ đặt tháp trên các bãi đất trống để tiêu diệt kẻ địch

  • Nút tạm dừng (2): Là nút tạm dừng game, bạn có thể tạm dừng game khi cần làm việc khác hoặc chơi lại game hoặc quay ra màn hình chính.

  • Thông tin (3): Hiển thị thời gian chơi, số tiền hiện có, số mạng còn lại.

    • Thời gian chơi: Là thời gian bạn đã chơi trong level này.
    • Số tiền hiện có: Là số tiền bạn có thể dùng để mua hoặc nâng cấp các tower.
    • Số mạng còn lại: Là số mạng bạn còn lại. Nếu số mạng này bằng 0, bạn sẽ thua game.
  • Thanh chọn tháp (4): Là nơi bạn chọn tháp để đặt vào bản đồ. Bạn có thể mua tháp bằng cách kéo thả tháp vào ô cần đặt. Nếu không đủ tiền mua thì không đặt được.

4. Cách chơi

Đặt tháp để tiêu diệt các kẻ địch, không cho chúng đi qua ô cuối cùng (Ô có hình tam giác màu xanh).

Kẻ địch sẽ xuất hiện từ ô đầu tiên (Ô có tam giác đỏ) và đi theo con đường đi đến ô cuối cùng (Ô có tam giác xanh). Nếu kẻ địch đi qua ô cuối cùng, bạn sẽ bị trừ 1 mạng)

Sau khi tiêu diệt kẻ địch, bạn sẽ nhận được số tiền tương ứng (tùy loại kẻ địch)

Bạn có thể dùng số tiền này để mua tháp hoặc nâng cấp tháp.

Bạn cũng có thể bán tháp để lấy lại tiền (Nhưng bị trừ 50% số tiền khi mua hoặc nâng cấp tháp)

Kẻ địch xuất hiện theo các vòng, có thể có nhiều vòng.

Vòng đầu tiên luôn bắt đầu vào giây thứ 15.

Ngoài ra sẽ có âm thanh thông báo thơi gian kẻ địch xuất hiện/khi tiêu diệt kẻ địch đầu tiên

a. Tháp

Bạn kéo thả thap vào ô cần đặt. Nếu không đủ tiền mua hoặc kéo vào ô không hợp lệ sẽ không đặt được tháp (Ô hợp lệ màu xanh, ô không hợp lệ màu đỏ).
Ô hợp lệ Ô không lệ

Sau khi đặt tháp sẽ hiển thị trên bản đồ.

image

Khi bạn nhấn vào tháp, sẽ hiện ra vòng tròn màu xanh, các vị trí trong vòng tròn này là các vị trí mà tháp có thể bắn được. Tháp sẽ tự động bắn vào kẻ địch trong vòng tròn này.

Ngoài ra khi nhấn vào cũng sẽ hiện các nút: Nâng câpBán.

image

  • Nâng cấp: Nâng cấp tháp lên cấp cao hơn. Mỗi lần nâng cấp sẽ tăng sức mạnh của tháp lên 1 bậc. Tháp có thể nâng cấp tối đa 2 lần.
  • Bán: Bán tháp để lấy lại tiền. Bạn sẽ bị trừ 50% số tiền khi mua hoặc nâng cấp tháp.

Các loại tháp

Có 8 loại tháp, mỗi loại tháp có 3 level. Khi mua thì tháp sẽ là level 1.

Ảnh Tên tháp Giá mua / nâng cấp Sát thương Tầm đánh Tốc đánh
Tháp Xạ Thủ 100 / 200 / 300 10 → 20 → 30 200 → 225 → 250 0.9 → 1.0 → 1.1
Tháp Điện 100 / 200 / 300 10 → 20 → 30 200 → 225 → 250 0.9 → 1.0 → 1.1
Tháp Ná 100 / 200 / 300 10 → 20 → 30 200 → 225 → 250 0.9 → 1.0 → 1.1
Tháp Ném Đá 100 / 200 / 300 10 → 20 → 30 200 → 225 → 250 0.9 → 1.0 → 1.1
Tháp Kính 100 / 200 / 300 10 → 20 → 30 200 → 225 → 250 0.9 → 1.0 → 1.1
Tháp Nỏ 100 / 200 / 300 10 → 20 → 30 200 → 225 → 250 0.9 → 1.0 → 1.1
Tháp Lửa 100 / 200 / 300 10 → 20 → 30 200 → 225 → 250 0.9 → 1.0 → 1.1
Tháp Anh Sáng 100 / 200 / 300 10 → 20 → 30 200 → 225 → 250 0.9 → 1.0 → 1.1

Các loại kẻ địch

  • Có 8 loại kẻ địch, mỗi loại có 3 level.
Ảnh Tên Máu Tốc chạy Phần thưởng
Giáp Kẹp Trùng 120 / 180 / 240 0.6 → 0.75 → 0.75 25 → 75 → 150
Tiểu Cường 150 / 225 / 300 0.75 → 0.75 → 0.75 25 → 75 → 150
Hỏa Phong 130 / 195 / 260 0.9 → 0.9 → 0.9 25 → 75 → 150
Phi Hoàng 120 / 180 / 240 1 → 1 → 1 25 → 75 → 150
Diệp Trùng 110 / 165 / 220 0.5 → 0.6 → 0.6 25 → 75 → 150
Nham Tước 160 / 240 / 320 0.4 → 0.55 → 0.55 25 → 75 → 150
Thiết Long 180 / 240 / 360 0.6 → 0.75 → 0.75 25 → 75 → 150
Hư Điệp 100 / 200 / 300 1.1 → 1.1 → 1.1 25 → 75 → 150

5. Chiến thắng và thất bại

  • Bạn sẽ chiến thắng nếu vượt qua tất cả các vòng mà chưa hết mạng

image

  • Bạn sẽ thất bại nếu đã hết mạng

image

6. Bảng xếp hạng

  • Nhằm tăng tính cạnh tranh trong trò chơi, có thêm tính năng bảng xếp hạng trong game. Dữ liệu được cập nhật thời gian thực và đồng bộ với tất cả người chơi.
  • Xếp hạng được tính theo level cao nhất đã vượt -> số mạng cao nhất còn lại -> Thời gian vượt level

image


7. Về mã nguồn game:

Ngoài các file/folder được liệt kê dưới đây, các file khác đều là các file tự động sinh ra khi biên dịch game. Chúng ta không cần quan tâm đến các file này.

  • Folder SDL2: Chứa các thư viện SDL2
  • Folder assets: Chứa các dữ liệu game
    • Folder audios: Chứa các file âm thanh
    • Folder data: Chứa các file dữ liệu
      • Folder levels: Chứa các file dữ liệu của các level
      • data.json: Chứa các thông tin của game
      • enemies.json: Chứa các thông tin của các kẻ địch
      • levels.json: Chứa các thông tin của các level
      • towers.json: Chứa các thông tin của các tháp
    • Folder fonts: Chứa các file font chữ
    • Folder images: Chứa các file hình ảnh
      • Folder Buttons: Chứa các sheet hình ảnh của các nút
      • Folder Enemy: Chứa các sheet hình ảnh của các kẻ địch
      • Folder Tileset: Chứa các sheet hình ảnh để vẽ bản đồ
      • Folder Towers: Chứa các sheet hình ảnh của các tháp
      • Folder Weapons: Chứa các sheet hình ảnh của các vũ khí
    • Folder map-tileset: Folder dự án để tạo bản đồ bằng Tiled
    • Folder maps: Chứa các file json tạo bằng Tiled để vẽ bản đồ
    • File icon: Chứa icon của game
  • Folder cmake-build-debug: Chứa các file được sinh ra khi biên dịch game
  • Folder src: Chứa mã nguồn game
    • Enemy: Chứa struct của các kẻ địch
    • EnemyManager: Chứa class quản lý các kẻ địch
    • Game: Chứa render và xử lý sự kiện khi class chạy game
    • Leaderboard: Chứa class render và xử lý sự kiện khi quản lý bảng xếp hạng
    • LevelSelect: Chứa class render và xử lý sự kiện khi chọn level
    • Menu: Chứa class render và xử lý sự kiện khi menu chính
    • Play: Chứa class render và xử lý sự kiện khi chơi game
    • Struct: Chứa các struct của game
    • Tower: Chứa struct của các tháp
    • TowerManager: Chứa class quản lý các tháp
    • main.cpp: Chứa hàm main của game
    • playBullet.h: Chứa class quản lý các viên đạn khi chơi
    • playEnemy.h: Chứa class quản lý các kẻ địch khi chơi
    • playTower.h: Chứa class quản lý các tháp khi chơi
  • Folder vcpkg_installed: Chứa các thư viện đã cài đặt bằng vcpkg
  • File CMakeLists.txt: File cấu hình để biên dịch game
  • File vcpkg.json: File cấu hình vcpkg để cài đặt các thư viện phụ trợ (json)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors