好的,所以我在国际象棋比赛中走了很长一段路!我有一个主要问题!如果我想要棋盘[4][3] 上的棋子,则棋盘在内存中的索引如下所示:
y axis
0 1 2 3 4 5 6 7
1
x 2
a 3
x 4 X
i 5
s 6
7
我将 x 轴编号为内存索引的样子,以便用户在查看屏幕时看到这一点。正如我现在的代码一样,这是我必须输入的内容才能在 d,6 处获得棋子:用户输入 = wf4,它在程序中转换为 Board[5][3]。如您所见,我想输入 wd6 并转到 d 和最多 6 个。但程序首先下降 5,然后下降到 3(d)。
1 R N B Q K B N R
x 2 P P P P P P P P
a 3
x 4
i 5
s 6 P
7 P P P P P P P
8 R N B Q K B N R
a b c d e f g h
y-axis
我有从坐标中减去 1 的公式,所以如果用户输入 (e,8),它会在 chessBoard[4][7] 中寻找一个棋子,但当然这不会找到棋子,因为 [4][ 7] 比 7 下降 4。我们想要超过 4 下降 7。我真正想要的是超过 4 上升 1!所以它看起来像这样:
8 R N B Q K B N R
y 7 P P P P P P P P
a 6
x 5
i 4
s 3
2 P P P P P P P P
1 R N B Q K B N R
a b c d e f g h
x-axis
在这里,我应该输入 e, 1 并得到一个 King。为此,我需要找到某种方法使左下角变为 0,0 而不是左上角。所以基本上,我该怎么做?如何将 2D 数组索引转换为数学样式网格?!?!编辑***好吧,完美的例子!我是我的玩家,输入 c, 6 将弹出输入值:source.x = 2 和 source.y = 6。我有执行此操作的代码。现在我需要告诉我的棋盘[source.x][source.y]玩家的意思是棋盘[2][2]。看?而且我没有看到直接的公式,因为查看此输入列表与使用最后一个图表需要查看的板:
- input = 1,4 array[4][1] 得到相同的片段
- input = 5,7 array[1][5] 得到相同的部分
- input = 2,6 array[2][2] 得到相同的片段
- input = 3,7 array[1][3] 得到相同的部分
所以很明显输入 x 需要交换到数组的 y 索引中。但是,x 值呢?呃,这太复杂了