GithubHelp home page GithubHelp logo

simonliu423 / tankman-ai Goto Github PK

View Code? Open in Web Editor NEW

This project forked from jesse-jumbo/tankman

0.0 0.0 0.0 23.92 MB

A battle game that uses game AI to compete on the PAIA platform

Home Page: https://www.paia-arena.com/

Shell 1.03% Python 98.97%

tankman-ai's Introduction

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人 團隊對抗遊戲

遊戲簡介:

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 -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鍵進行射擊。
  • 遊戲畫面: 透過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. 生命次數(3)
  2. 透明設定(依照生命次數決定)

補給站

  1. 燃油站

    • 玩家經過補充 30點燃油,超過 100,則無效。
    • 與玩家碰撞,則隨機換位置。
  2. 彈藥站

    • 玩家經過補充 5顆彈藥,超過 10,則無效。
    • 與玩家碰撞,則隨機換位置。

地圖說明

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

地圖製作


image sours

sound sours

tankman-ai's People

Contributors

jesse-jumbo avatar kylingithub avatar mikan0524 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.