a wiec pisze grę i chce scrollować mapę lecz gdy chce ruszyć postacią to postać się poruszy o kilka pixeli i nic więcej a mapa w ogóle się nie scrolluję
#include <allegro.h>
#include <iostream>
using namespace std;
int mapa_x=0;
int mapa_y=0;
int ludek_x=0;
int ludek_y=0;
int ludek_kierunek=0;
int ludek_klatka=0;
int frame=0;
BITMAP*teren=NULL;
BITMAP*bufor=NULL;
BITMAP*ludek=NULL;
int map[15][15]=
{
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
};
void wyswietl()
{
int i;
int j;
for (int i=0;i<15;i++)
{
for (int j=0;j<15;j++)
{
blit(teren,bufor,
(map[j + mapa_y][i + mapa_x]%4) * 40,
(map[j + mapa_y][i + mapa_x]/4) * 40,
i * 40,j * 40,40,40);
}
}
};
int main()
{
allegro_init();
install_keyboard();
set_color_depth(32);
set_gfx_mode(GFX_AUTODETECT_WINDOWED,600,480,0,0);
bufor=create_bitmap(600,480);
teren=load_bitmap("teren.bmp",default_palette);
ludek=load_bitmap ("ludek.bmp",default_palette);
while (!key [KEY_ESC])
{
ludek_kierunek=0;
if ((key[KEY_LEFT]) && (mapa_x>0) ) {ludek_kierunek=4,ludek_x--,mapa_x--;}
if ((key[KEY_RIGHT]) && (mapa_x<15)) {ludek_kierunek=2,ludek_x++,mapa_x++;}
if ((key[KEY_UP]) && (mapa_y >0)) {ludek_kierunek=1,ludek_y--,mapa_y--;}
if ((key[KEY_DOWN]) && (mapa_y<15)){ludek_kierunek=3,ludek_y++,mapa_y++;}
rest(10);
frame++;
if (frame>40) frame=0;
if (frame<20) {ludek_klatka=0;}
else if (frame>=20 && frame <40) {ludek_klatka=1;}
wyswietl();
masked_blit(ludek,bufor,ludek_kierunek*50, ludek_klatka*50 ,ludek_x,ludek_y,50,50);
blit(bufor,screen,0,0,0,0,600,480);
}
destroy_bitmap(teren);
destroy_bitmap(bufor);
destroy_bitmap(ludek);
allegro_exit();
return 0;
}
END_OF_MAIN();