Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Pozycja odbijającej się piłeczki

Ostatnio zmodyfikowano 2009-12-11 16:18
Autor Wiadomość
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)


P-11986
steckel
» 2009-12-07 18:54:32
Dodaj zmienne:
C/C++
bool up = true;
bool right = true;
P-11987
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
P-11990
DejaVu
» 2009-12-07 21:16:52
Przedstawiam rozwiązanie tylko na oś X. Resztę myślę, że będziesz wiedział jak dorobić.
C/C++
int iPredkoscX = 1;
int iPozycjaX = 10;
//...
if( iPozycjaX >= 640 && iPredkoscX > 0 )
{
    iPredkoscX = - 1;
} //if

if( iPozycjaX <= 0 && iPredkoscX < 0 )
{
    iPredkoscX = 1;
} //if

iPozycjaX += iPredkoscX;
P-11992
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:

C/C++
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
P-12006
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:)
P-12075
« 1 »
  Strona 1 z 1