Autor Wątek: Klon kulek - problem z reprezentacją planszy  (Przeczytany 640 razy)

Offline tv2

  • Użytkownik

# Maj 27, 2009, 12:30:04
Piszę klona http://www.gry.pl/gra/Bubble_Shooter.html. Mam już tablicę dwuwymiarową obiektów klasy kulka do reprezentacji planszy i jako taki system kolizji (od band kulka się odbija, przy kontakcie z inną kulką zatrzymuje się). Każda kulka jest wyrażona przez pozycję (x,y) i prędkość(x,y). I tu moje pytanie, w jaki sposób po kolizji tenże kulkę zapisać do odpowiedniego pola w tablicy (po kolizji niekoniecznie kulka ma współrzędne środka danego pola)? Myślałem o reprezentacji nie opartej o tablicy (każda kulka jest swobodna, zapisywane są w zbiorze), tylko wtedy byłby problem z ich usuwaniem. Na chwile obecną wygląda to tak:


« Ostatnia zmiana: Maj 27, 2009, 12:31:58 wysłana przez tv2 »

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Liosan

  • Redaktor

# Maj 27, 2009, 12:36:53
Myślałem o reprezentacji nie opartej o tablicy (każda kulka jest swobodna, zapisywane są w zbiorze), tylko wtedy byłby problem z ich usuwaniem
Niby czemu? Moim zdaniem to dobre rozwiązanie, zwłaszcza że umożliwia Ci całkowite uniezależnienie pozycji kulki od "siatki".

Liosan

Offline mwojt

  • Użytkownik

# Maj 27, 2009, 13:14:44
Cytuj
tylko wtedy byłby problem z ich usuwaniem
a to dlaczego ?

proponował bym zapisywać wszystkie współrzędne kulek a nie zapisywać ich w tablicy.

struct kulka {float posx,posy;};
kulka kl[100];

ustawianie kulek
int numer=0;
for (int x=0; x<20; x++)
 for (int y=0; y<4; y++) { kl[numer].posx=x*20; kl[numer].posy=y*20 numer++;} // kulka 20 pixeli

kolizja
int kulka1=0, kulka2=5;
 float ax= kl[kulka1].posx-kl[kulka2].posx;
 float ay= kl[kulka1].posy-kl[kulka2].posy;
 odleglosc=sqrt(ax*ax+ay*ay);
 if (odleglosc<40) kolizja kulki1 i kulki2

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Maj 27, 2009, 13:33:32
Cytuj
(po kolizji niekoniecznie kulka ma współrzędne środka danego pola)
Po kolizji kulka ma zawsze współrzędne środka danego pola - tyle ze pola są hexami, a nie szachownicą.