Python矩阵列行检查

Python matrix column and row check

我一直在做动态井字游戏 在检查行和列时,我遇到了一个问题。

我所有的拳头table长得像;

size? : 4 #input
  0   1   2   3 
  4   5   6   7 
  8   9  10  11 
 12  13  14  15 
Player 1 plays : 

我正在检查列中是否填满了 X 或 O

def column_check():
col_winner = None
cx = []
co = []
for i in range(1):
    for j in range(0, game_size ** 2, game_size):
        if matrix[j] == player1:
            cx.append(j)
        elif matrix[j] == player2:
            co.append(j)

if len(cx) == game_size:
    col_winner = player1
elif len(co) == game_size:
    col_winner = player2
return col_winner

我工作得很好 但我无法为行检查设置 for 循环。 我试过这个代码块;

def row_check():
row_winner = None
rx = []
ro = []
for i in range(game_size):
    for j in range(i * game_size, i * game_size + game_size):

        if matrix[j] == player1:
            rx.append(j)
        elif matrix[j] == player2:
            ro.append(j)

if len(rx) == game_size:
    row_winner = player1
elif len(ro) == game_size:
    row_winner = player2

return row_winner

但它会检查矩阵中的所有数字。它应该逐行检查。 我该怎么做?

我假设您绑定到 column_check() 中使用的结构,并且您需要连续 4 个才能使 game_zize 为 4; 3 game_size = 3。 我的解决方案是这样的:

def row_check():
    row_winner = ""
    for i in range(game_size):
        ro = []
        rx = []
        for j in range(i * game_size, i * game_size + game_size):
            if matrix[j]==player1:
                rx.append(j)
            elif matrix[j] == player2:
                ro.append(j)
        if rx == range(i*game_size, i*game_size+game_size):
            row_winner = player1
        elif ro == range(i * game_size, i * game_size + game_size):
            row_winner = player2
        return row_winner

我写了一个这样的代码块,它运行得很好。 比我想象的要简单。

def row_check():
row_winner = None
for i in range(game_size):
    if matrix[i * game_size:i * game_size + game_size].count(player1) == game_size:
        row_winner = player1
    elif matrix[i * game_size:i * game_size + game_size].count(player2) == game_size:
        row_winner = player2

return row_winner