Sefir Temat założony przez niniejszego użytkownika  | 
[Allegro] Podstawy i wątpliwości. » 2012-06-11 17:01:55 Witam :). 2 dni temu zacząłem co nieco pisać w Allegro 4.4. Chciałem dzisiaj napisać programik-grę w Ponga. Jedyne co mi zostało z kwestii fizyki, jeśli mogę to tak nazwać to właśnie odbijanie piłki od paletki. Moje warunki nie działają, a chciałbym jednak zrobić coś, co można zaklasyfikować jako wytwór gro-podobny. Z góry dziękuję za pomoc :) Ostatni edit, bo tak naprawdę tyle mi wystarczy do szczęścia póki co :).  | 
 | 
xevuel  | 
» 2012-06-11 22:27:18 | 2 dni temu zacząłem co nieco pisać w Allegro 4.4. Chciałem dzisiaj napisać programik-grę w Ponga. |  
 Nie uważasz, że to trochę krótkawo? | Moje warunki nie działają, a chciałbym jednak zrobić coś, co można zaklasyfikować jako wytwór gro-podobny. Z góry dziękuję za pomoc :) |  
 Cóż, na gotowca nie masz co liczyć, a jeśli masz konkretny problem, zarzuć kod. Od razu mówię - zasady formatowania postów są tutaj:  Kurs STC :)  Nie działają... Nie kompilują się, nie wykrywają kolizji, wyłączają komputer, usuwają wszystkie pliki z komputera? Sprecyzuj...  | 
 | 
Sefir Temat założony przez niniejszego użytkownika  | 
» 2012-06-18 14:40:59 Mniejsza z tym, już kilka dni temu udało mi się dojść samemu i ładnie się odbija. Jednak chcę sie zapytać, o coś,żeby móc naliczać punkty za nie odbicie piłki.
 a) Co mogę zrobić aby piłka znów pojawiła się na środku i kolejny punkt
 Bo w końcu po jednym punkcie zawsze zaczynało sie od nowa, czy to wszystko musi być w procedurze tak, aby można zrobić warunek 
  if(xpilki<xpaletki1)
 punkt dla gracza 2
 zatrzymać procedurę i od nowa
 if (xpilki>xpaletki2)
 punkt dla gracza 1
 zatrzymać procedurę i od nowa
   |  
 
Dziwne pytanie, wiem ale cóż, najlepiej się uczy na własnych błędach i własnej niewiedzy, oczywiście nie proszę o kod, tylko o rady :)  | 
 | 
xevuel  | 
» 2012-06-18 15:18:41  while(trwa_mecz) {    ustaw piłkę na środek();    nadaj jej prędkość();    while(odbijają)    {       rob coś tam();    }    punkty gracza który odbił jako ostatni++; }
 
  | 
 | 
Sefir Temat założony przez niniejszego użytkownika  | 
» 2012-06-18 16:45:32 Dobrze, jest coś w tym stylu, tylko nie wiem, gdzie tu dać reset położenia piłki.W którym miejscu? Ten program po, tak jakby, utracie punktu, zatrzymuje się. Ten drugi while jest chyba jakoś źle umiejscowiony :(
 
   while(!key[KEY_ESC])
     {
        while(xk-r>recx2-3){             
        rect(bufor,x1,y1,x2,y2,makecol(200,200,0));
        circlefill(bufor,xk,yk,r,makecol(200,0,255));
        _sleep(1);
        vline(bufor,x1,y1,y2,makecol(0,0,0));
        rectfill(bufor,recx,recy,recx2,recy2,makecol(255,0,0));
        circlefill(bufor,xk,yk,r,makecol(122,122,122));
        textprintf(bufor,font,700,20,makecol(100,100,9),"Wynik: %d",licznik);
        blit(bufor,screen,0,0,0,0,1440,900);
        
        xk=xk+dx;
        yk=yk+dy;
        
        if(yk>y2-r-3||yk<y1+r+3) dy=-dy;
        if(xk>x2-r-3) dx=-dx;
        if(key[KEY_UP])recy-=2, recy2-=2;
        if(key[KEY_DOWN])recy+=2,recy2+=2;
        if(xk-r<x1&&(recy2>yk-r&&recy<yk+r))
        {dx=-dx;
        licznik++;
        dx++;
        dy--;}        
        
        clear_to_color(bufor,makecol(0,0,0));
        } }   
    | 
 | 
xevuel  | 
» 2012-06-18 16:50:40 Wedle mojego pseudokodu, na początku pętli.
  PS. Kod dawaj w [cpp]...[/cpp], i wyjaśnij co oznaczają zmienne typu xk i co oznaczają warunki typu while(xk-r>recx2-3).  | 
 | 
Sefir Temat założony przez niniejszego użytkownika  | 
» 2012-06-18 16:53:58 xk oznacza współrzędną x kółka, r to jego promień recx2 to prawy x paletki. To jest warunek przekroczenia boiska z lewej strony, czyli warunek kończący grę.  | 
 | 
xevuel  | 
» 2012-06-18 17:03:07 Nie jestem 100-procentowo pewny, ale chyba chodzi o to, że po utracie punktu nie ustawiasz zmiennych opisujących położenie piłki (xk?) przez co warunek  while( xk - r > recx2 - 3 )  jest zawsze fałszywy.  | 
 | 
|  « 1 »  |