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

[Allegro] Prośba o napisanie gotowego kodu kolizji bez udziału różowego koloru

Ostatnio zmodyfikowano 2011-08-22 21:10
Autor Wiadomość
dominikowy
Temat założony przez niniejszego użytkownika
[Allegro] Prośba o napisanie gotowego kodu kolizji bez udziału różowego koloru
» 2011-08-21 21:33:05
Czy mógłby ktoś napisać coś takiego? Nie mogę tego skumać, i wiele osób ma z tym problem. Wstawić to do "Kursów" i żeby to było zrozumiałe dla wszystkich, wtedy nie było by tu tyle spamu.Plisss
P-39641
SeaMonster131
» 2011-08-21 22:05:09
<< pomyłka, sorki >>
P-39644
DejaVu
» 2011-08-21 22:18:01
Użyj silnika wspierającego kolizje jeżeli nie potrafisz ich sam napisać, a chcesz napisać grę.
P-39646
Thud
» 2011-08-21 22:39:23
Box2D i kolyzje
My tu gotowców nie dajemy.
P-39651
dominikowy
Temat założony przez niniejszego użytkownika
» 2011-08-22 18:49:37
Wielkie dzięki za chęci:> To spójrzcie chociaż na mój kod:
Doróbcie 2 postacie, tlo i jeden dzwiek
C/C++
#include <allegro.h>

bool kolizja( int x1, int y1, int s1, int w1, int x2, int y2, int s2, int w2 )
{
   
    if( x1 + s1 >= x2 && x1 <= x2 + s2 && y1 + w1 >= y2 && y1 <= y2 + w2 ) return( true );
   
    return( false );
};

volatile long speed = 0;
void increment_speed()
{
    speed++;
}
END_OF_FUNCTION( increment_speed );
LOCK_VARIABLE( speed );
LOCK_FUNCTION( increment_speed );

int main()
{
    allegro_init();
    install_keyboard();
    set_color_depth( 32 );
    set_gfx_mode( GFX_AUTODETECT, 800, 600, 0, 0 );
    clear_to_color( screen, makecol( 240, 133, 99 ) );
    install_sound( DIGI_AUTODETECT, MIDI_AUTODETECT, "" );
    set_volume( 100, 100 );
    install_timer();
    install_int_ex( increment_speed, BPS_TO_TIMER( 250 ) );
   
   
   
    //ładowanie bitmap  i dźwięku
    BITMAP * bufor = NULL;
    BITMAP * milena = NULL;
    BITMAP * paulina = NULL;
    BITMAP * tlo = NULL;
   
    tlo = load_bmp( "Obiekty/tlo.bmp", default_palette );
    milena = load_bmp( "Obiekty/milena.bmp", default_palette );
    paulina = load_bmp( "Obiekty/paulina.bmp", default_palette );
   
    SAMPLE * owca6 = NULL;
   
    owca6 = load_sample( "Muzyka/owca6.wav" );
    //ładowanie bitmap  i dźwięku
   
    //Błędy w ładowaniu
    if( !owca6 )
    {
        set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
        allegro_message( "Nie mogę zaladować dzwieku !" );
        allegro_exit();
        return 0;
    }
    if( !tlo )
    {
        set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
        allegro_message( "nie mogę załadować obrazka tlo !" );
        allegro_exit();
        return 0;
    }
   
    bufor = create_bitmap( 800, 600 );
    if( !bufor )
    {
        set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
        allegro_message( "Nie mogę utworzyć bufora !" );
        allegro_exit();
        return 0;
    }
   
    if( !milena &&!paulina )
    {
        set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
        allegro_message( "Nie mogę załadować obrazka !" );
        allegro_exit();
        return 0;
    }
   
    //Błędy w ładowaniu
   
    // x i y
    int paulina_x = 500, paulina_y = 100;
    int milena_x = 100, milena_y = 200;
    // x i y
   
    //pętla główna
    while( !key[ KEY_ESC ] )
    {
       
        if( key[ KEY_1 ] ) play_sample( owca6, 255, 127, 1000, 0 );
       
        if( key[ KEY_TAB ] ) { milena_y = 100; milena_x = 300; }
        if( key[ KEY_CAPSLOCK ] ) { paulina_y = 100; paulina_x = 300; }
       
        while( speed > 0 )
        {
           
            if( key[ KEY_UP ] ) if( kolizja( milena_x, milena_y, milena->w, milena->h, paulina_x, paulina_y, paulina->w, paulina->h ) == false ) milena_y--; else { milena_y += 5; speed = 0; }
            if( key[ KEY_DOWN ] ) if( kolizja( milena_x, milena_y, milena->w, milena->h, paulina_x, paulina_y, paulina->w, paulina->h ) == false ) milena_y++; else { milena_y -= 5; speed = 0; }
            if( key[ KEY_LEFT ] ) if( kolizja( milena_x, milena_y, milena->w, milena->h, paulina_x, paulina_y, paulina->w, paulina->h ) == false ) milena_x--; else { milena_x += 5; speed = 0; }
            if( key[ KEY_RIGHT ] ) if( kolizja( milena_x, milena_y, milena->w, milena->h, paulina_x, paulina_y, paulina->w, paulina->h ) == false ) milena_x++; else { milena_x -= 5; speed = 0; }
           
           
           
            if( key[ KEY_W ] ) if( kolizja( milena_x, milena_y, milena->w, milena->h, paulina_x, paulina_y, paulina->w, paulina->h ) == false ) paulina_y--; else { paulina_y += 5; speed = 0; }
            if( key[ KEY_S ] ) if( kolizja( milena_x, milena_y, milena->w, milena->h, paulina_x, paulina_y, paulina->w, paulina->h ) == false ) paulina_y++; else { paulina_y -= 5; speed = 0; }
            if( key[ KEY_A ] ) if( kolizja( milena_x, milena_y, milena->w, milena->h, paulina_x, paulina_y, paulina->w, paulina->h ) == false ) paulina_x--; else { paulina_x += 5; speed = 0; }
            if( key[ KEY_D ] ) if( kolizja( milena_x, milena_y, milena->w, milena->h, paulina_x, paulina_y, paulina->w, paulina->h ) == false ) paulina_x++; else { paulina_x -= 5; speed = 0; }
           
           
            speed--;
        }
       
       
        clear_to_color( bufor, makecol( 255, 0, 255 ) );
        masked_blit( tlo, bufor, 0, 0, 0, 0, 800, 600 );
        masked_blit( milena, bufor, 0, 0, milena_x, milena_y, milena->w, milena->h );
        masked_blit( paulina, bufor, 0, 0, paulina_x, paulina_y, paulina->w, paulina->h );
        blit( bufor, screen, 0, 0, 0, 0, 800, 600 );
       
        /*
                 srand( time( NULL ) );
                if( getpixel( bufor, milena_x, milena_y ) != makecol( 255, 0, 255 ) ){
                int losowanie1 =( rand() %4 ) + 1;
                if(losowanie1==1) if( paulina_x <=710  ) {paulina_x++;paulina=paulinap;}
                if(losowanie1==2) if( paulina_x >= 0 ) {paulina_x--;paulina=paulinal;}
                if(losowanie1==3) if( paulina_y <= 360 ) paulina_y++;
                if(losowanie1==4) if( paulina_y >= 0 )paulina_y--;
             }  */
       
       
       
        rest( 3 );
    } //pętla główna
   
    destroy_bitmap( milena );
    destroy_bitmap( paulina );
    destroy_bitmap( bufor );
    destroy_bitmap( tlo );
    allegro_exit();
    return 0;
}
END_OF_MAIN();

I nie wiem dalej jak zrobić, aby postać jak wejdzie w różowy kolor to nie byłoby kolizji. Z prostokątami działa jak się zderzą, chociaż czasem postać wejdzie jedna w drugą:)
P-39688
Dark
» 2011-08-22 18:51:05
P-39689
dominikowy
Temat założony przez niniejszego użytkownika
» 2011-08-22 18:53:29
Już znalazłem odpowiednia ramkę:D
P-39690
malan
» 2011-08-22 21:10:51
Doróbcie 2 postacie, tlo i jeden dzwiek
Co to znaczy "doróbcie"? Szukasz pomocy, prosisz o gotowca i jeszcze my mamy sami sobie szukać bitmap i dźwięków? Nie przesadzasz trochę?

I nie wiem dalej jak zrobić, aby postać jak wejdzie w różowy kolor to nie byłoby kolizji.
getpixel?
P-39701
« 1 »
  Strona 1 z 1