Wczesniej mialem problem ze pilka w grze poruszala sie tylko wtedy jak poruszyl sie gracz, teraz dalem tam funkcje timeout i pilka wykonuje ruch nawet gdy gracz tego nie robi ale, gdy gracz sie poruszy pilka zaczyna leciec z inna predkoscia, szybciej, a chcialbym zeby zawsze leciala z ta sama predkoscia...
to funkcja main:
int main(void){
WINDOW *my_wins[2];
srand(time(NULL));
initscr();
timeout(-1);
check_term();
clear();
curs_set(0);
noecho();
cbreak();
get_color();
menu();
draw_pong();
my_wins[0] = newwin(HEIGHT, WIDTH, STARTY, STARTX);
my_wins[1] = newwin(HEIGHT - 4, WIDTH - 22, STARTY - 4, STARTX - 24);
game(my_wins[0],my_wins[1]);
endwin();
return 0;
}
a to funkcja gry
int game(WINDOW *win1,WINDOW *win2){
char ch;
struct game_data *gd;
if ((gd = init_game_data()) == NULL) {
mvprintw(0, 0, "Could not allocate memory for the game_data.");
return -1;
}
refresh();
game_win(win1, gd);
stat_win(win2, gd);
while((ch = getch()) != 10){
switch(ch){
case BACKWARD:
if(gd->player->x > 1)
--gd->player->x;
break;
case FORWARD:
if(gd->player->x < (WIDTH - PADDLE_WIDTH) - 1)
++gd->player->x;
break;
default:
break;
}
ball_inst(gd);
ball_move(gd);
erase();
refresh();
game_win(win1, gd);
stat_win(win2, gd);
}
a tu caly kod: https://bpaste.net/show/f2ab69e28c61
Nie wiem co tu zrobic, czytalem troche o petlach czasu rzeczywistego no ale nie mam pojecia, chce zeby pilka zawsze bez wzgledu na to czy gracz sie poruszyl czy nie, leciala ze stala predkoscia.
Mysle ze pomogloby danie timeout do petli dla getcha i sprawdzanie w ifie potem czy minela okreslona ilosc czasu, tylko wlasnie nie wiem jak to dobrze sprawdzic, te liczby ktore sprawdzaja aktualny czas w sekundach w c sa duze i nie ogarniam jak to sprawdzac... moglby ktos z tym pomoc ?