如何找到列表的边缘

问题描述 投票:0回答:1

我正在尝试制作一款名为 Nip 的棋盘游戏。 当玩家点击单元格时,我需要知道它是否是游戏板的边缘。

我的游戏板看起来像这样

我可以使用地板功能检测哪个手机玩家点击。但是,我不知道如何判断是游戏板的边缘还是没有使用如下列表

EMPTY,EDGE = 0,0
BLACK = 1
WHITE = -1

board = [
    [      2,     2, EDGE, EDGE, EDGE, EDGE,     2,     2,],
    [      2, EDGE, EMPTY, EMPTY, EMPTY, EMPTY, EDGE,     2,], 
    [  EDGE, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EDGE,], 
    [  EDGE, EMPTY, EMPTY, BLACK, WHITE, EMPTY, EMPTY, EDGE,], 
    [  EDGE, EMPTY, EMPTY, WHITE, BLACK, EMPTY, EMPTY, EDGE,], 
    [  EDGE, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EDGE,], 
    [      2, EDGE, EMPTY, EMPTY, EMPTY, EMPTY, EDGE,     2,],
    [      2,     2, EDGE, EDGE, EDGE, EDGE,     2,     2,],
]

我尝试查看所选单元格的顶部、底部、左侧和右侧,如果至少缺少一个单元格,我会将其视为边缘。效果不太好。 该功能检查所选卖出是否处于边缘状态。代码中的 row 和 col 代表板列表中选定单元格的行和列。

  def is_on_the_edge(self,row,col):
        for drow in [-1, 0, 1]:
            for dcol in [-1, 0, 1]:
                if drow == 0 and dcol == 0:
                    continue
                check_row, check_col = row + drow, col + dcol
                if board[check_row][check_col] == 2:
                    return True
                else:
                    continue
        return False

我该怎么做?

这是我的完整代码

python list pygame
1个回答
0
投票
  1. 检查

    board[row][col]
    是否为2。这可能意味着也可能不意味着“边缘”,具体取决于您的逻辑。如果不是 2,请继续

  2. row in (0, 7) or col in (0, 7)
    检查坐标是否位于
    board
    正方形的边界。如果是,则为边缘,否则

  3. 检查

    row in (1, 6) and col in (1, 6)
    是否覆盖对角线上的四个边缘单元格。如果这是真的,那么它就是一个边缘,如果不是,它就不是。

© www.soinside.com 2019 - 2024. All rights reserved.