Share
Embed
Transcript
13 slides
-
TOSSUG Arena TOSSUG Arena https://github.com/tossug/tossug-arena 簡單的桌遊開發平臺,提供參與者協同開發環境 不同介面的遊戲引擎與玩家引擎可以分別實作 支援與真人、隨機、自身或其他玩家引擎的對戰 初期先實作象棋及其變體的文字介面 程式主體使用
ShellScript 開發,釋出為公共財 請基於善意,使用任何常見指令稿語言編寫程式 -
程式執行 程式執行 > ./tossug-arena TOSSUG Arena: Gamelets Arena for AI
Players Usage: tossug-arena MATCH[-log] [ PLAYER1 [ PLAYER2 [ PLAYER3 ]]] available MATCHes: ShuaiQi TianQi XiangHalf XiangQi XiangThree available PLAYERs: (Human as reserved default) for ShuaiQi: Random Random0 for TianQi: Random Random0 for XiangHalf: Random Random0 for XiangQi: Random Random0 for XiangThree: Random Random0 > mkdir players/XiangHalf/AgentName > cp players/XiangHalf/Random/main players/XiangHalf/AgentName/main > $EDITOR players/XiangHalf/AgentName/main > ./tossug-arena XiangHalf HumanName AgentName > for i in {1..100}; do ./tossug-arena XiangHalf-log AgentName Random; done -
呼叫流程範例 呼叫流程範例 tossug-arena XiangHalf Random matches/XiangHalf interfaces/XiangHalf/Text/main default Random Human
interfaces/XiangHalf/is_the_end interfaces/XiangHalf/get_valid_moves interfaces/XiangHalf/Text/show_the_game players/XiangHalf/Random/main interfaces/XiangHalf/get_valid_moves interfaces/XiangHalf/get_valid_board interfaces/XiangHalf/get_valid_board -
環境變數範例 環境變數範例 ARENA_PLAYER1="Random"|"Human" # 一號玩家名稱 ARENA_THEME="default"|"log" # 介面主題 ARENA_COLOR1=""|"Red"|"Black"|"White" #
一號玩家顏色 ARENA_MOVENO=0|1|42 # 目前步數 ARENA_MOVE="A1A1"|"A1B2"|"B2" # 目前棋步 ARENA_STATUS="ELIMINATION WINS !"| "STALEMATE WINS !"|"MIDDLE WINS !" # 遊戲狀態 ARENA_TEMP=`mktemp` # 暫存檔名 ARENA_BOARD="@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@/"| "k_______________________________/KAAEERRHHCCPPPPPaa eerrhhccppppp" # 桌面狀態 -
檔案範例 檔案範例 matches/XiangHalf matches/XiangHalf-log players/XiangHalf/Random/main ARENA_GAME=XiangHalf ARENA_UI=Text ARENA_THEME=default ARENA_GAME=XiangHalf ARENA_UI=Text
ARENA_THEME=default ARENA_GAME=XiangHalf ARENA_UI=Text ARENA_THEME=log ARENA_GAME=XiangHalf ARENA_UI=Text ARENA_THEME=log #!/bin/bash # CC0, Wei-Lun Chao <[email protected]>, 2017 # MOVESNEXT=`"$DATADIR/interfaces/$ARENA_GAME/get_valid_moves"` MOVESNO=$((${#MOVESNEXT}/5)) MOVE=${MOVESNEXT:(RANDOM%MOVESNO)*5:4} echo ${MOVE} #!/bin/bash # CC0, Wei-Lun Chao <[email protected]>, 2017 # MOVESNEXT=`"$DATADIR/interfaces/$ARENA_GAME/get_valid_moves"` MOVESNO=$((${#MOVESNEXT}/5)) MOVE=${MOVESNEXT:(RANDOM%MOVESNO)*5:4} echo ${MOVE} -
ShuaiQi ShuaiQi 帥棋 ( 象棋變體 ) 紅方:帥仕相俥傌炮兵 黑方:將士象車馬包卒 先行玩家為紅方 俘子變為己方棋子並放回己
方原位為一有效着手 實體遊戲可用兩副棋子替換 或將異色同階棋子背面相黏 -
協作需求 協作需求 真人對戰以測試合法着手與終局判斷是否正確 players/*/AgentName/main 各項遊戲的人工智能玩家 ( 群組成員可直接提交個人引擎 ) matches/Connect6 六子棋遊戲引擎與介面
( 桌面狀態參數要如何描述? ) matches/WeiQi9 九路圍棋遊戲引擎與介面 ( 終局狀態要如何判定? ) matches/Reversi 黑白棋遊戲引擎與介面 interfaces/*/Graph/main 各項遊戲的圖形介面 ( 可以調用文字介面的既有程序 )