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

[Allegro 4.x] Problem z dodaniem timera.

Ostatnio zmodyfikowano 2013-09-21 14:34
Autor Wiadomość
hit
Temat założony przez niniejszego użytkownika
[Allegro 4.x] Problem z dodaniem timera.
» 2013-09-21 14:03:24
Witam,

zgodnie z kursem allegro dostępnym w serwisie próbuję do swojego programu dodać timer.
Mam dodany cały kod tak jak jest tam przedstawione, oraz stworzoną pętlę while(speed > 0 ) {}.
Problem polega na tym, że program się uruchamia ale poruszanie postacią w ogóle nie działa, stoi w miejscu ( bez timera działa poprawnie ). Co może być przyczyną?
P-92415
pekfos
» 2013-09-21 14:06:00
Podaj kod.
P-92416
hit
Temat założony przez niniejszego użytkownika
» 2013-09-21 14:14:38
C/C++
#define USE_CONSOLE
#include <allegro.h>


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( 16 );
    install_timer();
    install_int_ex( increment_speed, BPS_TO_TIMER( 100 ) );
   
   
    set_gfx_mode( GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0 );
    clear_to_color( screen, makecol( 128, 128, 128 ) );
   
   
    //=========DŹWIĘK========================================
    install_sound( DIGI_AUTODETECT, MIDI_AUTODETECT, "" );
    set_volume( 0, 0 ); // 255,255 
    SAMPLE * muzyka = load_sample( "muzyka.wav" );
    play_sample( muzyka, 255, 127, 1000, 1 );
    //========================================================
    BITMAP * bomber = load_bmp( "B1.bmp", default_palette );
    BITMAP * bufor = create_bitmap( 640, 480 );
   
   
    blit( bomber, screen, 0, 0, 100, 100, bomber->w, bomber->h );
    int bomber_x = 100, bomber_y = 100;
   
   
    while( !key[ KEY_ESC ] )
    {
        while( speed > 0 )
        {
            /* if(bomber_y <-40) bomber_y=479;
            if(bomber_y >480) bomber_y=-39;
            if(bomber_x <-30) bomber_x=631;
            if(bomber_x >632) bomber_x=-29;*/
           
            if( key[ KEY_LEFT ] ) bomber_x--;
           
            if( key[ KEY_RIGHT ] ) bomber_x++;
           
            if( key[ KEY_UP ] ) bomber_y--;
           
            if( key[ KEY_DOWN ] ) bomber_y++;
           
            if( key[ KEY_SPACE ] ) bomber_x = 320, bomber_y = 240;
           
            speed--;
        }
       
        clear_to_color( bufor, makecol( 150, 150, 150 ) );
        textprintf_ex( bufor, font, 10, 10, makecol( 99, 0, 33 ), - 1, "Testujemy: x = %d, y = %d", bomber_x, bomber_y );
        masked_blit( bomber, bufor, 0, 0, bomber_x, bomber_y, bomber->w, bomber->h );
        blit( bufor, screen, 0, 0, 0, 0, 640, 480 );
       
        speed--;
    }
   
    //=====ZWALNIANIE PAMIĘCI============
    remove_int( increment_speed );
    stop_sample( muzyka );
    destroy_sample( muzyka );
   
    destroy_bitmap( bufor );
    destroy_bitmap( bomber );
    readkey();
   
    return 0;
}

END_OF_MAIN();
P-92417
pekfos
» 2013-09-21 14:29:17
Masz 2 razy speed--.
P-92418
hit
Temat założony przez niniejszego użytkownika
» 2013-09-21 14:34:08
Faktycznie, bo na początku zamieniłem całą główną pętlę na tą, która powinna być w środku i widocznie nie usunąłem wszystkiego. Przepraszam za zawracanie głowy i dziękuję za pomoc :)
P-92419
« 1 »
  Strona 1 z 1