Python tic tac toe检查玩家是否获胜的方法
我还不熟悉OOP编程和编写紧凑的代码,所以我可能忽略了一些东西,我试图找出一种方法来检查tic tac toe中的垂直胜利和对角胜利,我已经有了水平胜利 如果可能的话,有没有办法把另外两种方法合并到我已经有的东西中Python tic tac toe检查玩家是否获胜的方法,python,processing,tic-tac-toe,Python,Processing,Tic Tac Toe,我还不熟悉OOP编程和编写紧凑的代码,所以我可能忽略了一些东西,我试图找出一种方法来检查tic tac toe中的垂直胜利和对角胜利,我已经有了水平胜利 如果可能的话,有没有办法把另外两种方法合并到我已经有的东西中 #creates the gameboard that stores if spaces are open or not game_board = [ [0,0,0], [0, 0, 0], [0, 0, 0,] ] #0 = open space #1 = O #2 = X #c
#creates the gameboard that stores if spaces are open or not
game_board = [ [0,0,0], [0, 0, 0], [0, 0, 0,] ]
#0 = open space
#1 = O
#2 = X
#check for winners horizontaly
def find_winner():
# y represents the y axis
for y in range(3):
if game_board[y][0] == game_board[y][1] == game_board[y][2] != 0:
#returns if the X or 0 has won
return game_board[y][0]
#returns 0 if no-one has won
return 0
您可以添加更多类似以下内容的if语句:
game_board = [ [0, 0, 0],
[0, 0, 0],
[0, 0, 0,] ]
def find_winner():
for y in range(3):
if game_board[y][0] == game_board[y][1] == game_board[y][2] != 0: # Check horizontal
return game_board[y][0]
if : # Check vertical
return game_board[0][y]
if game_board[0][0] == game_board[1][1] == game_board[2][2] != 0 or game_board[0][2] == game_board[1][1] == game_board[2][0] != 0: # Check diagonal
return game_board[1][1]
return 0
您可以添加更多类似以下内容的if语句:
game_board = [ [0, 0, 0],
[0, 0, 0],
[0, 0, 0,] ]
def find_winner():
for y in range(3):
if game_board[y][0] == game_board[y][1] == game_board[y][2] != 0: # Check horizontal
return game_board[y][0]
if : # Check vertical
return game_board[0][y]
if game_board[0][0] == game_board[1][1] == game_board[2][2] != 0 or game_board[0][2] == game_board[1][1] == game_board[2][0] != 0: # Check diagonal
return game_board[1][1]
return 0
这可能会有所帮助,这是垂直和对角检查的两个功能
# Checks for vertical row
def win(game_board, player):
for x in range(len(game_board)):
win = True
for y in range(len(game_board)):
if game_board[y][x] != player:
win = False
continue
if win == True:
return(win)
return(win)
# Checks diagonal win
def diag_win(game_board, player):
win = True
y = 0
for x in range(len(game_board)):
if game_board[x, x] != player:
win = False
win = True
if win:
for x in range(len(game_board)):
y = len(game_board) - 1 - x
if game_board[x, y] != player:
win = False
return win
如果您有任何疑问或建议,请随时发表评论。对于上述功能,随机选择玩家。使用函数是一种很好的做法也许这会有所帮助,这是用于垂直和对角检查的两个函数
# Checks for vertical row
def win(game_board, player):
for x in range(len(game_board)):
win = True
for y in range(len(game_board)):
if game_board[y][x] != player:
win = False
continue
if win == True:
return(win)
return(win)
# Checks diagonal win
def diag_win(game_board, player):
win = True
y = 0
for x in range(len(game_board)):
if game_board[x, x] != player:
win = False
win = True
if win:
for x in range(len(game_board)):
y = len(game_board) - 1 - x
if game_board[x, y] != player:
win = False
return win
如果您有任何疑问或建议,请随时发表评论。对于上述功能,随机选择玩家。最好只使用3个列表理解函数
所有的胜利和位置
游戏板=[[1,0,1],
[0, 1, 0],
[0, 1, 0] ]
水平的
h=[stri+1+“行”表示游戏板中的i,v,如果sumv==3]
垂直线
v=[stri+1+“Col”表示范围3中的i,如果和[j[i]表示游戏板中的j]==3]
对角线
如果和[game_board[0][1+i],game_board[1][1]],game_board[2][1-i]==3],则d=[[i+1]中的i为[i+1]
如果有[h,v,d]:
打印“你赢了:”,h,v,d
其他:
打印“尚未获胜”
只有3个列表理解
所有的胜利和位置
游戏板=[[1,0,1],
[0, 1, 0],
[0, 1, 0] ]
水平的
h=[stri+1+“行”表示游戏板中的i,v,如果sumv==3]
垂直线
v=[stri+1+“Col”表示范围3中的i,如果和[j[i]表示游戏板中的j]==3]
对角线
如果和[game_board[0][1+i],game_board[1][1]],game_board[2][1-i]==3],则d=[[i+1]中的i为[i+1]
如果有[h,v,d]:
打印“你赢了:”,h,v,d
其他:
打印“尚未获胜”