最高の移動とスコアを見つけようとしています。私はゲームのスコアを正しく返すプログラムを手に入れましたが、動きを返すようにしたいと思います。これを行うようにコードを変更するにはどうすればよいですか? thisおよびthisと同様です。私の失敗したコードhereを参照してください。ゲームが終了した場合にはNone
が返され、代わりに移動する必要があります。アルファベットを使用して最良の動きを見つけるTicTacToe
def alphabeta(game_state, alpha, beta, our_turn=True):
if game_state.is_gameover():
return game_state.score()
if our_turn:
score = -9999
for move in game_state.get_possible_moves():
child = game_state.get_next_state(move, True)
temp_max = alphabeta(child, alpha, beta, False)
if temp_max > score:
score = temp_max
alpha = max(alpha, score)
if beta <= alpha:
break
return score
else:
score = 9999
for move in game_state.get_possible_moves():
child = game_state.get_next_state(move, False)
temp_min = alphabeta(child, alpha, beta, True)
if temp_min < score:
score = temp_min
beta = min(beta, score)
if beta <= alpha:
break
return score
聖shnikesを、あなたは私が15年前です。無敵のTic Tac Toeゲームを開発することは、私のプログラミングのゲートウェイ薬物でした。私は決してうまく動作しない、読めないif..thenステートメントの素晴らしい木を思い出すようです。わかりやすいコードの重要性に関する私の最初の教訓でした。編集:ああ待って、アルファベータ剪定?決して気にしないでください – CivFan
笑! 2年前、高校に来年来ました! :) – PAS