Здравствуйте. Писал с ncurses «морской бой», появилась небольшая проблема. Для нормального отображения символов на экране мне потребовалось использовать атрибуты символов ncurses, но выводить каждый символ, используя различные атрибуты, у меня не вышло. Хотя я могу применить их через attr_on.
...
chtype CellStatus(int );
start_color();
init_pair(1, COLOR_RED, COLOR_BLACK);
...
printw("%c ",CellStatus(Field[x][currRow][0]));
...
//Так как может быть всего 4 состояния корабля, то я обошелся switch:
chtype CellStatus (int cell)
{
chtype symbol;
switch (cell)
{
case (-1):
symbol = 'X';
break;
case (0):
symbol = '0';
break;
case (1):
symbol = '#' | COLOR_PAIR(1);
break;
case (2):
symbol = '-';
break;
default:
printw ("Incorrect state!");
break;
}
return symbol;
}
На выходе я получаю символ без каких-либо атрибутов. А если сделать так:
...
attron(COLOR_PAIR(1));
printw("%c ",CellStatus(Field[x][currRow][0]));
attroff(COLOR_PAIR(1));
...
В этом случае символ выводится с нужным мне атрибутом, но в цикле весь блок текста с ним выводится, а я пытаюсь это сделать лишь для некоторых символов.