首页 > 解决方案 > 数字井字游戏获胜条件

问题描述

这是一个数字井字游戏。我尝试将行、列或对角线的获胜条件加起来为 15。但是,' '不能将其更改为整数。我能做些什么来避免这种情况?

这是主要问题部分:

local_board = [[ '','0','1','2'],
               ['0',' ',' ',' '],
               ['1',' ',' ',' '],
               ['2',' ',' ',' ']]

def isWinner(self):
    if int(local_board[1][1]) + int(local_board[1][2]) + int(local_board[1][3]) == 15\
    or int(local_board[2][1]) + int(local_board[2][2]) + int(local_board[2][3]) == 15\
    or int(local_board[3][1]) + int(local_board[3][2]) + int(local_board[3][3]) == 15\
    or int(local_board[1][1]) + int(local_board[2][1]) + int(local_board[3][1]) == 15\
    or int(local_board[1][2]) + int(local_board[2][2]) + int(local_board[3][2]) == 15\
    or int(local_board[1][3]) + int(local_board[2][3]) + int(local_board[3][3]) == 15\
    or int(local_board[1][1]) + int(local_board[2][2]) + int(local_board[3][3]) == 15\
    or int(local_board[1][3]) + int(local_board[2][2]) + int(local_board[3][1]) == 15:
        print('Player '+ self.player +' wins. Congrats!')
        self.continue_game = False

标签: pythonpython-3.xtic-tac-toe

解决方案


创建一个 2D numpy 数组,而不是 2D 列表。可以用 NaN 替换的空格。其他所有内容都作为整数输入。然后你可以使用 numpy.nansum 函数来计算你有兴趣计算的总和。

这是一些示例代码。我没有测试它。

import numpy as np

local_board = [[np.nan,0,1,2],
               [0,np.nan,np.nan,np.nan],
               [1,np.nan,np.nan,np.nan],
               [2,np.nan,np.nan,np.nan]]

local_board = np.array(local_board)

def isWinner(self):
    if np.nansum(local_board[1][1] + local_board[1][2] + local_board[1][3]) == 15\
    or np.nansum(local_board[2][1] + local_board[2][2] + local_board[2][3]) == 15\
    or np.nansum(local_board[3][1] + local_board[3][2] + local_board[3][3]) == 15\
    or np.nansum(local_board[1][1] + local_board[2][1] + local_board[3][1]) == 15\
    or np.nansum(local_board[1][2] + local_board[2][2] + local_board[3][2]) == 15\
    or np.nansum(local_board[1][3] + local_board[2][3] + local_board[3][3]) == 15\
    or np.nansum(local_board[1][1] + local_board[2][2] + local_board[3][3]) == 15\
    or np.nansum(local_board[1][3] + local_board[2][2] + local_board[3][1]) == 15:
        pr'Player '+ self.player +' wins. Congrats!')
        self.continue_game = False


推荐阅读