Witam. Napisałem coś takiego "ptymitywnego ;P" tak aby poćwiczyć zwykły ludzik który lata za pomocą strzałek po ekranie i po naciśnięciu spacji wypuszcza pocisk a on potem wybucha. Tylko jest jeden szczegół, jak jestem ludzikiem na dole ekranu to po naciśnięciu spacji pocisk leci a ja nic nie mogę się ludzikiem ruszać. A chciałbym aby można było jeszcze się ruszać i jeden za drugim wystrzeliwać.
oto kod:
#include<allegro.h>
int main()
{
allegro_init();
install_keyboard();
BITMAP* ceo=NULL;
BITMAP* bufor=NULL;
BITMAP* pocisk=NULL;
BITMAP* ch=NULL;
int px,py;
set_color_depth(32);
set_gfx_mode(GFX_AUTODETECT_WINDOWED,600,400,0,0);
clear_to_color(screen,makecol(123,12,2));
ch=load_bitmap("chmura.bmp",default_palette);
if(!ch)
{
set_gfx_mode(GFX_TEXT,0,0,0,0);
allegro_message("zle");
allegro_exit;
return 0;
}
pocisk=load_bitmap("st.bmp",default_palette);
if(!pocisk)
{
set_gfx_mode(GFX_TEXT,0,0,0,0);
allegro_message("zle");
allegro_exit();
return 0;
}
ceo=load_bmp("lo.bmp",default_palette);
if(!ceo)
{
set_gfx_mode(GFX_TEXT,0,0,0,0);
allegro_message("zle");
allegro_exit();
return 0;
}
bufor=create_bitmap(600,400);
if(!bufor)
{
set_gfx_mode(GFX_TEXT,0,0,0,0);
allegro_message("zle");
allegro_exit();
return 0;
}
int lx=1;
int ly=1;
while(!key[KEY_ESC])
{
px=lx+20;
py=ly;
if(key[KEY_LEFT])
{
if(lx>0) lx--;
}
if(key[KEY_RIGHT])
{
if(lx<500) lx++;
}
if(key[KEY_UP])
{
if(ly>0) ly--;
}
if(key[KEY_DOWN])
{
if(ly<350) ly++;
}
if(key[KEY_SPACE])
{ if(py>20)
{
while(py!=0)
{
py--;
clear_to_color(bufor,makecol(123,12,2));
masked_blit(ceo,bufor,0,0,lx,ly,ceo->w,ceo->h);
masked_blit(pocisk,bufor,0,0,px+60,py,pocisk->w,pocisk->h);
blit(bufor,screen,0,0,0,0,bufor->w,bufor->h);
rest(2);}
clear_to_color(bufor,makecol(123,12,2));
masked_blit(ch,bufor,0,0,px,py,ch->w,ch->h);
masked_blit(ceo,bufor,0,0,lx,ly,ceo->w,ceo->h);
blit(bufor,screen,0,0,0,0,bufor->w,bufor->h);
rest(200);
}
}
rest(2);
clear_to_color(bufor,makecol(123,12,2));
masked_blit(ceo,bufor,0,0,lx,ly,ceo->w,ceo->h);
//masked_blit(pocisk,bufor,0,0,px+60,py,pocisk->w,pocisk->h);
blit(bufor,screen,0,0,0,0,bufor->w,bufor->h);
}
allegro_exit();
}
END_OF_MAIN();
z góry dziękuję i jeszcze może macie jakieś uwagi co do tego programu ale dopiero zaczynam z allegro. :P.
p.s chciałem zrobić w drugiej pętli "while" wstawić obsługę strzałek tak jak w pierwszej pętli ale to będzie za długi kod. Trzeba inne rozwiązanie zrobić :/ POzdrawiam