# TankMan
## 遊戲說明
[](https://github.com/Jesse-Jumbo/TankMan/tree/0.7.0)
[](https://www.python.org/downloads/release/python-390/)
[](https://pypi.org/project/mlgame/10.2.5a0/)
[](https://github.com/pygame/pygame/releases/tag/2.0.1)
坦克人(Tank Man),一款經典的雙人對戰遊戲,時間內率先擊殺對手獲勝,否則以分數高者獲勝,除了擊中對手外,破壞遊戲物件,以獲得更高積分。
!注意: 場上資源恢復皆須時間,先到者得,你需要這些補充品以提供前進和射擊的燃油和子彈。

---
## 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版本):
---
# 遊戲細節:
## 啟動方式:
- 在命令行輸入命令執行。
---
## 遊戲參數設定
- 在以下命令中,`.`代表執行的遊戲專案路徑,若`.`後不輸入參數,則默認使用預設值,即`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)