#include <allegro.h>
#include <cmath>
#include <conio.h>
void init();
void deinit();
void increment_speed();
int menu();
int poziom1();
int test = 0;
int pkt = 1;
int frame = 0;
volatile long speed = 0;
LOCK_VARIABLE( speed );
LOCK_FUNCTION( increment_speed );
int main() {
init();
menu();
poziom1();
deinit();
return 0;
}
END_OF_MAIN()
void init() {
int depth, res;
allegro_init();
depth = desktop_color_depth();
if( depth == 0 ) depth = 32;
set_color_depth( depth );
res = set_gfx_mode( GFX_AUTODETECT_WINDOWED, 400, 400, 0, 0 );
if( res != 0 ) {
allegro_message( allegro_error );
exit( - 1 );
}
clear_to_color( screen, makecol( 128, 128, 128 ) );
install_timer();
install_keyboard();
install_mouse();
install_timer();
install_int_ex( increment_speed, BPS_TO_TIMER( 60 ) );
install_sound( DIGI_AUTODETECT, MIDI_AUTODETECT, "" );
set_volume( 255, 255 );
}
void deinit() {
clear_keybuf();
}
void increment_speed()
{
speed++;
}
int menu()
{
BITMAP * bufor = NULL;
bufor = create_bitmap( 400, 400 );
if( !bufor )
{
set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
allegro_message( "Nie moge utworzyc bufora !" );
allegro_exit();
return 0;
}
BITMAP * tlomenu = NULL;
tlomenu = load_bmp( "podklad.bmp", default_palette );
if( !tlomenu )
{
set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
( "nie moge zaladowac obrazka podklad !" );
allegro_exit();
return 0;
}
BITMAP * logo = NULL;
logo = load_bmp( "logo.bmp", default_palette );
if( !logo )
{
set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
allegro_message( "nie moge zaladowac obrazka logo !" );
allegro_exit();
return 0;
}
while( !key[ KEY_ENTER ] ) {
clear_to_color( bufor, makecol( 150, 150, 150 ) );
blit( tlomenu, bufor, 0, 0, 0, 0, 400, 400 );
masked_blit( logo, bufor, 0, 0, 100, 10, logo->w, logo->h );
textprintf( bufor, font, 120, 200, makecol( 255, 255, 128 ), "PRESS ENTER TO START" );
blit( bufor, screen, 0, 0, 0, 0, 400, 400 );
}
destroy_bitmap( tlomenu );
destroy_bitmap( logo );
destroy_bitmap( bufor );
return 0;
}
int poziom1()
{
while( !key[ KEY_ESC ] ) {
BITMAP * bufor = NULL;
bufor = create_bitmap( 400, 400 );
if( !bufor )
{
set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
allegro_message( "Nie moge utworzyc bufora !" );
allegro_exit();
return 0;
}
BITMAP * ludek = NULL;
ludek = load_bmp( "kwadrat.bmp", default_palette );
if( !ludek )
{
set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
allegro_message( "nie moge zaladowac obrazka Ludek !" );
allegro_exit();
return 0;
}
BITMAP * kropek = NULL;
kropek = load_bmp( "kropek.bmp", default_palette );
if( !kropek )
{
set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
allegro_message( "nie moge zaladowac obrazka Kropek !" );
allegro_exit();
return 0;
}
BITMAP * kropek1 = NULL;
kropek1 = load_bmp( "kropek.bmp", default_palette );
if( !kropek1 )
{
set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
allegro_message( "nie moge zaladowac obrazka Kropek1 !" );
allegro_exit();
return 0;
}
BITMAP * kropek2 = NULL;
kropek2 = load_bmp( "kropek.bmp", default_palette );
if( !kropek2 )
{
set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
allegro_message( "nie moge zaladowac obrazka Kropek2 !" );
allegro_exit();
return 0;
}
BITMAP * kropek3 = NULL;
kropek3 = load_bmp( "kropek.bmp", default_palette );
if( !kropek3 )
{
set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
allegro_message( "nie moge zaladowac obrazka Kropek3 !" );
allegro_exit();
return 0;
}
BITMAP * tlo1 = NULL;
tlo1 = load_bmp( "tlo1.bmp", default_palette );
if( !tlo1 )
{
set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
allegro_message( "nie moge zaladowac obrazka tlo1 !" );
allegro_exit();
return 0;
}
BITMAP * tlo2 = NULL;
tlo2 = load_bmp( "tlo2.bmp", default_palette );
if( !tlo2 )
{
set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
allegro_message( "nie moge zaladowac obrazka tlo2 !" );
allegro_exit();
return 0;
}
MIDI * dzwiek = NULL;
dzwiek = load_midi( "kropki.mid" );
if( !dzwiek )
{
set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
allegro_message( "nie moge zaladowac dzwieku !" );
allegro_exit();
return 0;
}
SAMPLE * dzwiek1 = NULL;
dzwiek1 = load_sample( "omom.wav" );
if( !dzwiek1 )
{
set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
allegro_message( "nie moge zaladowac dzwieku1 !" );
allegro_exit();
return 0;
}
int kropek_x = 0, kropek_y = 0;
int kropek1_x = 350, kropek1_y = 350;
int kropek2_x = 0, kropek2_y = 350;
int kropek3_x = 350, kropek3_y = 0;
int ludek_x = 200, ludek_y = 200;
play_midi( dzwiek, 1 );
play_sample( dzwiek1, 255, 127, 800, 1 );
while( !key[ KEY_ESC ] )
{
while( speed > 0 )
{
if( key[ KEY_LEFT ] ) ludek_x = ludek_x - 2;
if( key[ KEY_LEFT ] && ludek_x < 0 ) ludek_x = ludek_x + 2;
if( key[ KEY_RIGHT ] ) ludek_x = ludek_x + 2;
if( key[ KEY_RIGHT ] && ludek_x > 350 ) ludek_x = ludek_x - 2;
if( key[ KEY_UP ] ) ludek_y = ludek_y - 2;
if( key[ KEY_UP ] && ludek_y < 0 ) ludek_y = ludek_y + 2;
if( key[ KEY_DOWN ] ) ludek_y = ludek_y + 2;
if( key[ KEY_DOWN ] && ludek_y > 350 ) ludek_y = ludek_y - 2;
if( ludek_x - kropek_x < 0 ) kropek_x = kropek_x - 1;
if( ludek_x - kropek_x > 0 ) kropek_x = kropek_x + 1;
if( ludek_y - kropek_y < 0 ) kropek_y = kropek_y - 1;
if( ludek_y - kropek_y > 0 ) kropek_y = kropek_y + 1;
frame++;
if( frame > 60 ) frame = 0;
if( pkt > 100 )
{
if( pkt == 101 ) play_sample( dzwiek1, 255, 150, 900, 1 );
if( ludek_x - kropek1_x < 0 ) kropek1_x = kropek1_x - 1;
if( ludek_x - kropek1_x > 0 ) kropek1_x = kropek1_x + 1;
if( ludek_y - kropek1_y < 0 ) kropek1_y = kropek1_y - 1;
if( ludek_y - kropek1_y > 0 ) kropek1_y = kropek1_y + 1;
if( abs( ludek_x - kropek1_x ) < 30 && abs( ludek_y - kropek1_y ) < 30 )
{
destroy_bitmap( kropek );
destroy_bitmap( kropek1 );
destroy_bitmap( kropek2 );
destroy_bitmap( kropek3 );
destroy_sample( dzwiek1 );
destroy_midi( dzwiek );
destroy_bitmap( ludek );
destroy_bitmap( bufor );
set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
allegro_message( "GAME OVER" );
allegro_exit();
return 0;
}
}
if( pkt > 200 )
{
if( pkt == 201 ) play_sample( dzwiek1, 255, 127, 700, 1 );
if( ludek_x - kropek2_x < 0 ) kropek2_x = kropek2_x - 1;
if( ludek_x - kropek2_x > 0 ) kropek2_x = kropek2_x + 1;
if( ludek_y - kropek2_y < 0 ) kropek2_y = kropek2_y - 1;
if( ludek_y - kropek2_y > 0 ) kropek2_y = kropek2_y + 1;
if( abs( ludek_x - kropek2_x ) < 30 && abs( ludek_y - kropek2_y ) < 30 )
{
destroy_bitmap( kropek );
destroy_bitmap( kropek1 );
destroy_bitmap( kropek2 );
destroy_bitmap( kropek3 );
destroy_sample( dzwiek1 );
destroy_midi( dzwiek );
destroy_bitmap( ludek );
destroy_bitmap( bufor );
set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
allegro_message( "GAME OVER" );
allegro_exit();
return 0;
}
}
if( pkt > 300 )
{
if( pkt == 301 ) play_sample( dzwiek1, 255, 127, 600, 1 );
if( ludek_x - kropek3_x < 0 ) kropek3_x = kropek3_x - 1;
if( ludek_x - kropek3_x > 0 ) kropek3_x = kropek3_x + 1;
if( ludek_y - kropek3_y < 0 ) kropek3_y = kropek3_y - 1;
if( ludek_y - kropek3_y > 0 ) kropek3_y = kropek3_y + 1;
if( abs( ludek_x - kropek3_x ) < 30 && abs( ludek_y - kropek3_y ) < 30 )
{
destroy_bitmap( kropek );
destroy_bitmap( kropek1 );
destroy_bitmap( kropek2 );
destroy_bitmap( kropek3 );
destroy_midi( dzwiek );
destroy_sample( dzwiek1 );
destroy_bitmap( ludek );
destroy_bitmap( bufor );
set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
allegro_message( "GAME OVER" );
allegro_exit();
return 0;
}
}
speed--;
pkt++;
if( abs( ludek_x - kropek_x ) < 30 && abs( ludek_y - kropek_y ) < 30 )
{
destroy_bitmap( kropek );
destroy_bitmap( kropek1 );
destroy_bitmap( kropek2 );
destroy_bitmap( kropek3 );
destroy_sample( dzwiek1 );
destroy_midi( dzwiek );
destroy_bitmap( ludek );
destroy_bitmap( bufor );
set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
allegro_message( "GEJM OWER" );
allegro_exit();
return 0;
}
}
clear_to_color( bufor, makecol( 150, 150, 150 ) );
if( frame > 30 ) blit( tlo1, bufor, 0, 0, 0, 0, 400, 400 );
if( frame <= 30 ) blit( tlo2, bufor, 0, 0, 0, 0, 400, 400 );
textprintf( bufor, font, 20, 20, makecol( 255, 255, 128 ), "PKT : %d", pkt );
masked_blit( ludek, bufor, 0, 0, ludek_x, ludek_y, ludek->w, ludek->h );
masked_blit( kropek, bufor, 0, 0, kropek_x, kropek_y, kropek->w, kropek->h );
if( pkt > 100 ) masked_blit( kropek1, bufor, 0, 0, kropek1_x, kropek1_y, kropek1->w, kropek1->h );
if( pkt > 200 ) masked_blit( kropek2, bufor, 0, 0, kropek2_x, kropek2_y, kropek2->w, kropek2->h );
if( pkt > 300 ) masked_blit( kropek3, bufor, 0, 0, kropek3_x, kropek3_y, kropek3->w, kropek3->h );
blit( bufor, screen, 0, 0, 0, 0, 400, 400 );
}
destroy_bitmap( kropek );
destroy_bitmap( kropek1 );
destroy_bitmap( kropek2 );
destroy_bitmap( kropek3 );
destroy_midi( dzwiek );
destroy_sample( dzwiek1 );
destroy_bitmap( ludek );
destroy_bitmap( bufor );
return 0;
}
}