题目描述:
题解:
<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]简化