c - 查找分为九个 3x3 数组的 9x9 数组元素的索引

标签 c

为了创建一个终极井字游戏,其中包括一个 9x9 数组,该数组被分成九个 3x3 子数组。

每个子数组按以下方式编号:

Enter image description here

我想创建一个函数,例如,如果用户输入两个参数,它会转到 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/

相关文章:

c - 如何找到数组中重复次数最多的值?

c - 在 C 中实现字典的快速方法

谁能告诉我凯撒算法有什么问题吗?

c - C 项目的 IDE 中的预处理器感知代码导航

c - 如何在 fopen 中使用参数?

c - gdb 无法访问 $ebp 地址处的内存

c - 使用指针打印变量值时出现意外输出

c - x<<y>>z C 中的求值顺序

c - 如何从程序中禁用 xterm 中输入的行缓冲?

c - 文件描述符确实在C中写入数据