为了创建一个终极井字游戏,其中包括一个 9x9 数组,该数组被分成九个 3x3 子数组。
每个子数组按以下方式编号:
我想创建一个函数,例如,如果用户输入两个参数,它会转到 9x9 矩阵中的单元格(或返回索引)。
例如,如果我输入 2,2:我转到第二个 3x3 矩阵,然后转到第二个单元格,这意味着我最终进入 9x9 矩阵的单元格 [0,4]。
我正在用 C 语言编写代码。 我最终得到的只是制作了一个包含许多循环的大函数,这些循环将我直接带到了想要的单元格,但我认为它太多了,我会很高兴有一种更简单的方法来做到这一点。
有什么想法吗?
以下代码只是我所做工作的开始。 我将 9x9 矩阵分为三列,每次我根据用户为子数组选择的 1-9 的数字处理一列,然后从那里我为每个子数组找到一系列函数以找到合适的地方。太复杂太长了,这是我代码的问题。这就是我寻找替代方案的原因。
int Insert_Move(char player, char GameBoard[Lines][Columns], int chosen_pos,
int next_subboard)
{
if(next_subboard == 3 || next_subboard == 6 || next_subboard == 9)
return First_Column_9x9(player, GameBoard, chosen_pos, next_subboard);
if(next_subboard == 2 || next_subboard == 5 || next_subboard == 8)
return Second_Column_9x9(player, GameBoard, chosen_pos, next_subboard);
if(next_subboard == 1 || next_subboard == 4 || next_subboard == 7)
return Third_Column_9x9(player, GameBoard, chosen_pos, next_subboard);
return 1; /* Success */
}
最佳答案
在二维数组中为:
X 坐标 = ((p1-1)℅3)*3 + (p2-1)℅3;
Y坐标=((p1-1)/3)*3 + (p2-1)/3;
关于c - 查找分为九个 3x3 数组的 9x9 数组元素的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41196422/