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

Problem z timerem

Ostatnio zmodyfikowano 2013-03-22 19:47
Autor Wiadomość
fers334
Temat założony przez niniejszego użytkownika
Problem z timerem
» 2013-03-22 18:29:07
Siemka mam problem mianowicie przy obiegu pętli nie wykrywa mi wciśnięcia ESC z niewiadomych mi przyczyn jak usunę timer wszystko jest git . Proszę o pomoc.

Kod:

C/C++
// MAIN CPP //

#include <allegro.h>
#include "mapa.h"

volatile long speed_fps = 0;
void incremented_speed()
{
    speed_fps++;
}

LOCK_VARIABLE( speed_fps );
LOCK_FUNCTION( incremented_speed );

int main()
{
    allegro_init();
   
    install_keyboard();
    install_mouse();
    install_timer();
    install_int_ex( incremented_speed, BPS_TO_TIMER( 100 ) );
   
    set_color_depth( 16 );
    set_gfx_mode( GFX_AUTODETECT_WINDOWED, 800, 600, 0, 0 );
    clear_to_color( screen, makecol( 255, 255, 255 ) );
   
    BITMAP * bufor = 0;
    bufor = create_bitmap( 800, 600 );
   
    mapa mapa_gry;
   
    while( !key[ KEY_ESC ] )
    {
        while( speed_fps > 0 )
        {
            mapa_gry.rysuj_mape( bufor );
            mapa_gry.poruszanie_mapa();
            blit( bufor, screen, 0, 0, 0, 0, 800, 600 );
            clear_to_color( bufor, makecol( 255, 255, 255 ) );
           
            speed_fps--;
        }
    }
   
    allegro_exit();
    return 1;
}
END_OF_MAIN();


// MAPA.h //

#include <allegro.h>

class mapa
{
private:
    short int map[ 100 ][ 100 ];
    BITMAP * kafelki;
   
    int map_x;
    int map_y;
   
public:
    mapa()
        : map_x( 0 )
        , map_y( 0 )
    {
        for( int x = 0; x < 100; x++ )
        {
            for( int y = 0; y < 100; y++ )
            {
                map[ x ][ y ] = 0;
            }
        }
        kafelki = load_bitmap( "kolcki.bmp", default_palette );
    }
   
   
    void rysuj_mape( BITMAP * bufor );
    void poruszanie_mapa();
};
void mapa::rysuj_mape( BITMAP * bufor )
{
    for( int x = 0; x < 20; x++ )
    {
        for( int y = 0; y < 20; y++ )
        {
            masked_blit( kafelki, bufor,
            ( map[ y + map_y ][ x + map_x ] % 3 ) * 50,
            ( map[ y + map_y ][ x + map_x ] / 3 ) * 50,
            x * 50, y * 50, 50, 50 );
            textprintf( bufor, font, 20, 20, - 1, "MAPA : map_x = %d , map_y = %d ", map_x, map_y );
        }
    }
}
void mapa::poruszanie_mapa()
{
    if( key[ KEY_RIGHT ] && map_x < 21 )
    {
        map_x++;
    }
    else if( key[ KEY_LEFT ] && map_x > 0 )
    {
        map_x--;
    }
    else if( key[ KEY_UP ] && map_y > 0 )
    {
        map_y--;
    }
    else if( key[ KEY_DOWN ] && map_y < 21 )
    {
        map_y++;
    }
}
P-79138
fers334
Temat założony przez niniejszego użytkownika
» 2013-03-22 19:47:44
Okey już rozwiązałem ten problem winne było wywołanie funkcji :

textprintf( bufor, font, 20, 20, - 1, "MAPA : map_x = %d , map_y = %d ", map_x, map_y );

wewnątrz pętli .
P-79144
« 1 »
  Strona 1 z 1