Niezalezna od gracza predkosc pilki

Niezalezna od gracza predkosc pilki
BU
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 9 lat
  • Postów:72
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:

Kopiuj
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

Kopiuj
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 ?

edytowany 1x, ostatnio: Buzzxs
Zobacz pozostałe 6 komentarzy
T9
I nie będziesz musiał książki od matmy otwierać!
BU
To nie ma nic z matma wspolnego, trollku poza tym po co mi odpisujesz ? ostatnio stwierdziles ze jestem za glupi na rozmowy z toba, chyba znowu koledzy ci dokuczyli i musisz sie na mnie wyrzyc internetowo :( oki to smialo
KA
no to kup ode mnie . oferuje teraz promocje akurat , że opisanie kodu komentarzami i wskazówkami kosztuje 50% mniej.
BU
nie kupuje zadnych programow, ani nie uzywam zadnych programow za ktore autorzy kaza sobie placic, myslisz ze wyjatkowo kupie od ciebie ? 100 razy bardziej wolalbym sobie browar za to kupic
KA
dobra jak wolisz siedzieć nad tym kolejne 5 dni i programowac permutacjami to oki
feni000
  • Rejestracja:ponad 9 lat
  • Ostatnio:5 miesięcy
  • Lokalizacja:Kraków
  • Postów:124
0

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

BU
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 9 lat
  • Postów:72
0

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

feni000
  • Rejestracja:ponad 9 lat
  • Ostatnio:5 miesięcy
  • Lokalizacja:Kraków
  • Postów:124
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

edytowany 1x, ostatnio: feni000
BU
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 9 lat
  • Postów:72
0

Jaki watek ;c

KA
źle sterujesz tym wątkiem. jak chcesz żeby Ci ktoś pomógł albo napisał gotowca musisz inaczej to poprowadzić. napisz że stawiasz flaszke za pomoc
NoZi
  • Rejestracja:około 16 lat
  • Ostatnio:3 dni
0

nie wiesz co to jest wątek ?


Hate the sin, love the sinner
BU
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 9 lat
  • Postów:72
0

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

NoZi
  • Rejestracja:około 16 lat
  • Ostatnio:3 dni
0

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


Hate the sin, love the sinner
feni000
  • Rejestracja:ponad 9 lat
  • Ostatnio:5 miesięcy
  • Lokalizacja:Kraków
  • Postów:124
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ł :).

edytowany 1x, ostatnio: feni000
XO
  • Rejestracja:prawie 11 lat
  • Ostatnio:około 8 lat
  • Postów:58
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.

SO
Widzę, że umiesz kopiować pierwsze zdanie z wikipedii :D
BU
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 9 lat
  • Postów:72
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

edytowany 1x, ostatnio: Buzzxs
feni000
  • Rejestracja:ponad 9 lat
  • Ostatnio:5 miesięcy
  • Lokalizacja:Kraków
  • Postów:124
0

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

edytowany 1x, ostatnio: feni000
BU
nie mam menadzera zadan ;p co najwyzej - > ps aux
0

xD

BU
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 9 lat
  • Postów:72
0

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

feni000
  • Rejestracja:ponad 9 lat
  • Ostatnio:5 miesięcy
  • Lokalizacja:Kraków
  • Postów:124
0
edytowany 1x, ostatnio: feni000
BU
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 9 lat
  • Postów:72
0

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

XO
Przecież masz to wytłumaczone w Wikipedii tak dokładnie że już bardziej sie nie da
fasadin
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
  • Postów:4882
0

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

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

edytowany 2x, ostatnio: fasadin
BU
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 9 lat
  • Postów:72
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 ?

edytowany 1x, ostatnio: Buzzxs
EroSanin
Założę się że kod skądś skopiowałeś;d
XO
Najprostsze są wątki w Pythonie, rzeczywiście nie dziwie sie że nie rozumiesz tych w C++
fasadin
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
  • Postów:4882
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

feni000
  • Rejestracja:ponad 9 lat
  • Ostatnio:5 miesięcy
  • Lokalizacja:Kraków
  • Postów:124
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ć ;)

EroSanin
Kurde, sprawdziłem tematy @Buzzxs, nawet nie pytał czy może zostać programistom. Taka samowolka daleko Cię nie zaprowadzi chłopcze.
Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
3

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


fasadin
nie wiedzialem ze pod linuksem jest ncurses ;)
spartanPAGE
mówiłem o tym w poprzednim wątku :P @fasadin "new curses" jako kontynuacja "curses" z BSD, siłą rzeczy musi być pod linuksa :) Osobiście miałem problem ze znalezieniem ncurses na windowsa, gdy miałem jakiś głupi pomysł
BU
orginalne ncurses jest tylko pod linuxem, na windowsa sa forki ncurses, ncurses jest rozwijane przez gnu ;)
BU
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 9 lat
  • Postów:72
0

Patryk27, no to doradz cos jak to moge zrobic

Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
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?


edytowany 1x, ostatnio: Patryk27
BU
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 9 lat
  • Postów:72
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 !

edytowany 1x, ostatnio: Buzzxs
BU
oh przepraszam :)
1

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

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

XO
Koledzy z warsztatu dobrze sobie poradzili
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)