void mover_mono(BITMAP *fondo, mono *m, int dx, int dy)
{
int x,y;
for(y=0; y<64; y++)
{
for(x=0; x<64; x++)
{ // si hay un pedazo de mono no-transparente y ( el mono se va a mover fuera de esa zona o el pixel q va a ir ahi va a ser transparente )
if(getpixel(m->bmp,x,y)!=MASK_COLOR_16 && ((dx>0 && x<dx) || (dy>0 && y<dy) || (dx<0 && x>64+dx) || (dy<0 && y>64+dy) || getpixel(m->bmp,x-dx,y-dy)==MASK_COLOR_16))
putpixel(screen,m->x+x-dx,m->y+y-dy,getpixel(fondo,m->x+x-dx,m->y+y-dy));
} // entonces en ese punto copio el pixel del fondo encima del resto de mono
}
m->x += dx;
m->y += dy;
draw_sprite(screen,m->bmp,m->x,m->y);
if(key[KEY_ESC]) exit(0);
}
void saltar(BITMAP *fondo,mono *m)
{
float vy,vx;
for(vy=-2.49;vy<=2.5;vy+=G)
{
if(key[KEY_LEFT] && !key[KEY_RIGHT]) vx=-1;
else if(key[KEY_RIGHT] && !key[KEY_LEFT]) vx=1;
else vx=0;
mover_mono(fondo,m,vx,vy);
}
}