Nie wiem dlaczego ale gdy program wchodzi do petli while i tam wykonuje jeden z dwoch ruchow to program wywala komunikat o ochronie pamieci,mysle ze nie wychodze poza dostepne zasoby czy cos, spojrzcie na kod i jak ktos bedzie wiedzial to poprosilbym o podpowiedz dlaczego sie tak dzieje.
int main(void){
WINDOW *my_wins[2];
int row,col,startx,starty,height,width,paddx;
char ch;
initscr();
clear();
noecho();
curs_set(0);
cbreak();
keypad(stdscr,true);
getmaxyx(stdscr,row,col);
if(has_colors()==FALSE){
endwin();
printf("Your terminal does not support color\n");
exit(1);
}
start_color();
init_pair(1,COLOR_GREEN,COLOR_WHITE);
init_pair(2,COLOR_RED,COLOR_WHITE);
init_pair(3,COLOR_BLUE,COLOR_WHITE);
init_pair(4,COLOR_YELLOW,COLOR_WHITE);
init_pair(5,COLOR_CYAN,COLOR_WHITE);
init_pair(6,COLOR_MAGENTA,COLOR_WHITE);
init_pair(7,COLOR_BLACK,COLOR_CYAN);
starty=(LINES-HEIGHT)/2;
startx=(COLS-WIDTH)/2;
paddx=WIDTH/2-PADDLE_WIDTH/2;
menu(row,col);
my_wins[0]=newwin(HEIGHT,WIDTH,starty,startx);
my_wins[1]=newwin(HEIGHT-4,WIDTH-25,starty-5,startx-20);
refresh();
game_win(my_wins[0],HEIGHT,paddx);
stat_win(my_wins[1]);
while((ch=getch())!=10){
switch(ch){
case BACKWARD:
if(paddx>1){
--paddx;
game_win(my_wins,height,paddx);
}
break;
case FORWARD:
if((width-PADDLE_WIDTH)-paddx>1){
++paddx;
game_win(my_wins,height,paddx);
}
break;
}
}
endwin();
return 0;
}
WINDOW *game_win(WINDOW *win,int y,int x){
werase(win);
box(win,0,0);
wbkgd(win,COLOR_PAIR(7));
for(int i=0;i<PADDLE_WIDTH;++i){
mvwaddch(win,y-4,x+i,'=');
mvwaddch(win,y-3,x+i,'=');
}
wrefresh(win);
}