私はポーカーゲームを作ってるんだし、これは賭けが終わったかどうかをチェック賭けラウンドのステージです:比較的シンプルなwhileループで最大反復深度エラーが発生し、反復に変換するのに役立ちますか?
def bettingRound():
end = False
while end == False:
action1 = raw_input(str(playGame().player1)[9:] + ", what is your move? (r/c/f):")
if action1 == 'f':
playGame().player2.score = playGame().player2.score + 1
game().winner = str(playGame().player2)[9:]
end = True
elif action1 == 'r':
raiseAmount1 = raw_input("Raise by: ")
playGame().player1.money = playGame().player1.money - raiseAmount1
Table.pot = Table.pot + raiseAmount1
end = False
elif action1 == 'c':
end = False
action2 = raw_input(str(playGame().player2)[9:] + ", what is your move? (r/c/f):")
if action2 == 'f':
playGame().player1.score = playGame().player1.score + 1
game().winner = str(playGame().player1)[9:]
end = True
elif action2 == 'r':
raiseAmount2 = raw_input("Raise by: ")
playGame().player2.money = playGame().player2.money - raiseAmount1 - raiseAmount2
Table.pot = Table.pot + raiseAmount1 + raiseAmount2
end = False
elif action2 == 'c':
if action1 == 'r':
playGame().player2.money = playGame().player2.money - raiseAmount1
Table.pot = Table.pot + raiseAmount1
end = False
if action1 == 'c':
end = True
奇妙なことは、それも最初のraw_input文を印刷することができないということです。最大再帰深度を増やしてみましたが、スタックオーバーフローが発生します。他の質問を見ると、簡単な解決策は、アルゴリズムを再帰的ではなく反復的にすることですが、これについてどうやって進むべきかについてはわかりません。
PS:かなりありますので、私に行くのコードの多くは、ここで完全なプログラム(128行)を入れている:http://pastebin.com/DSBACdB6