题目描述:
题解:
<1>初始化一个3*3的数组,初始化为0
<2>根据输入的moves,更新数组
<3>判断数组最终状态下是否达到A或B获胜的条件,如果没有胜出,则判断棋盘是否还有空位
def tictactoe(self, moves): board = [[0 for i in range(3)]for i in range(3)] for i in range(len(moves)): if i%2==0: board[moves[i][0]][moves[i][1]] = "x" else: board[moves[i][0]][moves[i][1]] = "o" print(board) flag1 = 0 flag2 = 0 empty = 0 for i in range(3): for j in range(3): if board[i][j]==0: empty = empty+1 if board[0][0]=="x" and board[1][1]=="x" and board[2][2]=="x": flag1 = 1 if board[0][0]=="o" and board[1][1]=="o" and board[2][2]=="o": flag2 = 1 if board[0][2]=="x" and board[1][1]=="x" and board[2][0]=="x": flag1 = 1 if board[0][2]=="o" and board[1][1]=="o" and board[2][0]=="o": flag2 = 1 if board[0][0]==board[0][1]==board[0][2]=="x": flag1 = 1 if board[0][0]==board[0][1]==board[0][2]=="o": flag2 = 1 if board[1][0]==board[1][1]==board[1][2]=="x": flag1 = 1 if board[1][0]==board[1][1]==board[1][2]=="o": flag2 = 1 if board[2][0]==board[2][1]==board[2][2]=="x": flag1 = 1 if board[2][0]==board[2][1]==board[2][2]=="o": flag2 = 1 if board[0][0] == board[1][0] == board[2][0] == "x": flag1 = 1 if board[0][0] == board[1][0] == board[2][0] == "o": flag2=1 if board[0][1] == board[1][1] == board[2][1] == "x": flag1 = 1 if board[0][1] == board[1][1] == board[2][1] == "o": flag2=1 if board[0][2] == board[1][2] == board[2][2] == "x": flag1 = 1 if board[0][2] == board[1][2] == board[2][2] == "o": flag2=1 if flag1==1: return "A" if flag2==1: return "B" if flag1 == 0 and flag2==0: if empty==0: return "Draw" else: return "Pending"
参考https://blog.csdn.net/qq_17550379/article/details/103345013
判断部分可以利用board[i][0]和board[0][i]简化