【发布时间】:2019-11-05 03:44:08
【问题描述】:
在我的井字游戏中,4 回合后,即使不是,它也会宣布 X(第一个玩家)成为赢家。我不知道我错过了什么,它在检查列时有效,但现在用行却没有。当我用字母调用函数时,我感觉这是一个问题,但我不完全确定。
moves = [["1", "2", "3"],
["1", "2", "3"],
["1", "2", "3"]]
def win(letter):
if(moves[0][0] == letter and
moves[1][0] == letter and
moves[2][0] == letter):
print("~~~ " + letter + " WON!!! CONGRATS!!!! ~~~")
quit()
elif(moves[0][1] == letter and
moves[1][1] == letter and
moves[2][1] == letter):
print("~~~ " + letter + " WON!!! CONGRATS!!!! ~~~")
quit()
elif(moves[0][2] == letter and
moves[1][2] == letter and
moves[2][2] == letter ):
print("~~~ " + letter + " WON!!! CONGRATS!!!! ~~~")
quit()
elif(moves[0][0] == letter and
moves[0][1] == letter and
moves[0][2]):
print("~~~ " + letter + " WON!!! CONGRATS!!!! ~~~")
quit()
elif(moves[1][0] == letter and
moves[1][1] == letter and
moves[1][2]):
print("~~~ " + letter + " WON!!! CONGRATS!!!! ~~~")
quit()
elif(moves[2][0] == letter and
moves[2][1] == letter and
moves[2][2]):
print("~~~ " + letter + " WON!!! CONGRATS!!!! ~~~")
quit()
def playerInput():
player1 = input("Where do you want to place your X, player 1? (row number, space, number)")
moves[int(player1[0]) - 1][int(player1[2]) - 1] = "X"
player2 = input("Where do you want to place your O, player 2? (row number, space, number)")
moves[int(player2[0]) - 1][int(player2[2]) - 1] = "O"
boardDraw()
def boardDraw():
print("1| "+moves[0][0]+" | "+moves[0][1]+" | "+moves[0][2]+" |")
print(" |---+---+---|")
print("2| "+moves[1][0]+" | "+moves[1][1]+" | "+moves[1][2]+" |")
print(" |---+---+---|")
print("3| "+moves[2][0]+" | "+moves[2][1]+" | "+moves[2][2]+" |")
win("X")
win("O")
playerInput()
print("OK SO....\nPlayer 1 is X\nPlayer 2 is O\nGOOOOO!!")
boardDraw()
【问题讨论】:
-
提示:比较前三个
if的形式和后三个的形式。 -
顺便说一句,关于实现井字游戏的问题通常会很快进入“需要更多关注”或“基于意见”的领域,因为有很多编写方法,例如获胜检测算法和相当大的争论空间。
-
真的很有意思,不知道stack-overflow井字游戏社区有这么多争吵!
标签: python