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

[Allegro]Problem z kolizją

Ostatnio zmodyfikowano 2012-02-18 19:04
Autor Wiadomość
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:
C/C++
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;
//tutaj tworzenie bufora, inicjalizacja allegro, bitmapy
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;
//tutaj ruch postacią

// Wyswietlanie napisu jeœli kolizja
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
P-50950
« 1 »
  Strona 1 z 1