Как напечатать цвета, основанные на текстовом результате, используя два enum и const char *? - PullRequest
0 голосов
/ 22 июня 2019

Я хочу напечатать цвет результата в зависимости от того, что это за результат. Как это можно реализовать с помощью следующих перечислений и символов *?

0 Должен быть красным, X должен быть белым, а Empty должен быть сброшен.

Конечным результатом является возможность встраивания его в приведенный ниже оператор switch.

ТИА.

enum color
{
        COLOR_RED,
        COLOR_WHITE,
        COLOR_RESET
};
enum token
{
        RED_TOKEN = 'O',
        WHITE_TOKEN = 'X',
        EMPTY_TOKEN = ' ',
        INVALID_TOKEN = EOF
};
const char* color_strings[NUM_COLORS] = { "\x1b[31m", "\x1b[37m", "\x1b[0m" };

       for (x = 0; x < BOARD_WIDTH; x++){ 
            printf("  ");
            switch (theboard[x][y])
            {
                case P_EMPTY:
                    printf(" ");
                    break;
                case P_RED:
                    printf("X");
                    break;
                case P_WHITE:
                    printf("O");
                    break;
                case P_INVALID:
                    printf("return !quit");
                    break;
            }```

1 Ответ

1 голос
/ 22 июня 2019

Просто напечатайте строку цвета перед текстом, который вы хотите задать конкретным цветом.

Этот код

enum color
{
        COLOR_RED,
        COLOR_WHITE,
        COLOR_RESET
};

int main(void)
{

  const char* color_strings[3] = { "\x1b[31m", "\x1b[37m", "\x1b[0m" };
  for (int i=0; i<10; ++i)
  {
    printf("%sO", color_strings[COLOR_RED]);
    printf("%sX", color_strings[COLOR_WHITE]);
  }
  return 0;
}

даст вам чередующиеся красные O и белые X.

enter image description here

Если вы хотите использовать enum token, вы также можете сделать:

enum color
{
        COLOR_RED,
        COLOR_WHITE,
        COLOR_RESET
};

enum token
{
        RED_TOKEN = 'O',
        WHITE_TOKEN = 'X',
        EMPTY_TOKEN = ' ',
        INVALID_TOKEN = EOF
};

int main(void)
{

  const char* color_strings[3] = { "\x1b[31m", "\x1b[37m", "\x1b[0m" };
  for (int i=0; i<10; ++i)
  {
    printf("%s%c", color_strings[COLOR_RED], RED_TOKEN);
    printf("%s%c", color_strings[COLOR_WHITE], WHITE_TOKEN);
  }
  return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...