我正在尝试制作一款名为 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
我该怎么做?
检查
board[row][col]
是否为2。这可能意味着也可能不意味着“边缘”,具体取决于您的逻辑。如果不是 2,请继续
row in (0, 7) or col in (0, 7)
检查坐标是否位于 board
正方形的边界。如果是,则为边缘,否则
检查
row in (1, 6) and col in (1, 6)
是否覆盖对角线上的四个边缘单元格。如果这是真的,那么它就是一个边缘,如果不是,它就不是。