Napisałęm taki oto kodzik
#include <allegro.h>
#include <cstring>
#pragma comment(lib,"alleg.lib")
#include <string>
#include <vector>
#include <math.h>
using namespace std;
///
/////deklaracje
BITMAP * bufor = NULL;
BITMAP * block1 = NULL; /* postac */
BITMAP * block2 = NULL; /* postac */
BITMAP * block3 = NULL; /* postac */
BITMAP * block4 = NULL; /* postac */
BITMAP * block5 = NULL; /* postac */
BITMAP * block6 = NULL; /* postac */
SAMPLE * dzwiek = NULL;
BITMAP * a1 = NULL; /* podloze */
BITMAP * b1 = NULL; /* przeszkoda */
/////deklaracje
int x;
int a1_x = 0;
int i = 0;
short int MAP[20] = {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
volatile long speed = 0;
void increment_speed()
{
speed++;
}
END_OF_FUNCTION( increment_speed );
LOCK_VARIABLE( speed );
LOCK_FUNCTION( increment_speed );
////
///
int main()
{
allegro_init();
set_window_title("Block");
install_keyboard();
install_mouse();
set_color_depth( 32 );
set_gfx_mode( GFX_AUTODETECT, 800, 600, 0, 0 );
////////instalacje
install_timer();
install_int_ex( increment_speed, BPS_TO_TIMER( 120 ) );
install_sound( DIGI_AUTODETECT, MIDI_AUTODETECT, "" );
set_volume( 255, 255 );
///////////instalacje
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;
}
////////////ładowanei plików
dzwiek = load_sample( "1.wav" );
block1 = load_bmp( "block1.bmp", default_palette );
block2 = load_bmp( "block2.bmp", default_palette );
block3 = load_bmp( "block3.bmp", default_palette );
block4 = load_bmp( "block4.bmp", default_palette );
block5 = load_bmp( "block5.bmp", default_palette );
block6 = load_bmp( "block6.bmp", default_palette );
a1 = load_bmp( "a1.bmp", default_palette );
b1 = load_bmp( "b1.bmp", default_palette );
/////////////ładowanei plików
/////pozycja plików
int block1_x = 50, block1_y = 400;
/////pozycja plików
////////ładowanei i start dźwięku
dzwiek = load_sample( "1.wav" );
if( !dzwiek )
{
set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
allegro_message( "nie mogę załadować dzwieku !" );
allegro_exit();
return 0;
}
play_sample( dzwiek, 255, 127, 1000, 1 );
////////ładowanei i start dźwięku
////sterowanie
int frame1 = 0;
int frame2 = 0;
while( !key[ KEY_ESC ] )
{
while( speed > 0)
{
if( key[ KEY_A ] ) block1_x--, frame1++, a1_x < 10, a1_x = a1_x + 1;
if( key[ KEY_D ] ) block1_x++, frame1++ ,a1_x > 0, a1_x = a1_x - 1;
for(i = 0; i < 20; i++)
{
blit(a1,bufor,(MAP[i+a1_x]%4)*40,(MAP[i+a1_x]/4)*40,i*40,550,50,50);
}
blit(bufor,screen,0,0,0,0,800,600);
clear_to_color(bufor,makecol(255,255,255));
speed--;
//////starowanei
/////animacja
if( frame1 > 100 ) frame1 = 0;
}
clear_to_color( bufor, makecol( 255, 255, 255 ) );
if( frame1 < 20 ) { draw_sprite( bufor, block1, block1_x, block1_y ); }
else if( frame1 >= 20 && frame1 < 40 ) { draw_sprite( bufor, block2, block1_x, block1_y ); }
else if( frame1 >= 40 && frame1 < 60 ) { draw_sprite( bufor, block3, block1_x, block1_y ); }
else if( frame1 >= 60 && frame1 < 80 ) { draw_sprite( bufor, block4, block1_x, block1_y ); }
else if( frame1 >= 80 && frame1 < 100 ) { draw_sprite( bufor, block5, block1_x, block1_y ); }
else if( frame1 >= 100 && frame1 < 120 ) { draw_sprite( bufor, block6, block1_x, block1_y ); }
blit( bufor, screen, 0, 0, 0, 0, 800, 600 );
}
////animacja
/////zamykanie akcji
remove_int( increment_speed );
destroy_bitmap( block1 );
destroy_bitmap( block2 );
destroy_bitmap( block3 );
destroy_bitmap( block4 );
destroy_bitmap( block5 );
destroy_bitmap( block6 );
destroy_bitmap( a1 );
destroy_bitmap( b1 );
stop_sample( dzwiek );
destroy_bitmap( bufor );
destroy_sample( dzwiek );
/////zamykanie akcji
allegro_exit();
return 0;
}
END_OF_MAIN();
Chcę aby "podłoga" nie migała, postać po dojściu do środka ekranu przesówała sie równo z podłogą , aby znalazło się tu jakieś tło oraz obiekty kolizji i menu. Czy ktos może mi z tym pomóc?