我会尽力描述这个问题,但我已经很困惑了!这就是获胜的功用:
def winner(board):
WAYS_TO_WIN = ((0, 1, 2),
(3, 4, 5),
(6, 7, 8),
(0, 3, 6),
(1, 4, 7),
(2, 5, 8),
(0, 4, 8),
(2, 4, 6))
for row in WAYS_TO_WIN:
if board[row[0]] == board[row[1]] == board[row[2]] != EMPTY:
winner = board[row[0]]
return winner
这是计算机移动函数中的循环,看看一台计算机是否能赢,如果能赢,那么采取移动:
for move in legal_moves(board):
board[move] = computer
if winner(board) == computer:
print(move)
return move
我的问题是,winner
函数检查所有要赢的组合,并且只返回赢的比赛的第一个部分,即(3,4,5)win只返回'3'作为赢家,因为winner=board[row[0]]
如果获胜的计算机移动在board[row[2]]
,并且winner
函数返回board[row[0]]
,那么即使是赢的移动,也不会匹配条件if winner(board) == computer
?你知道吗
第一个函数是检查任何获胜组合的3个单元格是否具有相同的值,这不是
EMPTY
,并返回值,该值可以是播放器或计算机。你知道吗电脑模拟每一个合法的动作,看他是否用这个动作赢,如果他找到一个使他赢的动作,他就这样做。你知道吗
例如:
计算机将检查是否有任何一个空单元格使他获胜,当他填满中心的
EMPTY
单元格时会发生什么,从而使他不得不采取行动才能到达获胜的位置。你知道吗相关问题 更多 >
编程相关推荐