[Allegro]Problem z kolizją
Ostatnio zmodyfikowano 2012-02-18 19:04
Maxius Temat założony przez niniejszego użytkownika |
[Allegro]Problem z kolizją » 2012-02-18 19:04:52 Witam!
Ostatnio zacząłem zajmować się grafiką w C++. Zainteresowałem się kolizjami. Pobrałem tutorial ze strony Easykodera i troche go zmieniłem, próbowałem dodać kolizję z ekranem.
Kolizja działa, lecz jest niepoprawna- program znajduje kolizję jedynie na rogach ekranu.
Czy ktoś mógłby mnie nakierować co robię źle?
Dziękuje.
Oto kod:
class Cpostac { public: short int x, y; short int s, w; };
bool kolizja( int x1, int y1, int s1, int w1, int x2, int y2, int s2, int w2 ) { if( x2 <= x1 + s1 && x2 > x1 && y2 >= y1 && y2 <= y1 + w1 ) return true; else if( x2 <= x1 + s1 && x2 > x1 && y2 + w2 >= y1 && y2 + w2 <= y1 + w1 ) return true; else if( x2 + s2 <= x1 + s1 && x2 + s2 > x1 && y2 >= y1 && y2 <= y1 + w1 ) return true; else if( x2 + s2 <= x1 + s1 && x2 + s2 > x1 && y2 + w2 >= y1 && y2 + w2 <= y1 + w1 ) return true; else return false; };
Cpostac ludek1, ludek2, ekran;
ludek1.x = 100; ludek1.y = 100; ludek1.s = 40; ludek1.w = 40; ludek2.x = 300; ludek2.y = 100; ludek2.s = 40; ludek2.w = 40; ekran.x = 0; ekran.y = 0; ekran.s = 640; ekran.w = 480;
if( kolizja( ludek1.x, ludek1.y, ludek1.s, ludek1.w, ludek2.x, ludek2.y, ludek2.s, ludek2.w ) == true ) { textout_ex( bufor, font, "Kolizja !", 20, 20, makecol( 255, 200, 255 ), - 1 ); } if( kolizja( ludek1.x, ludek1.y, ludek1.s, ludek1.w, ekran.x, ekran.y, ekran.s, ekran.w ) == true ) { textout_ex( bufor, font, "Ekran!", 20, 20, makecol( 255, 200, 255 ), - 1 ); }
//EDIT Problem rozwiązany wystarczyło zrobić kilka if'ów temat do zamknięcia |
|
« 1 » |