c - 我该如何处理这个 typedef?

标签 c

我有一项作业,要求我生成一个 10 x 10 的网格,每个网格要么是空的,要么是用星号填充的。启动代码包含它应该生成的模式,但我只是不确定如何处理它。

在帮助程序文件中,声明了此 typedef

#define BOARD_WIDTH 10
#define BOARD_HEIGHT 10

typedef enum cell{
    EMPTY,
    BLOCKED,
    PLAYER
} Cell;

#define EMPTY_OUTPUT " "
#define BLOCKED_OUTPUT "*"

Cell BOARD_1[BOARD_HEIGHT][BOARD_WIDTH];
Cell BOARD_2[BOARD_HEIGHT][BOARD_WIDTH];

这是 c 文件中的代码

Cell BOARD_1[BOARD_HEIGHT][BOARD_WIDTH] =
{
    { BLOCKED, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY },
    { EMPTY, BLOCKED, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, BLOCKED, EMPTY, EMPTY },
    { EMPTY, EMPTY, BLOCKED, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY },
    { EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, BLOCKED, EMPTY, EMPTY },
    { EMPTY, EMPTY, EMPTY, EMPTY, BLOCKED, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY },
    { EMPTY, EMPTY, BLOCKED, EMPTY, EMPTY, BLOCKED, EMPTY, BLOCKED, EMPTY, EMPTY },
    { EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, BLOCKED, EMPTY, EMPTY, EMPTY },
    { EMPTY, EMPTY, BLOCKED, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY },
    { EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY },
    { EMPTY, EMPTY, BLOCKED, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, BLOCKED }
};

我写了一些代码来生成一个空白网格

void initialiseBoard(Cell board[BOARD_HEIGHT][BOARD_WIDTH])
{
int x;
int y;
printf("| |");
for(x=0; x<=9; x++){
    printf("%i|", x);
}
printf("\n");
for (y=0; y<=9; y++){

    printf("|%i|", y);
    for(x=0; x<=9; x++){
        printf(" |");
    }
    printf("\n");
}

}
void loadBoard(Cell board[BOARD_HEIGHT][BOARD_WIDTH],
           Cell boardToLoad[BOARD_HEIGHT][BOARD_WIDTH])
{
    /* TODO */
}

但我不确定如何使用 BOARD_1单元格以用星号填充网格。 此功能initialiseBoard()也是启动代码的一部分,我还想解释为什么在生成空白网格时需要参数。

最佳答案

“生成”并不意味着“打印到标准输出”,它意味着“创建内存状态”,换句话说,您的 initialiseBoard() 函数应该更改 传递板数组的内容,使其成为初始化板(而不是随机的未初始化板)。

循环中的 printf() 应该分配给 board 的单元格:

void initialiseBoard(Cell board[BOARD_HEIGHT][BOARD_WIDTH])
{
  for (size_t y = 0; y < BOARD_HEIGHT; ++y)
  {
    for (size_t x = 0; x < BOARD_WIDTH; ++x)
      board[y][x] = EMPTY;
  }
}

这会将所有单元格设置为EMPTY

关于c - 我该如何处理这个 typedef?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36350742/

相关文章:

c - 如何关闭 zookeeper 日志信息?

c - dlsym(RTLD_NEXT, "msgctl") 不返回默认版本

c - 如何在 ANSI C 中获取 X 之前的天数和小时数

c - 使用 fscanf 从文件中读取一个整数

c - fork系统调用输出:

编译器测试失败,gcc on redhat

c - 检测不完整的 32 位二进制数据

c - 如何在二维数组中动态分配内存并存储值?

C:即使条件仍然满足,循环也会弹出

c++ - 将 3 个字节/引脚值合并为一个字节