def __add_third_in_line(matrix, player, win_or_defend):
"""Look for 2 in line and try to win or defend in 1 move"""
done = False
opponent = model.opponent(player)
# = horizontals
for row in range(3):
if not done:
done, line = win_or_defend(matrix[row, :], player)
if done:
matrix[row, :] = line
# || verticals
for col in range(3):
if not done:
done, line = win_or_defend(matrix[:, col], player)
if done:
matrix[:, col] = line
if not done:
# \ diagonal
done, line = win_or_defend(matrix.diagonal(), player)
if done:
matrix[np.diag_indices(3)] = line
if not done:
# / diagonal
done, line = win_or_defend(np.fliplr(matrix).diagonal(), player)
if done:
np.fliplr(matrix)[np.diag_indices(3)] = line
if not done:
return matrix, player
else:
return matrix, opponent
评论列表
文章目录