【发布时间】:2021-03-04 21:26:48
【问题描述】:
所以我有一个由 64 个方格组成的一维数组表示的游戏板,我想知道一个棋子何时试图逃出边界。
例如: 假设国际象棋中的国王在 X 上:
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 X 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
用方向向量很容易计算出被攻击的方格:
-9, -8, -7,
-1, 1,
7, 8, 9
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 1 1 1 0 0
0 0 0 1 X 1 0 0
0 0 0 1 1 1 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
如果他在棋盘的上边缘或下边缘: 我只是添加一个 if 来检查 square + directionvector[i] > 63 或 正方形 + 方向向量[i]
所以:
0 0 0 1 X 1 0 0
0 0 0 1 1 1 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
当它位于侧边缘时,问题就来了:
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 1
1 0 0 0 0 0 1 X
1 0 0 0 0 0 1 1
1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
如您所见,它将“跳”到错误的地方。
你知道有什么方法可以检查吗? 谢谢
【问题讨论】: