# TankMan ## 遊戲說明 logo [![TankMan](https://img.shields.io/github/v/tag/Jesse-Jumbo/TankMan)](https://github.com/Jesse-Jumbo/TankMan/tree/0.7.0) [![Python 3.9](https://img.shields.io/badge/python-3.9-blue.svg)](https://www.python.org/downloads/release/python-390/) [![MLGame](https://img.shields.io/badge/MLGame-10.2.5a0-.svg)](https://pypi.org/project/mlgame/10.2.5a0/) [![pygame](https://img.shields.io/badge/pygame-2.0.1-.svg)](https://github.com/pygame/pygame/releases/tag/2.0.1) 坦克人(Tank Man),一款經典的雙人對戰遊戲,時間內率先擊殺對手獲勝,否則以分數高者獲勝,除了擊中對手外,破壞遊戲物件,以獲得更高積分。 !注意: 場上資源恢復皆須時間,先到者得,你需要這些補充品以提供前進和射擊的燃油和子彈。 ![game.gif](https://raw.githubusercontent.com/Jesse-Jumbo/TankMan/main/asset/image/game.gif) --- ## Requirements - Python==3.9 - mlgame==10.2.5a0 - pytmx=3.31 --- ## 更新說明 - 0.6.0 版本之後,遊戲為 2~6人 團隊對抗遊戲 - 0.7.0 版本之後,坦克和砲管的方向可以分開控制 --- ## 遊戲簡介: 2~6位玩家進行團隊對抗賽,GreenTeam 為綠色坦克車,BlueTeam 為藍色坦克車,透過回傳遊戲指令,操控玩家與射擊砲彈,場上會有各類補給站,經過以補給該資源。 --- ## 畫面說明(2.x版本): view_ex.png --- # 遊戲細節: ## 啟動方式: - 在命令行輸入命令執行。 --- ## 遊戲參數設定 - 在以下命令中,`.`代表執行的遊戲專案路徑,若`.`後不輸入參數,則默認使用預設值,即`game_config.json`內參數值。 ```bash # MLGame.py # Copy and Paste to play battle game with manual python -m mlgame -f 120 -i ml/ml_play_manual.py -i ml/ml_play_manual.py . --green_team_num 1 --blue_team_num 1 --is_manual 1 --frame_limit 1000 # Copy and Paste to play battle game with AI python -m mlgame -f 120 -i ml/ml_play.py -i ml/ml_play.py . --green_team_num 1 --blue_team_num 1 --frame_limit 1000 ``` - `green_team_num`:選擇數字 1~3,以決定 綠隊 人數。 - `blue_team_num`:選擇數字 1~3,以決定 藍隊 人數。 - `is_manual`: 輸入 "1" 啟用手動模式,以讓遊戲適合手動遊玩。 - `frame_limit`: 輸入數字 30~3000,以決定遊戲的總幀數。 - `sound`: 輸入`on`或`off`,控制是否播放遊戲音效。 - 如果在`mlgame`後加上`-1`,代表只執行一次遊戲。 --- ## 遊戲操作: ### 使用鍵盤 - 角色移動:方向鍵控制 1P,WASD 鍵控制 2P 的移動和轉彎。 - 角色射擊:1P 按下`M`鍵進行射擊,2P 按下`F`鍵進行射擊。 - 遊戲畫面: 透過`I、K、J、L`來上下左右移動畫面;透過`O、U`來放大縮小畫面。 - 隱藏遊戲資訊:按下`H`鍵,可隱藏畫面中的遊戲資訊。 - 遊戲暫停:按下`P`鍵,可暫停遊戲(mlgame 10.2 後版本才有效)。 - 遊戲暫停:遊戲 AI 回傳`PAUSED`指令,可暫停遊戲。 ### AI控制 - 藉由遊戲資訊,在`ml`資料夾,撰寫控制遊戲角色的`.py`檔。 - 可參考`ml_play.py`自動範例程式,撰寫自動遊玩的程式。 - 可參考`ml_play_manual.py`手動範例程式,撰寫手動遊玩的程式。 --- # 遊戲玩法 1. 團隊對抗戰 → 時間內殲滅敵對,或高分隊伍獲勝。 ## 過關條件 1. 團隊對抗戰 1. 將敵隊全數擊敗。 2. 高過敵隊積分: - 對方失去的生命 * `20`分。 - 每擊中一次牆壁 * `1`分。 - 擊破牆壁 * `5`分。 --- ## 失敗條件 1. 團隊對抗戰 1. 生命歸零。 2. 時間結束,分數較敵隊低。 --- ## 物件設定: ### **`Tank`** --- 1. 前進、後退速度(8 px) 2. 轉彎角度(45度) 3. 生命機會(3次) 4. 燃油(100) 5. 彈匣(10) --- ### **`Walls`** 1. 生命次數(4) 2. 透明設定(依照生命次數決定) --- ### **`補給站`** 1. 燃油站 - 玩家經過補充 30點燃油,超過 100,則無效。 - 與玩家碰撞,則隨機換位置。 2. 彈藥站 - 玩家經過補充 5顆彈藥,超過 10,則無效。 - 與玩家碰撞,則隨機換位置。 --- # 地圖說明 - 寬1000 pixel;高600 pixel - 每格50 * 50 pixel,可放置一個物件 --- # 地圖製作 - 地圖製作教學 [Mapping.md](Mapping.md) --- # image sours - [Green Tank/Blue Tank](https://linevoom.line.me/user/_dV001P0rSN_bh8zGE0q4jmdr4Fn5d-j73cLrjTc?utm_medium=windows&utm_source=desktop&utm_campaign=Profile) - [Bullet](https://linevoom.line.me/user/_dV001P0rSN_bh8zGE0q4jmdr4Fn5d-j73cLrjTc?utm_medium=windows&utm_source=desktop&utm_campaign=Profile) - [Hourglass](https://opengameart.org/content/animated-hourglass) - [Other Object](https://opengameart.org/content/simple-shooter-icons) # sound sours - [BGM](https://opengameart.org/content/commando-team-action-loop-cut) - [SHOOT](https://opengameart.org/content/random-low-quality-sfx)