def main(): # 標準入力から、エージェントの入力形式を取得 inputTypeOfEachAgent = createInputTypeOfEachAgent() # 標準入力から、試行回数を取得 epoch = int(input("試行回数を入力してください >>")) # 指定された回数分、試合を実行 teamAWinCounter = 0 for gameCount in range(epoch): # 試合設定 megurimasu = MeguriMasuCore(createRandomGameSet()) gameInput = CUIInput(megurimasu.play, **inputTypeOfEachAgent) # ゲームを進行 for act in megurimasu.act(): act(gameInput.input()) megurimasu.endAct() # ゲームの勝敗を記録 if (megurimasu.play.judgmentVictory() == "teamAWin"): teamAWinCounter += 1 # ゲームの統計結果を表示 print("\n") print("-" * 30) print(f"試合数:{epoch}") print(f"チームAの勝率: {teamAWinCounter/epoch}") print(f"チームBの勝率: {1-(teamAWinCounter/epoch)}")
def main(): megurimasu = MeguriMasuCore(createRandomGameSet()) cuiInput = CUIInput(megurimasu.play, **createInputTypeOfEachAgent()) cuiOutput = CUIOutput(megurimasu.play) # ゲームの説明 cuiOutput.printGameExplain() # ゲームを進行 for act in megurimasu.act(): cuiOutput.printTurnStatus() act(cuiInput.input()) megurimasu.endAct() # ゲームの終了メッセージを表示 cuiOutput.printGameEndMessage()
def main(): startTime = datetime.datetime.now() # 標準入力から、エージェントの入力形式を取得 inputTypeOfEachAgent = createInputTypeOfEachAgent() epoch = int(input("試行回数を入力してください >>")) learn = Learn() # 入力された回数分、試合を実行&学習 for gameCount in range(epoch): # ゲームの試合設定 megurimasu = MeguriMasuCore(createRandomGameSet()) cuiInput = CUIInput(megurimasu.play, **inputTypeOfEachAgent) # ゲームの試合設定をlearnにセット learn.SetInit(createInitDataForLearn(megurimasu.play)) # ゲームの進行 for act in megurimasu.act(): act(cuiInput.input()) # ゲームのターンごとの現状状況をlearnにセット learn.PushTurn(createTurnDataForLearn((megurimasu.play))) megurimasu.endAct() # ゲームの勝敗データをlearnにセット learn.SetTerm(createTurmDataForLearn(megurimasu.play)) # 学習データをデータベースに記録 saveResult = learn.Save() # 学習データを破棄 learn.Clear() nowTime = datetime.datetime.now() print(f"{gameCount}試合目:", saveResult, f"{(nowTime-startTime)}s") print("-" * 30) finishedTime = datetime.datetime.now() # 学習完了結果を表示 print("-" * 30) print("学習が完了しました\n") print(f"試合回数: {epoch}") print(f"計測時間: {finishedTime-startTime}s")
def main(): """ 試合設定のQRコードテキストを生成 行数 列数: スコアボード: エージェントAのX座標 エージェントAのY座標: エージェントBのX座標 エージェントBのY座標: """ # ランダムな試合設定を取得 gameStartSet = createRandomGameSet() scoreBoard = gameStartSet["scoreBoard"] column = gameStartSet["column"] row = gameStartSet["row"] agentAX = gameStartSet["agentAX"] agentAY = gameStartSet["agentAY"] agentBX = gameStartSet["agentBX"] agentBY = gameStartSet["agentBY"] gameStartSetQRText = "" gameStartSetQRText += f"{column} {row}:" for y in range(column): for x in range(row): gameStartSetQRText += str(scoreBoard[y][x]) if x < row - 1: gameStartSetQRText += " " gameStartSetQRText += ":" gameStartSetQRText += f"{agentAX} {agentAY}:" gameStartSetQRText += f"{agentBX} {agentBY}:" # QRコードのテキストからQRコードを生成 gameStartSetQRImage = qrcode.make(gameStartSetQRText) # QRコードを表示 gameStartSetQRImage.show() # QRコードをPNGとして出力 gameStartSetQRImage.save( f"game_start_set_qr{column}{row}{agentAX}{agentAY}{agentBX}{agentBY}.png" )
def main(): # ランダムな試合設定を取得 gameStartSet = createRandomGameSet() column = gameStartSet["column"] row = gameStartSet["row"] scoreBoard = gameStartSet["scoreBoard"] agentAX = gameStartSet["agentAX"] agentAY = gameStartSet["agentAY"] agentBX = gameStartSet["agentBX"] agentBY = gameStartSet["agentBY"] # 試合設定のQRコードテキストを生成する # スコアボードの行数と列数をQRコードテキストにセットする gameStartSetQRText = "" gameStartSetQRText += f"{column} {row}:" # スコアボードをQRコードテキストにセットする for y in range(column): for x in range(row): gameStartSetQRText += str(scoreBoard[y][x]) if x < row - 1: gameStartSetQRText += " " gameStartSetQRText += ":" # エージェントAとBの座標をQRコードにセットする gameStartSetQRText += f"{agentAX} {agentAY}:" gameStartSetQRText += f"{agentBX} {agentBY}:" # QRコードのテキストからQRコードを生成する gameStartSetQRImage = qrcode.make(gameStartSetQRText) # QRコードを表示する gameStartSetQRImage.show() # QRコードをPNGとして出力する gameStartSetQRImage.save( f"game_start_set_qr{column}{row}{agentAX}{agentAY}{agentBX}{agentBY}.png" )
def __init__(self, settingData=None, additionalFunc=None, initializeFunc=None): self.play: Playing # ゲームの制御 self.MAX_TURN: int # ゲームのターン数 self.state: str = "SET" # ゲームの状態 # play の初期化 if (settingData is not None): self.play = Playing(**settingData) # settingData が None なら ランダムなデータをセットする else: self.play = Playing(**createRandomGameSet()) self.MAX_TURN = self.play.MAX_TURN # もし追加動作がある場合は additionalFunc に かく if (initializeFunc is not None): additionalFunc(self.playData())