Skip to content

Jesse-Jumbo/TankMan

Repository files navigation

TankMan

遊戲說明

logo

TankMan Python 3.9 MLGame pygame

坦克人(Tank Man),一款經典的雙人對戰遊戲,時間內率先擊殺對手獲勝,否則以分數高者獲勝,除了擊中對手外,破壞遊戲物件,以獲得更高積分。

!注意: 場上資源恢復皆須時間,先到者得,你需要這些補充品以提供前進和射擊的燃油和子彈。

game.gif

Requirements

  • Python==3.9
  • mlgame==10.2.5a0
  • pytmx=3.31

更新說明

  • 0.6.0 版本之後,遊戲為 2~6 人 團隊對抗遊戲
  • 0.7.0 版本之後,坦克和砲管的方向可以分開控制
  • 0.7.1 版本之後,物件尺寸從原來的 50x50 縮小為 25x25,且補給站可被破壞

遊戲簡介:

2~6 位玩家進行團隊對抗賽,GreenTeam 為綠色坦克車,BlueTeam 為藍色坦克車,透過回傳遊戲指令,操控玩家與射擊砲彈,場上會有各類補給站,經過以補給該資源。


畫面說明(2.x版本):

view_ex.png


遊戲細節:

啟動方式:

  • 在命令行輸入命令執行。

遊戲參數設定

  • 在以下命令中,.代表執行的遊戲專案路徑,若.後不輸入參數,則默認使用預設值,即game_config.json內參數值。
# 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: 輸入onoff,控制是否播放遊戲音效。
  • 如果在mlgame後加上-1,代表只執行一次遊戲。

遊戲操作:

使用鍵盤

  • 角色移動:方向鍵控制 1P,WASD 鍵控制 2P 的移動和轉彎。
  • 角色射擊:1P 按下M鍵進行射擊,2P 按下F鍵進行射擊。
  • 砲管旋轉:1P 按下ZX鍵左右旋轉,2P 按下QE鍵左右旋轉。
  • 遊戲畫面: 透過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. 砲管旋轉角度(45 度)
  4. 生命機會(3 次)
  5. 燃油(100)
  6. 彈匣(10)

Walls

  1. 生命次數(3)
  2. 透明設定(依照生命次數決定)

補給站

  1. 燃油站

    • 玩家經過補充 30 點燃油,超過 100,則無效。
    • 與玩家或子彈碰撞後消失,30 幀後隨機位置顯示。
  2. 彈藥站

    • 玩家經過補充 5 顆彈藥,超過 10,則無效。
    • 與玩家或子彈碰撞後消失,30 幀後隨機位置顯示。

地圖說明

  • 寬 1000 pixel;高 600 pixel
  • 每格 25 * 25 pixel,可放置一個物件

image sours

sound sours