Witam,
Mam problem z kolorami w ncurses. Jakby ktoś chciałby zająć się moim problemem proponuję włączyć kod, który jest w załączniku. Więc tak. Jak widzicie jest pewna animacja i kolory liter są różne. Chciałem aby w jednej pętli był jeden kolor i z każdą kolejną zmieniał się na te podane. Nie wiem gdzie jest błąd. Próbuję to naprawić metodą prób i błędów ale nie radzę sobie.
O to kawałek kodu odpowiadający właśnie za to wszystko:
void funkcja(void) //dokoncz kolory
{
initscr();
if (has_colors()==FALSE) printw("Twoja konsola nie obsluguje kolorow!");
else
{ start_color();
init_pair(1, COLOR_BLUE, COLOR_BLACK);
init_pair(2, COLOR_MAGENTA, COLOR_BLACK);
init_pair(3, COLOR_GREEN, COLOR_BLACK);
init_pair(4, COLOR_RED, COLOR_BLACK);
init_pair(5, COLOR_CYAN, COLOR_BLACK);
int row=0,col=0;
getmaxyx(stdscr,row,col);
int r;
float t;
float rt=0.25;
for (r=1;r<=5;r++)
{
for (t=3;t>=-3;t-=rt)
{
switch(r)
{
case 1: attron(COLOR_PAIR(1));
mvprintw(row/2+y(t),col/2+x(t),"J");
mvprintw(row/2+y(t-rt),col/2+x(t-rt),"A");
mvprintw(row/2+y(t-2*rt),col/2+x(t-2*rt),"C");
mvprintw(row/2+y(t-3*rt),col/2+x(t-3*rt),"E");
mvprintw(row/2+y(t-4*rt),col/2+x(t-4*rt),"K");
attroff(COLOR_PAIR(1));
case 2: attron(COLOR_PAIR(2));
mvprintw(row/2+y(t),col/2+x(t),"J");
mvprintw(row/2+y(t-rt),col/2+x(t-rt),"A");
mvprintw(row/2+y(t-2*rt),col/2+x(t-2*rt),"C");
mvprintw(row/2+y(t-3*rt),col/2+x(t-3*rt),"E");
attroff(COLOR_PAIR(2));
case 3: attron(COLOR_PAIR(3));
mvprintw(row/2+y(t),col/2+x(t),"J");
mvprintw(row/2+y(t-rt),col/2+x(t-rt),"A");
mvprintw(row/2+y(t-2*rt),col/2+x(t-2*rt),"C");
attroff(COLOR_PAIR(3));
case 4: attron(COLOR_PAIR(4));
mvprintw(row/2+y(t),col/2+x(t),"J");
mvprintw(row/2+y(t-rt),col/2+x(t-rt),"A");
attroff(COLOR_PAIR(4));
case 5: attron(COLOR_PAIR(5));
mvprintw(row/2+y(t),col/2+x(t),"J");
attroff(COLOR_PAIR(5));
}
refresh();
clear();
usleep(50000);
}
}
}
endwin();
system("clear");
Switch();
}
Dziękuje z góry :)
Pozdrawiam
P.S. Nie wstawiłem całego kodu bo by dużo zajął miejsca.
- anim.zip (1 KB) - ściągnięć: 72