program działa gdy go niekoloruje bez zarzutu natomiast problem zaczyna sie gdy po pokoloruje wtedy w grze nie liczy mi pkt ;( pytalem sie goscia powiedział ze funkcje inch() zwracają strukture chtype ( gdzie jest nr znaku i atrybuty) i liczyl bez kolorów bo nie zmienial sie nr znaku natomiast z kolorem dodaje sie jescze nr koloru i dlatego numer sie zmienia i if odpowiadajacy za zmiane punktów nie działa dobrze, no to zamaskowalem sobie tego incha zwaracajacego ale problem w tym ze chyba coś źle robie :P pomożecie ?? (chodzi o maskowanie w funkcji gra)

#include <stdlib.h>
#include <stdio.h>
#include <ncurses.h>
#include <strings.h>
#include <time.h>
WINDOW *okno1, *okno2;  // Okna programu
char znak,imie[9];
int xp,yp, strzalki,punkty;
int wyczysc()
    {
    wclear(okno1);
    box(okno1,0,0);
    wrefresh(okno1);
    }

int ekran()
    {       
        int i,x,y;

        srand(time(NULL));
        for(i=0;i<9;i++)
           {    
            x=rand() % LINES-2; //-2 dodatkowo odaje by na rame nie wjeżdzał  
            y=rand() % COLS-22; //-2 dodatkowo odaje by na rame nie wjeżdzał  
            //wbkgd(okno1, COLOR_PAIR(2) | A_BOLD);     
            mvwprintw(okno1, x, y+1, "%c", '$');

            x=rand() % LINES;
            y=rand() % COLS-20;
            //wbkgdset(okno1, COLOR_PAIR(3) | A_BOLD);
            mvwprintw(okno1, x, y+1, "%c", '-');

            //wbkgd(okno1, COLOR_PAIR(1) | A_BOLD);
            wrefresh(okno1);

           }
        /*plansza [0][0]='0';
        mvwprintw(okno1, 0, 0, "%c", '0');*/
    /*dodasz sobie np. 10 znaków -,& o wspórzędnych xy, nastepnie dodasz dzieś 0 a potem tylko walniesz mvwprintw i wrefresz,dodawanie punktów i będzie pienknie */

    } 
int gra ()
    {
        do {

        strzalki=wgetch(okno1);
        if (strzalki==KEY_LEFT) 
            {       
                mvwprintw(okno1, yp, xp, "%c", ' ');
                xp--;   
            };
        if (strzalki==KEY_RIGHT) 
            {
                mvwprintw(okno1, yp, xp, "%c", ' ');
                xp++;               
            };
        if (strzalki==KEY_UP) 
            {
                mvwprintw(okno1, yp, xp, "%c", ' ');
                yp--;   
            };
        if (strzalki==KEY_DOWN) 
            {
                mvwprintw(okno1, yp, xp, "%c", ' ');
                yp++;   
            };
        if (mvwinch(okno1, yp, xp) & A_CHARTEXT == 45)
            { 
                punkty--;
            }
        if (mvwinch(okno1, yp, xp)==36)
            { 
                punkty++;
            }
        mvwprintw(okno2, 2, 1, "%s", "punkty:");
        mvwprintw(okno2, 2, 8, "%d", punkty);
        wrefresh(okno2);
        mvwprintw(okno1, yp, xp, "%c", '0');
        }while(strzalki!=27);
    }                       
int nick()
    {
        mvwprintw(okno1, 1, 1, "%s", "PODAJ NAZWE UZYTKOWNIKA");
        wgetstr(okno1,imie);
        mvwprintw(okno2, 2, 1, "%s", "imie:");
        wrefresh(okno1);                
        mvwprintw(okno2, 2, 6, "%s", imie);
    }
void main()
    {   
    initscr();  // Rozpoczecie pracy z biblioteka CURSES
    start_color();          // Proba rozpoczecia pracy z kolorami
    if(has_colors()) {      // Przygotowanie par kolorow
        init_pair(1, COLOR_WHITE, COLOR_BLUE);  //else
        init_pair(2, COLOR_GREEN, COLOR_BLUE);  //$
        init_pair(3, COLOR_RED, COLOR_BLUE);    //-
        init_pair(4, COLOR_YELLOW, COLOR_BLUE); //#
    }
    curs_set(0);    // Nie wyswietlaj kursora
    noecho();   // Nie wyswietlaj znakow z klawiatury

    okno1 = newwin(LINES, COLS-20, 0, 0);
    wbkgd(okno1, COLOR_PAIR(1));
    box(okno1, 0, 0);           // Standardowe ramki        
    mvwprintw(okno1, 0, 1, "%s", "okno glowne");
    wrefresh(okno1);

    okno2 = newwin(LINES, 20, 0, COLS-20);
    wbkgd(okno2, COLOR_PAIR(1) | A_BOLD);
    box(okno2, 0, 0);   
    mvwprintw(okno2, 0, 1, "%s", "Okno komunikatow");
    wrefresh(okno2);

    nick (); // podaj imie

    wrefresh(okno2);

    wyczysc ();
    mvwprintw(okno1, 1, 1, "%s", "zaczynamy gre");
    wrefresh(okno1);
    mvwprintw(okno1, LINES-1, 1, "%s", "Esc konczy program");
    wrefresh(okno1);
    sleep(2);
    wyczysc ();//-2 dodatkowo daje by na rame nie wjeżdzał    
    ekran ();
    wrefresh(okno1);
    keypad(okno1,1);//funkcja ulatwijaca pobiranie znakow z okna
    xp=1;
    yp=1;
    mvwprintw(okno1, xp, yp, "%c", '0');
    gra();

    delwin(okno1);      // Usuniecie okien
    delwin(okno2);
    endwin();
    }