ehhh... wklej ten kod (u mnie wyswietla)
#include<iostream>
#include<allegro.h>
#include<math.h>
class gra
{ public:
gra()
{
allegro_init();
install_timer();
install_keyboard();
set_color_depth( 32 );
set_gfx_mode( GFX_AUTODETECT_WINDOWED, 800, 600, 0, 0 );
};
~gra()
{
allegro_exit();
}
};
class kolizje
{
public:
int prawo_x_ob;
int dol_y_ob;
int x;
int y;
BITMAP * mapa;
BITMAP * kula;
kolizje() { mapa = load_bmp( "mapa.bmp", default_palette );
kula = load_bmp( "kula.bmp", default_palette );
x = 100;
y = 100;
prawo_x_ob = kula->w + x;
dol_y_ob = kula->h + y; }
~kolizje() { destroy_bitmap( mapa );
destroy_bitmap( kula ); }
int spr_kolizji_gora();
int spr_kolizji_prawo();
int spr_kolizji_dol();
int spr_kolizji_lewo();
};
int kolizje::spr_kolizji_gora()
{
if( getpixel( mapa, prawo_x_ob, y ) != makecol( 255, 0, 255 ) ||
getpixel( mapa, x, y ) != makecol( 255, 0, 255 ) ||
getpixel( mapa,( x + prawo_x_ob ) / 2, y ) != makecol( 255, 0, 255 ) )
{ return( true ); }
else
{ return( false ); }
};
int kolizje::spr_kolizji_prawo()
{
if( getpixel( mapa, prawo_x_ob, y ) != makecol( 255, 0, 255 ) ||
getpixel( mapa, prawo_x_ob, dol_y_ob ) != makecol( 255, 0, 255 ) ||
getpixel( mapa, prawo_x_ob,( dol_y_ob + y ) / 2 ) != makecol( 255, 0, 255 ) )
{ return( true ); }
else
{ return( false ); }
};
int kolizje::spr_kolizji_dol()
{
if( getpixel( mapa, prawo_x_ob, dol_y_ob ) != makecol( 255, 0, 255 ) ||
getpixel( mapa, x, dol_y_ob ) != makecol( 255, 0, 255 ) ||
getpixel( mapa,( x + prawo_x_ob ) / 2, dol_y_ob ) != makecol( 255, 0, 255 ) )
{ return( true ); }
else
{ return( false ); }
};
int kolizje::spr_kolizji_lewo()
{
if( getpixel( mapa, x, dol_y_ob ) != makecol( 255, 0, 255 ) ||
getpixel( mapa, x, y ) != makecol( 255, 0, 255 ) ||
getpixel( mapa, x,( y + dol_y_ob ) / 2 ) != makecol( 255, 0, 255 ) )
{ return( true ); }
else
{ return( false ); }
}
class wyswietlanie
{
public:
kolizje * kol_wys;
BITMAP * kula;
BITMAP * bufor;
BITMAP * tlo;
BITMAP * ziemia;
BITMAP * trawa;
wyswietlanie()
{
kol_wys = new kolizje;
ziemia = load_bmp( "ziemia.bmp", default_palette );
trawa = load_bmp( "trawa.bmp", default_palette );
kula = load_bmp( "kula.bmp", default_palette );
tlo = load_bmp( "tlo.bmp", default_palette );
bufor = create_bitmap( 800, 600 );
}
~wyswietlanie() { destroy_bitmap( kula );
destroy_bitmap( bufor );
destroy_bitmap( tlo );
destroy_bitmap( ziemia );
destroy_bitmap( trawa );
delete kol_wys; }
void wyswietl();
};
void wyswietlanie::wyswietl() {
masked_blit( kula, bufor, 0, 0, kol_wys->x, kol_wys->y, kula->h, kula->w );
blit( tlo, bufor, 0, 0, 0, 0, tlo->h, tlo->w );
blit( ziemia, bufor, 0, 0, 600 -( ziemia->h ), 0, ziemia->h, ziemia->w );
blit( trawa, bufor, 0, 0, 600 -( ziemia->h + trawa->h ), 0, ziemia->h, trawa->w );
blit( bufor, screen, 0, 0, 0, 0, bufor->w, bufor->h );
};
class sterowanie
{
public:
kolizje * kol_ste;
bool lewo();
bool prawo();
bool skok();
sterowanie() { kol_ste = new kolizje; };
~sterowanie() { delete kol_ste; };
};
bool sterowanie::lewo()
{ if( key[ KEY_LEFT ] &&!kol_ste->spr_kolizji_lewo() )
{ kol_ste->x--; return( true ); }
else
{ return( false ); }
};
bool sterowanie::prawo()
{ if( key[ KEY_RIGHT ] &&!kol_ste->spr_kolizji_prawo() )
{ kol_ste->x++; return( true ); }
else
{ return( false ); }
};
bool sterowanie::skok()
{ if( key[ KEY_UP ] && kol_ste->spr_kolizji_dol() )
{ return true; }
else
{ return false; }
};
class grawitacja
{
private:
kolizje * wyk_kol;
sterowanie * ster;
float t0;
float t1;
float v1;
float v0;
float a;
float b;
float n;
public:
grawitacja() { wyk_kol = new kolizje;
ster = new sterowanie;
t0 = 0;
t1 = 0.1;
v1 = 40;
v0 = 0;
a = 10;
b = 0;
n = 0; }
~grawitacja() { delete ster;
delete wyk_kol; }
int graw();
};
int grawitacja::graw()
{
if( ster->skok() )
{ v0 = v1; }
else
{ v0 = 0; }
n =( v0 * t0 -( a *( t0 * t0 ) ) / 2 ) - b;
wyk_kol->y = wyk_kol->y +( static_cast < int >( round( n ) ) );
b = v0 * t0 -( a *( t0 * t0 ) ) / 2;
t0 = t0 + t1;
if( wyk_kol->spr_kolizji_dol() && n < 0 )
{
while( n < 0 )
{
n++; wyk_kol->y--;
if( !wyk_kol->spr_kolizji_dol() )
{
wyk_kol->y++; n = 0;
}
}
}
};
volatile long pre = 0;
void inc_pre()
{
pre++;
}
END_OF_FUNCTION( inc_pre );
LOCK_VARIABLE( pre );
LOCK_FUNCTION( inc_pre );
int main()
{
gra game;
grawitacja ruch;
kolizje mapa1;
sterowanie klawisze;
wyswietlanie obraz;
int t2 = 10;
install_int_ex( inc_pre, BPS_TO_TIMER( 100 ) );
while( !key[ KEY_A ] )
{
obraz.wyswietl();
mapa1.spr_kolizji_dol();
mapa1.spr_kolizji_gora();
mapa1.spr_kolizji_lewo();
mapa1.spr_kolizji_prawo();
klawisze.lewo();
klawisze.prawo();
klawisze.skok();
if( pre % t2 < 6 )
{ ruch.graw(); }
}
ruch.~grawitacja();
mapa1.~kolizje();
klawisze.~sterowanie();
obraz.~wyswietlanie();
game.~gra();
remove_int( inc_pre );
exit( 0 );
}
END_OF_MAIN()