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 » |