chesterr Temat założony przez niniejszego użytkownika |
Pozycja odbijającej się piłeczki » 2009-12-07 18:23:18 Moj problem.. sprobuje to przestawic tak:
wspolrzedna: x - to poziom. wspolrzedna: y - to pion.
Jesli odbijam pileczje od prawej sciany i wiem ze pilczeka bedzie leciala z dolu to ustawiam: x-- i y--. (pilczeka porusza sie w lewo i do gory) Wszystko jest dobrze do poki faktycznie pileczka leci z dolu. Czy mialby ktos jaki pomysl jak sprawdzic z ktorej strony pileczka leci.
Jesli po leci z gory to x,y powienien wynosic: x-- i y++; (pilczeka porusza sie w lewo i na dol)
|
|
steckel |
» 2009-12-07 18:54:32 Dodaj zmienne: bool up = true; bool right = true;
|
|
chesterr Temat założony przez niniejszego użytkownika |
» 2009-12-07 20:20:08 tak wyglada moj obecny kod: if(kolizja(100+x,100+y,pilka->w,pilka->h,640,0,0,480)) {zderz_x=true; zderz_y=false; zderz_d=false; zderz_u=false;} //prawo if(kolizja(100+x,100+y,pilka->w,pilka->h,0,0,5,480)) { zderz_x=false; zderz_y=true; zderz_d=false; zderz_u=false;} //lewo if(kolizja(100+x,100+y,pilka->w,pilka->h,0,480,640,5)) { zderz_x=false; zderz_y=false; zderz_d=true; zderz_u=false;} // dol if(kolizja(100+x,100+y,pilka->w,pilka->h,0,0,640,5)) { zderz_x=false; zderz_y=false; zderz_d=false; zderz_u=true;} // gora
if (zderz_x) { x--; y--; } // zderz_x - sciana prawa if (zderz_y) { x++; y++; } // zderz_y - sciana lewa if (zderz_d) { x++; y--; } // zderz_d - sciana dolna if (zderz_u) { x--; y++; } // zderz_u - sciana gorna
wyswietl_pilke(pilka,bufor,x,y);
"takich" zmiennych juz jest 4, jak dodam jeszcze po 2 to boje sie ze sie w tym wszystkim pogubie. edit: literowki |
|
DejaVu |
» 2009-12-07 21:16:52 Przedstawiam rozwiązanie tylko na oś X. Resztę myślę, że będziesz wiedział jak dorobić. int iPredkoscX = 1; int iPozycjaX = 10;
if( iPozycjaX >= 640 && iPredkoscX > 0 ) { iPredkoscX = - 1; }
if( iPozycjaX <= 0 && iPredkoscX < 0 ) { iPredkoscX = 1; }
iPozycjaX += iPredkoscX; |
|
chestero |
» 2009-12-08 22:29:33 no niech mnie... kiedy ja dojde do takiej wprawy Dokladnie o to chodzilo Panie Piotrze, malo tego wyciolem prawie pol swojego programu razem z funkcja sprawdzajaca kolizje teraz wszystko zalatwia mi ten kod: if( x == 600 ) kierunek_x =- 1;
if( x == 0 ) kierunek_x = 1;
x += kierunek_x;
if( y == 0 ) kierunek_y = 1;
if( y == 450 ) kierunek_y =- 1;
y += kierunek_y;
nareszcie mam ta zakichana pileczke ktora odbija sie tak jak powinna. hah wkoncu.. juz mam chyba ze 100 pomyslow jak to wykorzystam w moich super grach ;d |
|
dmx81 |
» 2009-12-11 16:18:03 pewnie to co napisze to oczywista oczywistosc...:P ale napisze cos, co tez u siebie zaobserowalem, te warunki if(x==600) sa ok,jesli wykorzystuje sie przesuniecie o 1, dla przesuniecia np o 3, pileczka wyleci za ekran, dlatego dobrze miec ograniczenia te calkiem brzegowe(czyli gora i dol ekranu) x>=600 i x<=0, wtedy zawsze zadziala, ale pewnie to dla wszystkich wiadome:) |
|
« 1 » |