几张图理清结构体中 row[15], column[15], right[19], left[19], 与棋盘位图之间的关系:



给出棋子的坐标,通过变换即可求出该棋子在 row[15], column[15], right[19], left[19],
中的位置:
假设棋子坐标为 ( x, y )
则其在 row[15] 中的位置为 ( row[x] >> 2*y ) & 3
在 column[15] 中的位置为 ( column[y] >> 2*x ) & 3
令 int p = x + y - 5;
若 p>=0 && p<19
则其在 right[15] 中的位置为 ( right[p] << ( p<10 ? 2*y : 28-2*x ) ) & 3
令 int p = x - y + 9;
若 p>=0 && p<19
则其在 left[19] 中的位置为 ( left[p] << ( p<10 ? 2*x : 2*y ) ) & 3
之前的落子函数先将要落子的位置清空,再对其赋值,而大多数情况下要落子的点是空点。
为了提高运行效率,将之前的落子函数拆分成撤子和落子两个函数:

