Skip to content

xxrjun/battle-royale

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

65 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Contributors Forks Stargazers

Battle Royale

MIS 109403019 鄒翔宇, MIS 109403021 傅珩洵


Logo

Battle Royale Game

NCU Assembly | Fall 2023 | Final Project
Explore the devlopement docs »

目錄

遊戲規則

Note: 斜線表示之數值會依據遊戲體驗進行調整

基本資訊

  • 遊戲模式:單人遊戲(未來會考慮加入雙人模式)
  • 玩家目標:獲得高分,分數會隨著時間持續累加,存活越久分數會越高。

角色設定

角色 描述 外觀
倖存者 玩家操控的角色。單人遊戲時使用 WASD 鍵控制。
倖存者的目標是躲避殭屍,避免觸碰到殭屍導致死亡。
survivor
殭屍 皆由電腦控制,遊戲開始時有一隻,每隔 10 秒會從固定位置增加一隻,
最多增加到 15 隻。每隻殭屍速度不一且隨機,殭屍會持續往倖存者的位置移動。
zombie

遊戲結束條件

GG! Next life!

倖存者被殭屍觸碰到,便會死亡,遊戲結束。

道具系統

遊戲過程中,每 7.5 秒,會隨機生成類的以下其中一個道具,玩家可以拾取道具獲得暫時的增益效果

道具 描述 外觀
閃電 玩家移動加速 3 Lignting
冰凍 所有殭屍暫停移動 3 Ice
無敵 玩家觸碰到殭屍不會結束遊戲,持續 3 Invincible
鈔票 分數累加速度加快 3 Money

開始遊戲

下載專案

git clone git@github.com:xxrjun/battle-royale.git
# or
git clone https://github.com/xxrjun/battle-royale.git

直接執行

cd battle-royale/bin
battle_royale.exe 
# or
./battle_royale.exe

也可以打開資料夾找到 battle_royale.exe 並執行

battle_royale.exe

使用 Makefile 進行編譯

需要安裝 MASM32

make # or make all

遊戲流程

遊戲流程

專案架構

目錄結構

battle-royale/
│
├── src/                    # 源代碼目錄
│   └── battle_royale.asm   # 主程式
│
├── bin/                    # 編譯後的二進制文件和可執行文件
│   └── battle_royle.exe    # 可執行文件
│
├── docs/                   # 文件目錄
│   └── development.md      # 開發相關文檔
│
├── assets/                 # 資源文件,如圖像、音效等
│   ├── docs/               # 文件用圖像 
│   ├── images/             # 遊戲用圖像
│   └── sounds/             # 遊戲用音效
│
├── Makefile                # 編譯腳本
├── README.md               # 專案說明文件
└── .gitignore              # Git忽略文件配置

程式架構

程式架構

  • WinMain: 程序的主入口點。負責初始化應用程序並進入消息循環。
  • WndProc: 處理窗口消息的過程。
  • TopXY: 計算窗口在屏幕上的位置。
  • generateRandomNum: 生成範圍內的隨機數。
  • initGameplay: 初始化遊戲的主要變數。
  • paintBackground: 繪製遊戲背景。
  • paintScoreBar: 繪製分數條。
  • paintPlayer: 繪製玩家角色。
  • paintZombie: 繪製所有殭屍。
  • playSound: 播放聲音。
  • paintGadget: 繪製遊戲中的道具。
  • updateScrenn: 更新遊戲畫面。
  • updatePlayerPosition: 更新玩家位置。
  • activateZombie: 激活一隻新的殭屍。
  • updateZombiePositions: 更新所有殭屍的位置。
  • checkZombieCollision: 檢查殭屍與玩家之間的碰撞。
  • checkGadgetCollision: 檢查道具與玩家之間的碰撞。
  • checkBuffEffect: 檢查道具效果。
  • ThreadProc: 遊戲主循環的線程過程。

開發工具

程式開發

  • MASM32 SDK - 工具集,包含 assembler、editor、linker 等工具
    • Assembler: ml.exe 用於將組合語言源代碼轉換成機器代碼。
    • Linker: link.exe 用於將組譯器產生的對象檔案連結成可執行檔案。
  • Visual Studio Code, MASM Editor - 編輯器,用於編寫組合語言程式碼
  • ChatGPT with GPT4.0 - 協作工具,詢問程式碼、開發問題等
  • draw.io - 繪圖工具,用於繪製專案架構、流程圖

影音素材

Credit for Music: Music promoted by Chosic, Creative Commons CC BY 3.0

貢獻者


xxrjun


FuHarrison