python tic tac toe记分牌没有更新[关闭]
Posted
技术标签:
【中文标题】python tic tac toe记分牌没有更新[关闭]【英文标题】:python tic tac toe scoreboard not updating [closed] 【发布时间】:2022-01-11 02:14:13 【问题描述】:他们关闭了这个问题,所以我不能删除它,因为人们“回答”了任何问题
问题是游戏结束时记分牌没有更新;它只显示在开头。
我们如何解决这个问题?我们需要实现循环,还是重新排列部分代码?
代码如下:
import time
print("Tic-Tac-Toe Game ")
print("Please Wait...")
time.sleep(3)
def game_winner(player):
if Game==Draw:
print("Game Draw")
return 'D'
elif Game==Win:
player-=1
if player != 0:
print("Player 1 Won")
return
else:
print("Player 2 Won")
return
【问题讨论】:
【参考方案1】:所以,我只是运行了您的代码并成功地完成了一场比赛。您是对的,在完成一场比赛后,输入“是”并不能正确显示计分板。
您已经将代码设置为各种功能,这很好。您可能想要做的是有一个play(board, player:str, move:int)
函数,它接受玩家和相应的移动并每次更新棋盘。您将需要修改while
循环,因为平局、赢或输条件将结束游戏。 play()
函数应该只跟踪当前玩家,并在每次移动时分别在 0 和 1 之间切换。
你可能有类似的东西:
# Set player 0 to start, X
start_player = 0
while not checkGameEnd():
# Take player input
move = int(input("Where do you want to move?"))
# Make the play
play(board, start_player, move)
# Print the board
printBoard()
# Change player
start_player = 1 if start_player is 0 else 1
# Game should end here
printScores()
playAgain()
这是一种伪代码,但您可以根据用例修改逻辑。
【讨论】:
【参考方案2】:当我回复n
对问题'Do you want to play again?'
时,最后为我打印的记分牌。
但是,它显示 0-0,因为代码没有更新分数。我认为您想在game_winner
函数中添加以下内容:
elif Game ==Win:
player -= 1
if player != 0:
print("Player 1 Won")
score_board[player1] += 1
return
else:
print("Player 2 Won")
score_board[player2] += 1
return
另外,您需要将game_winner(player)
函数调用移到while
循环之外,以便它只调用一次。
【讨论】:
【参考方案3】:你需要在每场比赛结束时修改score_board
变量,这样当你在比赛结束时打印它会更新最终得分,为此你可以修改你的game_winner
函数如下:
def game_winner(player):
if Game==Draw:
print("Game Draw")
score_board[player1] += 0.5
score_board[player2] += 0.5
return 'D'
elif Game ==Win:
player -= 1
if player != 0:
print("Player 1 Won")
score_board[player1] += 1
return
else:
print("Player 2 Won")
score_board[player2] += 1
return
【讨论】:
以上是关于python tic tac toe记分牌没有更新[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
Learn Python 015: Tic Tac Toe Game
将识别列表中的空字符串并在那里打印标记/符号的函数(Python Tic-Tac-Toe)
Principle of Computing (Python)学习笔记 DFS Search + Tic Tac Toe use MiniMax Stratedy