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

Pomocy z ustawieniem kolizji w allegro

Ostatnio zmodyfikowano 2015-07-15 14:50
Autor Wiadomość
sxcel
Temat założony przez niniejszego użytkownika
Pomocy z ustawieniem kolizji w allegro
» 2015-07-15 12:28:21
Witam mam pewien problem mianowicie piszę moją pierwszą grę w allgero c++. Moja gra ma polegać na tym, że mam bitmapę, którą ruszam wsad'em i są stałe przeszkody, które po "najechaniu" na nie mają nas cofać na początek tam gdzie zaczynaliśmy i tu pojawia się problem jak ustawić kolizje tych stałych "bloków" żeby nas teleportowały na początek?
Dodam jeszcze mój kod:
C/C++
#include <allegro.h>
#include <iostream>

int r, g, b = 255;
int gracz1_x = 100, gracz1_y = 100;
int przeszkoda1_x = 100, przeszkoda1_y = 161;


void kolizjeprzeszkoda1()
{
    if( gracz1_x < przeszkoda1_x ) gracz1_x = 160;
   
    if( gracz1_y < przeszkoda1_x ) gracz1_y = 100;
   
    if( gracz1_x > przeszkoda1_y - 60 ) gracz1_x = 160;
   
    if( gracz1_y > przeszkoda1_y - 60 ) gracz1_y = 100;
   
   
}

void sterowaniegracz1()
{
    if( key[ KEY_A ] ) gracz1_x--;
   
    if( key[ KEY_D ] ) gracz1_x++;
   
    if( key[ KEY_W ] ) gracz1_y--;
   
    if( key[ KEY_S ] ) gracz1_y++;
   
}

void kolizjemapa()
{
    if( gracz1_x < 0 ) gracz1_x = 0;
   
    if( gracz1_y < 0 ) gracz1_y = 0;
   
    if( gracz1_x > 800 - 60 ) gracz1_x = 800 - 60;
   
    if( gracz1_y > 600 - 60 ) gracz1_y = 600 - 60;
   
}

int main()
{
   
    ///////
    allegro_init();
    install_keyboard();
    set_gfx_mode( GFX_AUTODETECT_FULLSCREEN, 800, 600, 0, 0 );
    //////
   
    ///////////////Bitmapy
    BITMAP * bufor = NULL;
    BITMAP * gracz1 = NULL;
    BITMAP * przeszkoda1 = NULL;
    przeszkoda1 = load_bmp( "przeszkoda1.bmp", NULL );
    bufor = create_bitmap( 800, 600 );
    gracz1 = load_bmp( "gracz1.bmp", NULL );
    //Sprawdzanie
   
    if( !przeszkoda1 )
    {
       
        set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
        allegro_message( "nie mogę załadować obrazka przeszkoda1 !" );
        allegro_exit();
        return 0;
    }
   
    if( !gracz1 )
    {
       
        set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
        allegro_message( "nie mogę załadować obrazka gracz1 !" );
        allegro_exit();
        return 0;
    }
    if( !bufor )
    {
        set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
        allegro_message( "Nie mogę utworzyć bufora !" );
        allegro_exit();
        return 0;
    }
    //Koniec sprawdzania
   
   
   
   
   
   
    while( !key[ KEY_ESC ] )
    {
        clear_to_color( bufor, makecol( r, g, b ) );
        sterowaniegracz1();
        kolizjemapa();
        kolizjeprzeszkoda1();
       
       
        masked_blit( gracz1, bufor, 0, 0, gracz1_x, gracz1_y, gracz1->w, gracz1->h );
        masked_blit( przeszkoda1, bufor, 0, 0, przeszkoda1_x, przeszkoda1_y, przeszkoda1->w, przeszkoda1->h );
       
        blit( bufor, screen, 0, 0, 0, 0, screen->w, screen->h );
    }
   
   
   
   
   
   
    destroy_bitmap( przeszkoda1 );
    destroy_bitmap( gracz1 );
    destroy_bitmap( bufor );
    allegro_exit();
    return 0;
}
END_OF_MAIN();
P-134691
pekfos
» 2015-07-15 12:30:21
C/C++
if( gracz1_x < przeszkoda1_x ) gracz1_x = 160;

if( gracz1_y < przeszkoda1_x ) gracz1_y = 100;

if( gracz1_x > przeszkoda1_y - 60 ) gracz1_x = 160;

if( gracz1_y > przeszkoda1_y - 60 ) gracz1_y = 100;

Brzmi kompletnie bez sensu.
P-134692
sxcel
Temat założony przez niniejszego użytkownika
» 2015-07-15 12:34:32
(jestem początkującym :D) powiedz jak mam to zrobic
P-134693
pekfos
» 2015-07-15 12:35:48
Frazy, które należy wpisać w wyszukiwarkę google:
P-134694
sxcel
Temat założony przez niniejszego użytkownika
» 2015-07-15 12:40:44
Czy mógłbyś mi napisać jak ma wyglądać taka kolizja?
P-134695
pekfos
» 2015-07-15 14:50:16
http://www.easykoder.sequ.pl​/arty/kolizja
Jeśli nie potrafisz szukać, na dobrą sprawę możesz w tym miejscu skończyć.
P-134703
« 1 »
  Strona 1 z 1