Kolory tekstów w ncurses [SOLVED]

Odpowiedz Nowy wątek
2014-12-22 00:33
0

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.

edytowany 1x, ostatnio: jaceks2106, 2014-12-22 00:35

Pozostało 580 znaków

2014-12-22 00:36
0

To go zoptymalizuj.
Lub zrób przykład obrazujący twój problem rozmiarem w parę wierszy.

Masz brak klauzul break; po każdym case


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
edytowany 1x, ostatnio: _13th_Dragon, 2014-12-22 00:37

Pozostało 580 znaków

2014-12-22 12:13
0
_13th_Dragon napisał(a):

To go zoptymalizuj.
Lub zrób przykład obrazujący twój problem rozmiarem w parę wierszy.

Masz brak klauzul break; po każdym case

Dzieki wielkie :D Wszystko działa

Pozostało 580 znaków

2014-12-22 14:42
Krzywy Młot
0

Nie da sie otworzyc zalaczonego pliku bo nie zawiera main.c ;p

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0