18-08-2012, 10:21 AM
(Questo messaggio è stato modificato l'ultima volta il: 18-08-2012, 10:39 AM da ferrass.)
Allora il problema risiede nel fatto che se premo space lo sprite salta per se tengo premuto space il salto è infinito ovvero lo sprite vola
Non so se questa è la sezione giusta ... Comunque ecco il codice
Non so se questa è la sezione giusta ... Comunque ecco il codice
Codice:
#include <allegro.h>
#define true 1
#define false 0
// massimo y 140 in basso //massimo x 300 a destra //massimo y alto =0
BITMAP*buf,*mario_right,*sfondo,*scorrimento,*cattivo1,*mattone,*mario_left,*mario_down,*mario_space,*mario_run_1,*mario_run_2; //variabili
PALETTE colori;
int x,y,xscorrimento,moltiplica,xcattivo1,ycattivo1,vx,vy,g,salto,change,tempo,contsalto;
void doppiobuffering() {
vsync();
blit(buf,screen,0,0,0,0,320,300) ;
clear(buf);
}
void player() {
draw_sprite(buf,mario_right,x,y) ;
}
void movimento() {
if(key[KEY_RIGHT]) x=x+1 ,vx=20 ;if(x>=300) x=300;vx=0;
if(key[KEY_LEFT]) x=x-1,vx--,clear (buf), blit(scorrimento, buf, xscorrimento, 0, 0, 0, 320, 200),draw_sprite(buf,mario_left,x,y); if ( x<=10) x=10;vx=0;
if(key[KEY_DOWN])clear(buf) , blit(scorrimento, buf, xscorrimento, 0, 0, 0, 320, 200),draw_sprite(buf,mario_down,x,y);
if (key[KEY_SPACE] )
salto=true;
if(y>=100 && salto==true )
{
blit(scorrimento, buf, xscorrimento, 0, 0, 0, 320, 200);
draw_sprite(buf,mario_space,x,y);
vy=1.8;
x +=vx;
y -= vy;
vy += g;
}
else {
salto=false;
if(y<=140) {
x +=vx;
y +=vy;
vy +=g;
}
}
}
void paesaggio() {
if(x==300) {
xscorrimento++;
}
blit(scorrimento, buf, xscorrimento, 0, 0, 0, 320, 200);
if(xscorrimento>319){
xscorrimento=0;
}
}
void cattivonumero1() {
draw_sprite(buf,cattivo1,xcattivo1,ycattivo1);
}
int main() {
allegro_init();
install_keyboard();
set_color_depth(32);
set_palette(colori);
set_gfx_mode(GFX_AUTODETECT, 320, 200, 0, 0);
buf = create_bitmap(320, 200);
clear(buf);
mario_right=load_bmp("mario_right.bmp",colori);
sfondo=load_bmp("paesaggio.bmp",colori);
cattivo1=load_bmp("cattivo1.bmp",colori);
mario_left=load_bmp("mario_left.bmp",colori);
mario_down=load_bmp("mario_down.bmp",colori);
mario_space=load_bmp("mario_space.bmp",colori);
mario_run_2=load_bmp("frame2.bmp",colori);
mario_run_1=load_bmp("frame1.bmp",colori);
scorrimento = create_bitmap(640, 200);
clear(scorrimento);
for (moltiplica=0;moltiplica<=640;moltiplica=moltiplica+320) {
blit(sfondo, scorrimento, 0, 0, moltiplica, 0, 320, 200);
}
x=40;y=140;
xcattivo1=250 ; ycattivo1=149;
vy=0;g=0.5;
contsalto=0;
tempo=0;
while(!key[KEY_ESC]) {
doppiobuffering();
paesaggio();
player();
movimento();
cattivonumero1();
}
destroy_bitmap(buf);
destroy_bitmap(mario_right);
destroy_bitmap(sfondo);
destroy_bitmap(scorrimento);
destroy_bitmap(cattivo1);
destroy_bitmap(mattone);
destroy_bitmap(mario_left);
destroy_bitmap(mario_down);
destroy_bitmap(mario_space);
destroy_bitmap(mario_run_2);
destroy_bitmap(mario_run_1);
}
END_OF_MAIN ();