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

[Allegro5] poruszanie obiektami gra galaza

Ostatnio zmodyfikowano 2013-07-01 11:37
Autor Wiadomość
aaadam
Temat założony przez niniejszego użytkownika
[Allegro5] poruszanie obiektami gra galaza
» 2013-06-28 20:30:32
witam mam już cała grę napisaną tylko chciałbym dodać obracanie obiektów tak jak to jest w tej grze "galaza" nie mam pomysłu jak to zrobić może ktoś pomóc, moje się oczywiście poruszają nawet fajnie tylko sztywno kwadratowo  ??
P-86519
olozi
» 2013-06-28 20:32:59
w jakiej bibliotece piszesz?
P-86522
pekfos
» 2013-06-28 20:33:07
Jakiej biblioteki graficznej używasz?
P-86523
aaadam
Temat założony przez niniejszego użytkownika
» 2013-06-28 23:41:50
allegro 5 ewentualnie mogę troche kodu wrzucić
P-86544
polkom21
» 2013-06-29 09:56:23
Będziemy z tego powodu bardzo wdzięczni.
P-86549
aaadam
Temat założony przez niniejszego użytkownika
» 2013-06-29 14:47:27
no to więc tablica w której trzymam ruch robaczków jeszcze jest jedna wazniejsza na samym dole to wlasnie dla tej chce zrobic zeby ladnie sie obracaly obrazki
C/C++
char tab1[ 900 ] = { 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0
    , 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0,
    1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0
    , 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0,
    0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0,
    1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0,
    0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0,
    0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1,
    0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0,
    0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 2,
    0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0,
    0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 2,
    0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0,
    0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0,
    0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0,
    0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0,
    2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0 };
to jest pentla która odpowiada za poruszanie oczywiście tworze sobie wektor tych robakow
C/C++
void Logika()
{
    direction = tab1;
    if( i < 900 )
    {
        if( direction[ i ] == 1 ) x--; //lewo
        else if( direction[ i ] == 0 ) y++; //dol
        else if( direction[ i ] == 3 ) y--; //gora
        else if( direction[ i ] == 2 ) x++; //prawo
       
        i++;
    }
    if( x == 0 ) {
        x += 200;
        y = 0;
    }
    if( x >= 575 ) {
        x -= 200;
        y = 0;
    }
    if( y == 600 ) y = 0;
   
    if( i >= 900 ) i = 0;
   
}
a to jest funkcja która odpowiada za wyświetlanie zmiana obrazka następuje co 0.5 sekundy jak się nie mylę i odpowiednio gdy hp robaka jest 1 lub2oraz 3
C/C++
for( itR2 = Robaki2.begin(); itR2 != Robaki2.end(); itR2++ )
{
    itR2->Logika();
    if( zmianaObrazka )
    {
        if( itR2->gethp() == 2 )
             al_draw_bitmap_region( robak2, 0, 0, 20, 20, itR2->getX(), itR2->getY(), NULL );
        else if( itR2->gethp() == 1 )
             al_draw_bitmap_region( robak3, 20, 0, 20, 20, itR2->getX(), itR2->getY(), NULL );
        else
             al_draw_bitmap_region( robak3, 40, 0, 20, 20, itR2->getX(), itR2->getY(), NULL );
       
    }
    else {
        if( itR2->gethp() == 2 )
             al_draw_bitmap_region( robak3, 0, 0, 20, 20, itR2->getX(), itR2->getY(), NULL );
        else if( itR2->gethp() == 1 )
             al_draw_bitmap_region( robak2, 20, 0, 20, 20, itR2->getX(), itR2->getY(), NULL );
        else al_draw_bitmap_region( robak2, 40, 0, 20, 20, itR2->getX(), itR2->getY(), NULL );
       
    }
}
 klasa robak:
C/C++
class Robak
{
private:
    float x, y, ex, ey, t, hp;
public:
    int sourceX;
    static bool zmianaObrazka;
    static bool strzal;
    static int randR, randR2, randR3;
    Robak( int x, int y, int i, int i2, int ex, int ey, int HP ); //x ,y wsporzedne,i oraz i2 do poruszania
    Robak( void );
    int getX() { return x; } //pozycja x
    int getY() { return y; } //pozycja y
    int geteY() { return ey; }
    int geteX() { return ex; }
    int gethp() { return hp; }
    int getRand() { return randR; }
    void addX( int xx ) { x += xx; }
    void addY( int yy ) { y += yy; }
    void addHp( int HP ) { hp += HP; }
    void iniRand( int yy ) { randR = yy; }
    void poruszanie();
    void strzelanie();
    char * direction, * direction2, * direction3, * direction4;
    int i, i2, i3;
    void Logika()
    {
        direction = tab1;
        if( i < 900 )
        {
            if( direction[ i ] == 1 ) x--; //lewo
            else if( direction[ i ] == 0 ) y++; //dol
            else if( direction[ i ] == 3 ) y--; //gora
            else if( direction[ i ] == 2 ) x++; //prawo
           
            i++;
        }
        if( x == 0 ) {
            x += 200;
            y = 0;
        }
        if( x >= 575 ) {
            x -= 200;
            y = 0;
        }
        if( y == 600 ) y = 0;
       
        if( i >= 900 ) i = 0;
       
    }
   
    void lewoprawo()
    {
       
        direction2 = tab2;
        if( i2 < 362 )
             if( direction2[ i2 ] == 1 ) x--; //lewo
        else if( direction2[ i2 ] == 2 ) x++; //prawo
        else;
       
        i2++;
       
        if( i2 >= 362 ) i2 = 0;
       
    }
    void Logika2()
    {
        direction3 = tab3;
        if( i < 900 )
        {
            if( direction3[ i ] == 1 ) x = x - 1; //lewo
            else if( direction3[ i ] == 0 ) y += 1; //dol
            else if( direction3[ i ] == 3 ) y -= 1; //gora
            else if( direction3[ i ] == 2 ) x += 1; //prawo
           
            i++;
        }
        if( x == 0 ) {
            x += 200;
            y = 0;
        }
        if( x >= 575 ) {
            x -= 200;
            y = 0;
        }
        if( y == 600 ) y = 0;
       
        if( i >= 900 ) i = 0;
       
        if( x >= 575 )
        {
            y = 0;
            x = 100;
        }
       
    }
    void Logika4()
    {
        direction4 = tab4;
        if( i < 900 )
        {
            if( direction3[ i ] == 1 ) x = x - 1; //lewo
            else if( direction3[ i ] == 0 ) y += 1; //dol
            else if( direction3[ i ] == 3 ) y -= 1; //gora
            else if( direction3[ i ] == 2 ) x += 1; //prawo
           
            i++;
        }
        if( x == 0 ) {
            x += 200;
            y = 0;
        }
        if( x >= 575 ) {
            x -= 200;
            y = 0;
        }
        if( y == 600 ) y = 0;
       
        if( i >= 900 ) i = 0;
       
        if( x >= 575 )
        {
            y = 0;
            x = 100;
        }
       
    }
};
jeszcze jedna tablica poruszania
C/C++
char tab2[ 362 ] = { 1, 1, 4, 1, 1, 4, 1, 1, 4, 1, 1, 4, 1, 1, 4, 1, 1, 4, 1, 1, 4, 1, 1, 4, 1, 1, 4, 1, 1
    , 4, 1, 1, 4, 1, 1, 4, 1, 1, 4, 1, 1, 4, 1, 1, 4, 1, 1, 4, 1, 1, 4, 1, 1, 4, 1, 1, 4, 1, 1, 4, 1, 1, 4, 1, 1, 4, 1, 1, 4, 1, 1, 4, 1, 1, 4, 1, 1, 4, 1, 1, 4, 1, 1, 4, 1, 1, 4, 1, 1, 4, 1, 1, 4, 1, 1, 4, 1,
    1, 4, 1, 1, 4, 1, 1, 4, 1, 1, 4, 1, 1, 4, 1, 1, 4, 1, 1, 4, 1, 1, 4, 1, 1, 4, 1, 1, 4, 1, 1, 4, 1, 1, 4, 1, 1, 4, 1, 1, 4, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
    , 2, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 4, 2,
    2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2, 4, 2, 2
    , 4, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 };
P-86559
aaadam
Temat założony przez niniejszego użytkownika
» 2013-07-01 11:37:26
C/C++
al_draw_tinted_scaled_rotated_bitmap_region( robak3, 40, 0, 20, 20, al_map_rgba_f( 1, 1, 1, 1 ), 0, 0, itR2->getX(), itR2->getY(), 1, 1, itR2->getobr(), 0 );
ta funkcja dużo pomogła także zamykam temat nie wiedziałem o niej wcześniej
P-86706
« 1 »
  Strona 1 z 1