Skip to main content
 首页 » 编程设计

python之检查井字游戏的赢家之NumPy/Python

2025年05月04日22luoye11

我想检查井字游戏中所有可能的获胜条件,如何以函数式方式重写?

board = numpy.array([[0, 0, 0], 
                     [0, 0, 0], 
                     [0, 0, 0]]) 
player = 1 
 
if any([(board[0, :] == player).all(), 
        (board[:, 0] == player).all(), 
        (board[1, :] == player).all(), 
        (board[:, 1] == player).all(), 
        (board[2, :] == player).all(), 
        (board[:, 2] == player).all()]): 
    print('Win') 

请您参考如下方法:

使用any和all的组合-

mask = board==player 
out = mask.all(0).any() | mask.all(1).any() 

要考虑对角线,需要更多的工作 -

out |= np.diag(mask).all() | np.diag(mask[:,::-1]).all()