dzieki, to jest dobre ;) ale jak skompiluje i uruchomie to pojawi sie na chwile i zamyka odrazu :|
#include <allegro.h>
volatile long speed = 0;
void increment_speed()
{
speed++;
}
END_OF_FUNCTION( increment_speed );
LOCK_VARIABLE( speed );
LOCK_FUNCTION( increment_speed );
int mapa_x = 0, mapa_y = 0;
BITMAP * teren = NULL;
BITMAP * bufor = NULL;
BITMAP * kursor;
BITMAP * ludekb = NULL;
int mx = 0, my = 0, mb = 0;
void myszka()
{
if( mx != mouse_x || my != mouse_y || mb != mouse_b )
{
mx = mouse_x;
my = mouse_y;
mb = mouse_b;
}
};
void laduj_kursor()
{
kursor = load_bitmap( "kursor.bmp", NULL );
textprintf_ex( bufor, font, 20, 20, makecol( 200, 200, 200 ), - 1, "Myszka x = %d, y = %d, klawisz = %d !", mx, my, mb );
blit( bufor, screen, 0, 0, 0, 0, 800, 600 );
clear_keybuf();
if( !kursor )
{
set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
allegro_message( "Nie moge zaladowac grafiki ( kursor )" );
allegro_exit();
}
};
class Cpostac
{
public:
int x, y;
short int kierunek, klatka;
};
Cpostac ludek;
short int map[ 15 ][ 20 ] =
{
15, 15, 15, 15, 15, 7, 10, 10, 10, 10, 10, 10, 6, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 4, 9, 10, 10, 10, 8, 3, 5, 15, 0, 2, 2, 2, 1, 15,
2, 1, 15, 15, 15, 15, 7, 10, 10, 10, 6, 15, 15, 15, 7, 10, 10, 10, 6, 15,
10, 6, 15, 15, 15, 15, 4, 9, 10, 10, 6, 15, 15, 15, 4, 3, 3, 3, 5, 15,
10, 12, 2, 1, 15, 15, 15, 7, 10, 8, 5, 15, 15, 15, 15, 15, 15, 15, 15, 15,
10, 10, 10, 6, 15, 15, 15, 4, 3, 5, 15, 15, 15, 15, 15, 15, 15, 0, 2, 2,
10, 10, 10, 6, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 2, 2, 13, 10, 10,
3, 3, 3, 5, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 7, 10, 10, 10, 8, 3,
15, 15, 15, 15, 15, 0, 1, 15, 15, 15, 15, 15, 0, 2, 13, 10, 10, 10, 6, 15,
15, 15, 15, 15, 15, 4, 5, 15, 15, 15, 15, 15, 7, 10, 10, 10, 10, 10, 6, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 7, 10, 10, 10, 10, 10, 6, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 7, 10, 10, 10, 10, 10, 6, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 7, 10, 10, 10, 10, 10, 6, 15
};
void wys_mape()
{
int licznik_x, licznik_y;
for( licznik_x = 0; licznik_x < 18; licznik_x++ )
{
for( licznik_y = 0; licznik_y < 12; licznik_y++ )
{
blit( teren, bufor,
( map[ licznik_y + mapa_y ][ licznik_x + mapa_x ] % 4 ) * 40,
( map[ licznik_y + mapa_y ][ licznik_x + mapa_x ] / 4 ) * 40,
licznik_x * 40, licznik_y * 40, 40, 40 );
}
}
};
int main()
{
allegro_init();
install_keyboard();
set_color_depth( 16 );
set_gfx_mode( GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0 );
install_timer();
install_int_ex( increment_speed, BPS_TO_TIMER( 40 ) );
install_mouse();
show_mouse( screen );
set_mouse_sprite( kursor );
unscare_mouse();
BITMAP * ludekb = NULL;
bufor = create_bitmap( 640, 480 );
if( !bufor )
{
set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
allegro_message( "Nie mogę utworzyć bufora !" );
allegro_exit();
return 0;
}
teren = load_bmp( "teren.bmp", default_palette );
while( !key[ KEY_ESC ] )
{
while( speed > 0 )
{
if(( key[ KEY_RIGHT ] ) &&( mapa_x < 10 ) ) { mapa_x = mapa_x + 1; } else
if(( key[ KEY_LEFT ] ) &&( mapa_x > 0 ) ) { mapa_x = mapa_x - 1; } else
if(( key[ KEY_DOWN ] ) &&( mapa_y < 5 ) ) { mapa_y = mapa_y + 1; } else
if(( key[ KEY_UP ] ) &&( mapa_y > 0 ) ) { mapa_y = mapa_y - 1; }
if( key[ KEY_S ] ) { load_bmp( "teren2.bmp", default_palette ); }
speed--;
}
clear_to_color( bufor, makecol( 150, 150, 150 ) );
wys_mape();
blit( bufor, screen, 0, 0, 0, 0, 640, 480 );
}
ludekb = load_bmp( "postac.bmp", default_palette );
int frame = 0;
ludek.y = 100;
ludek.klatka = 0;
ludek.kierunek = 0;
while( !key[ KEY_ESC ] )
{
while( speed > 0 )
{
ludek.kierunek = 0;
if( key[ KEY_LEFT ] ) { ludek.kierunek = 4; ludek.x -= 2; }
if( key[ KEY_RIGHT ] ) { ludek.kierunek = 2; ludek.x += 2; }
if( key[ KEY_UP ] ) { ludek.kierunek = 1; ludek.y -= 2; }
if( key[ KEY_DOWN ] ) { ludek.kierunek = 3; ludek.y += 2; }
}
remove_int( increment_speed );
destroy_bitmap( ludekb );
destroy_bitmap( teren );
destroy_bitmap( bufor );
allegro_exit();
return 0;
}
END_OF_MAIN();