我正在尝试编写一个代码来确定井字游戏的赢家。 (这是大学作业)
为此,我编写了以下函数:
此代码仅检查水平线,我没有添加其余部分。我觉得这需要一些硬编码。
def iswinner(board, decorator):
win = True
for row in range(len(board)):
for col in range(len(board)):
if board[row][col] == decorator:
win = True
else:
win = False
break
其中“board”是大小为 n^2 的二维数组,“decorator”是“X”或“O”值
我希望完成的是该函数循环遍历二维数组的行。然后遍历每一行中的值。如果该元素与“装饰器”匹配,则它会继续并检查下一个,但如果不匹配,则它会从第一个循环中断并转到下一行。它会这样做,直到在同一行中找到 n 个元素。然后它会给出一个布尔值 True,否则为 False。
该代码似乎没有这样做,即使我检查了以下“板”,它也给了我“真”的输出
check_list = [['O', 'X', 'X'], ['O', 'X', 'O'], ['O', 'X', 'X']]
太感谢了!
最好的,赛义德
原文由 Saadat 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以只为每一行制作一组,并检查其长度。如果它只包含一个元素,那么游戏就赢了。
如果有整行“O”,这将返回“O”,如果有一行“X”,则返回“X”,否则返回 -1。
下面是一个完整的井字棋检查器的代码,应该不难理解,但不要犹豫,问:
请注意,无论您选择在井字游戏中放置什么符号(“O”和“X”与“bloop”和“!”一样好),并且对于任何大小的网格,只要它是一个正方形。