好的,我在网上阅读了很多东西,其中大部分使用没有 unsigned int 的 Java。我正在研究具有 unsigned int 的 Objective-C。
让我们考虑以下场景。
板子是这样的:
A1
位于左下方,是最低有效位,H8
位于右上方,是最高有效位。
我已经为棋盘上所有位置的所有棋子的运动构建了位掩码。
假设以下简单情况:
- 游戏将开始。所有棋子都在它们的初始位置。
- 用户试图将骑士移动
G1
到E2
.
显然这个动作是不可能的,因为上面有一个棋子E2
。
我如何发现运动是否有效?
好的,我有所有部分的位掩码:
1111111111111111000000000000000000000000000000001111111111111111
我有骑士可能运动的位掩码G1
是
00000000
00000000
00000000
00000000
00000000
00000X0X
0000X000
00000000
或位
0000000000001000000001010000000000000000000000000000000000000000
如果我AND
这两个
1111111111111111000000000000000000000000000000001111111111111111
0000000000001000000001010000000000000000000000000000000000000000
我明白了
0000000000001000000000000000000000000000000000000000000000000000
我所知道的是当时有一块,但我不明白这如何告诉我这是否是一个有效的举动。
另一个问题是:假设这一举动会让我的国王受到攻击。显然,根据骑士的移动规则,这在技术上是可行的,但不可能,因为我无法做出让我的国王受到攻击的动作。
我如何获得这些信息?谢谢