簡體   English   中英

C枚舉數組(需要幫助理解)

[英]C enum array (need help understanding)

enum cell_contents {
    INVALID, HOLE, PEG
};

static const enum cell_contents master_board[BOARD_HEIGHT][BOARD_WIDTH] = {
    { INVALID, INVALID, PEG, PEG, PEG, INVALID, INVALID },
    { INVALID, INVALID, PEG, PEG, PEG, INVALID, INVALID },
    { PEG, PEG, PEG, PEG, PEG, PEG, PEG },
    { PEG, PEG, PEG, HOLE, PEG, PEG, PEG },
    { PEG, PEG, PEG, PEG, PEG, PEG, PEG },
    { INVALID, INVALID, PEG, PEG, PEG, INVALID, INVALID },
    { INVALID, INVALID, PEG, PEG, PEG, INVALID, INVALID }
};

我需要有關如何遍歷master_board表並確定該字段是INVALID,PEG還是HOLE的幫助。

我嘗試使用此方法,但該方法無效:

char *characters[] = {"\t", 'o', '.'};

/* display the game board to the screen */
void display_board(enum cell_contents board[][BOARD_HEIGHT])
{
    /* delete this comment and write your own comments and code here */
    for(int i = 0; i < BOARD_HEIGHT; i++) {
        printf("%d.", i+1);

        int length = sizeof(board[i]) / sizeof(board[i][0]);
        printf("Length: %d", length);

        for(int e = 0; e < length; e++){
            if(board[i][e] == INVALID)
                printf("\t%c", characters[0]);
            else if(board[i][e] == PEG)
                printf("\t%c", characters[1]);
            else if(board[i][e] == HOLE)
                printf("\t%c", characters[2]);
        }

        printf("\n");
    }
}

我正在使用另一個函數來調用display_board:

void play_game(void)
{
    enum cell_contents board[BOARD_WIDTH][BOARD_HEIGHT];
    init_board(board);
    /* delete this comment and write your own comments and code here */

    //while(!is_game_over(board)) {
        display_board(board);
    //}
}

BOARD_WIDTH和BOARD_HEIGHT在7點相同。

您是否定義了BOARD_WIDTH和BOARD_HEIGHT? 該代碼對我有用:

#define BOARD_HEIGHT 7
#define BOARD_WIDTH 7
enum cell_contents {
  INVALID, HOLE, PEG
};

static const enum cell_contents master_board[BOARD_HEIGHT][BOARD_WIDTH] = {
  { INVALID, INVALID, PEG, PEG, PEG, INVALID, INVALID },
  { INVALID, INVALID, PEG, PEG, PEG, INVALID, INVALID },
  { PEG, PEG, PEG, PEG, PEG, PEG, PEG },
  { PEG, PEG, PEG, HOLE, PEG, PEG, PEG },
  { PEG, PEG, PEG, PEG, PEG, PEG, PEG },
  { INVALID, INVALID, PEG, PEG, PEG, INVALID, INVALID },
  { INVALID, INVALID, PEG, PEG, PEG, INVALID, INVALID }
};

char *characters[] = {"\t", 'o', '.'};


void display_board(enum cell_contents board[][BOARD_HEIGHT])
{
    /* delete this comment and write your own comments and code here */
   for(int i = 0; i < BOARD_HEIGHT; i++) {
      printf("%d.", i+1);

      int length = sizeof(board[i]) / sizeof(board[i][0]);
      printf("Length: %d", length);

      for(int e = 0; e < length; e++){
          if(board[i][e] == INVALID)
              printf("\t%c", characters[0]);
          else if(board[i][e] == PEG)
              printf("\t%c", characters[1]);
          else if(board[i][e] == HOLE)
              printf("\t%c", characters[2]);
      }

       printf("\n");
  }
}

int main(int argc, char const *argv[])
{
 display_board(master_board);
 return 0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM