-3
我有一项任务,需要我生成一个10×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()
也是启动代码的一部分,我也想解释为什么当我生成空白网格时需要参数。
你应该在'for'循环中使用'BOARD_HEIGHT'和'BOARD_WIDTH'而不是9} –
我会把它写成'typedef enum {EMPTY ='',BLOCKED ='*',PLAYER ='@'} Cell;'然后当你想打印它时,只需将值赋给'char'。为你保存一张查找表。另一种方法是查找表:'const char SYMBOL [] = {'','*','@'};'后面跟着'SYMBOL [my_enum]'。 – Lundin