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

C++ allegro kolizja (myszka)

Ostatnio zmodyfikowano 2010-03-08 20:33
Autor Wiadomość
Bartaz
Temat założony przez niniejszego użytkownika
C++ allegro kolizja (myszka)
» 2010-03-08 19:32:16
Witam jak zrobic kolizje muszki np z bitmapa ludka.
chodzi mi o ta kolizje z prostakatami
C/C++
if( kolizja( myszkax, myszka.y, myszka.s, myszka.w, ludeka.x, ludeka.y, ludeka.s, ludeka.w ) )
{
    ///cos
}
P-14791
szyx_yankez
» 2010-03-08 19:48:38
C/C++
BITMAP * ludek; //bitmapa ludka

if( mouse_x > ludekx && mouse_x < ludekx + ludek->w &&
mouse_y > ludeky && mouse_y < ludeky + ludek->h )
{
    //
}
P-14793
Bartaz
Temat założony przez niniejszego użytkownika
...
» 2010-03-08 20:01:44
Fajne ale nie dziala xD
C/C++
class Cpostac
{
public:
    int x, y;
    int s, w;
};


Cpostac ludeka;


if( mx > ludeka.x && mx < ludeka.x + ludeka.s &&
my > ludeka.y && my < ludeka.y + ludeka.w )
{
    ludeka.x = ludeka.x + 7;
}
P-14794
dmx81
» 2010-03-08 20:05:49
lub bardziej szczegolowa kolizja
C/C++
if( getpixel( bufor, myszka.x, myszka.y ) != makecol( 100, 100, 100 ) && mb != 0 )
//cos
gdzie na bufor rysujemy naszego ludka na tle wiadomego koloru wyswietlajac znana funkcja masked_blit, a mb - to zmienna mowiaca nam, czy jakis przycisk myszki wcisniety (nie pamietam dokladnie, ale np LPM: mb=1, PPM: mb=2, brak wcisniecia - mb=0)
mozesz oczywiscie dac bez warunku wcisniecia przycisku myszki, wtedy kolizja tuz po najechaniu na kolorowa ( a nie kwadratowa) czesc ludzika

pozdr.
P-14795
dmx81
» 2010-03-08 20:12:23
a co do tego co napisales wyzej, powinno dzialac, musze wychodzic wiec nie bede sie wglebial, mimo ze kod krotki, ale ja sprawdzam wiekszosc tego typu niedzialajacych rzeczy przez
textprintf_ex( bufor, font, 20, 20, makecol( 200, 200, 200 ), - 1, "Myszka x = %d, y = %d, klawisz = %d !", mx, my, mb );
czyli wyswietlam sobie aktualna pozycje myszki, to samo zrob dla ludka, wtedy bedziesz widzial, czy na pewno maja podobne wspolrzedne, np jak wyswietlalem cos na bitmapie ruchomej, niby na ekranie mialo pozycje np 500,300, ale po wyswietleniu okazalo sie ze ma 900,300, a kursor 500,300 a znajdowaly sie w jednakowym miejscu na ekranie - nie dodalem scrollowanych wartosci;)
ps. warto by utworzyc jakis konstruktor do tej klasy
C/C++
class C_poziom1
{
public:
    int i_x, i_y, i_s, i_w;
    bool b_disp;
    BITMAP * obrazek;
    C_poziom1();
    C_poziom1( int x, int y, int s, int w );
   
};
C_poziom1::C_poziom1( int x, int y, int s, int w )
{
    i_x = x;
    i_y = y;
    i_s = s;
    i_w = w;
}
to moj przyklad ;)

bo tu co napisales, nie wiemy jakie wspolrzedne przyjmuje ludek - domyslnie wiadomo, ale nie wszytsko co sie domyslamy, dzieje sie w rzeczywistosci;)
P-14796
szyx_yankez
» 2010-03-08 20:13:11
C/C++
if( mx > ludeka.x && mx < ludeka.x + ludeka.s &&
my > ludeka.y && my < ludeka.y + ludeka.w )
{
    ludeka.x = ludeka.x + 7;
}
na
C/C++
if( mx > ludeka.x && mx < ludeka.x + ludeka->w &&
my > ludeka.y && my < ludeka.y + ludeka->h )
{
    ludeka.x = ludeka.x + 7;
}
Gdzie ludeka to nazwa twojej bitmapy ludka.
P-14797
Bartaz
Temat założony przez niniejszego użytkownika
...
» 2010-03-08 20:13:39
Ale wtedy gra nie mogla by miec chyba za duzo kolorow ,nie da sie zrobi z tamta kolizja?
P-14798
Bartaz
Temat założony przez niniejszego użytkownika
...
» 2010-03-08 20:33:40
Ok juz wszystko dziala dzieki za pomoc.
P-14799
« 1 »
  Strona 1 z 1