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();
	}