Niezalezna od gracza predkosc pilki

0

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 ?

0

Wydaje mi się, że będziesz potrzebował poczytać coś o sterowaniu procesami i wątkami

0

jakimi procesami i jakimi watkami -.- Watpie...

0

Założyć wątek na ruch piłeczki, żeby się wykonywał non stop z boku.

EDIT: Mogę się mylić, nigdy nie pisałem takiego typu gry, może da się to zrobić w inny sposób :P

0

Jaki watek ;c

0

nie wiesz co to jest wątek ?

0

Nie wiem co to watek, nie moge znalezc nic w internecie, co to jest watek ?

0

Nawet informacji nie umiesz wyszukać ? Odpuść sobie programowanie
https://pl.wikipedia.org/wiki/W%C4%85tek_(informatyka)

0

Poczytaj o tworzeniu wątków, zamykaniu, handle-ach, jak zamykać, jak otwierać proces, jak zwalniać handle-a ;)

EDIT: Logistycznie by to wyglądało tak, że masz jeden proces, który będzie odpowiadał za ruch piłki (procesem może być np jakaś twoja funkcja, która sobie napisałeś na ruch piłki, napiszesz sobie ją w taki sposób, żeby piłka ruszała się non-stop chyba, że natrafi na jakąś przeszkodę). Proces ten wykonuje się cały czas w trakcie uruchomienia go w programie, musisz poczytać o komunikacji między procesowej. Mogę się mylić, jeśli wprowadzam kolegę w błąd to bardzo proszę, żeby ktoś mnie poprawił :).

0

Wątek to jest część programu wykonywana współbieżnie w obrębie jednego procesu. W jednym procesie może istnieć wiele wątków. Tylko nie pytaj się teraz co to proces.

0

Co to jest proces ? I czym jest ten watek, to jest funkcja ? a proces to co ? tez funkcja ? nie rozumiem, to sa funkcje ? jesli nie to jak je napisac

0

Przeczytaj mój post, tak procesem może być funkcja. Nawet będziesz ją widział w menedżerze zadań :P...

0

xD

0

A jeszcze chcialem zapytac, jak stworzyc funkcje ktora bedzie procesem ? Oraz czy watek to tez funkcja ?

0

sequoia.iiar.pwr.wroc.pl/~witold/unixprog/upr_ipc.pdf <- to bedzie dobre ? tutaj sie dowiem wszystkiego co to watek i proces ?

0

http://cpp0x.pl/kursy/Kurs-WinAPI-C++/Zaawansowane/Watki/337

poczytaj ten kurs. Po jego przeczytaniu googluj na zasadzie
Thread linux c

0

Ale czemu o c++ ? Ja pisze w c, ten kurs o watkach w c++ wyjasni mi czym sa watki w c ? Nieee, nie chce tego tutorialu w c++ o watkach, nie rozumiem tamtych funkcji nie chce mi sie ich szukac, wolalbym tutorial o watkach w c. mialby ktos taki ?

0

w przeciwienstwie do Ciebie ja potrafie czytac
Wiem ze o C. Przeczytaj ten link ktory Ci dalem. Kod praktycznie bedzie dzialal w C
A tu nawet nie chodzi o jezyk chodzi o konpcepcje. a pozniej zrob tak jak pisalem w moim pierwszym poscie. googluj

1

Ton ostatniego postu raczej nie pomoże Ci w uzyskaniu odpowiedzi ;s

nie rozumiem tamtych funkcji nie chce mi sie ich szukac

Z takim podejściem to radzę się przekwalifikować ;)

3

Ludzie, ludzie, po co tutaj jakieś wątki?
Zwykle non-blocking IO wystarczy, a ncurses na bank ma je wbudowane.

0

Patryk27, no to doradz cos jak to moge zrobic

0

A powiedz mi proszę, jakie słowa kluczowe wpisywałeś w Google po dowiedzeniu się, że ncurses ma ficzer non-blocking IO, a jakie to słowa nie zwróciły żadnego ciekawego wątku choćby na StackOverflow?

1

Dobra okej poradzilem sobie z tematem, pilka dziala jak marzenie, a teraz usiade na dluzej i poczytam o tych roznych rzeczach co mi napisal ten chlopak z avatarem jakiegos bullldoga, dzieki !

1

Poradziłeś sobie czy, po raz kolejny, koledzy z warsztatu napisali Ci program?

http://forum.warsztat.gd/index.php?topic=30377.0

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