Najpierw kod:
#include <allegro.h>
using namespace std;
void Camera ( int playerposX, int playerposY, int &cameraX, int &cameraY) {
cameraX = playerposX - 320;
cameraY = playerposY - 240;
if(cameraX < 0)
cameraX = 0;
if(cameraY < 0)
cameraY = 0;
}
int mx = 0, my = 0, mb = 0;
void myszka()
{
if( mx != mouse_x || my != mouse_y || mb != mouse_b )
{
mx = mouse_x;
my = mouse_y;
mb = mouse_b;
}
};
int main () {
allegro_init ();
install_keyboard ();
install_mouse ();
set_color_depth (16);
set_gfx_mode( GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0 );
BITMAP *kafel01 = NULL;
BITMAP *kafel02 = NULL;
BITMAP *kafel03 = NULL;
BITMAP *kafel04 = NULL;
BITMAP *kafel05 = NULL;
BITMAP *kafel06 = NULL;
BITMAP *bufor = NULL;
BITMAP *ludek = NULL;
bufor = create_bitmap(640, 480);
kafel01 = load_bmp(".image/kafel01.bmp", default_palette);
kafel02 = load_bmp(".image/kafel02.bmp", default_palette);
kafel03 = load_bmp(".image/kafel03.bmp", default_palette);
kafel04 = load_bmp(".image/kafel04.bmp", default_palette);
kafel05 = load_bmp(".image/kafel05.bmp", default_palette);
kafel06 = load_bmp(".image/kafel06.bmp", default_palette);
ludek = load_bmp(".image/ludek.bmp", default_palette);
if((!kafel01) || (!kafel02) || (!kafel03) || (!kafel04) || (!kafel05) || (!kafel06) || (!ludek)) {
set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
allegro_message("Popsules jakis obrazek/bufora");
allegro_exit();
return 0;
}
int mapa[12][40] = {
0, 0, 0, 0, 4, 5, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0,
0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 4, 5, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 4, 5, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0,
1, 0, 0, 4, 5, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 4, 5, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
};
int x = 10;
int y = 10;
int dir = 360;
bool done = false;
int cameraX , cameraY;
cameraX = cameraY = 0;
int map_x = -50;
int map_y = 1;
int kloceky, klocekx;
while (!done) {
if (key[KEY_ESC])
done = true;
if (key[KEY_LEFT]) {
x -= 10;
dir = 360;
}
else if (key[KEY_RIGHT]) {
x += 10;
dir = 180;
}
else if (key[KEY_UP]) {
y -= 10;
dir = 90;
}
else if (key[KEY_DOWN]) {
y += 10;
dir = 270;
}
show_mouse( screen );
kloceky = my / 40;
klocekx = (map_x - map_x * 2) / 39.9 + mx / 39.9;
for(y = 0; y < 12; y++) {
for(x = 0; x < 40; x++) {
if (mapa[kloceky][klocekx] == 3) textprintf_ex( bufor, font, 20, 410, makecol( 0, 0, 0 ), - 1, "NIE ZIEMIA");
else if (mapa[kloceky][klocekx] == 1) textprintf_ex( bufor, font, 20, 410, makecol( 0, 0, 0 ), - 1, "NIE ZNAK");
else if (mapa[kloceky][klocekx] == 0) textprintf_ex( bufor, font, 20, 410, makecol( 0, 0, 0 ), - 1, "TAK POWIETRZE");
else if (mapa[kloceky][klocekx] == 4) textprintf_ex( bufor, font, 20, 410, makecol( 0, 0, 0 ), - 1, "TAK CHMURA");
else if (mapa[kloceky][klocekx] == 5) textprintf_ex( bufor, font, 20, 410, makecol( 0, 0, 0 ), - 1, "TAK CHMURA");
if (mapa[y][x] == 0) blit(kafel04,bufor,0,0,map_x+x*40,map_y+y*40,40,40);
else if (mapa[y][x] == 1) blit(kafel03,bufor,0,0,map_x+x*40,map_y+y*40,40,40);
else if (mapa[y][x] == 2) blit(kafel02,bufor,0,0,map_x+x*40,map_y+y*40,40,40);
else if (mapa[y][x] == 3) blit(kafel01,bufor,0,0,map_x+x*40,map_y+y*40,40,40);
else if (mapa[y][x] == 4) blit(kafel05,bufor,0,0,map_x+x*40,map_y+y*40,40,40);
else if (mapa[y][x] == 5) blit(kafel06,bufor,0,0,map_x+x*40,map_y+y*40,40,40);
}
}
textprintf_ex( bufor, font, 20, 430, makecol( 0, 0, 0 ), - 1, "Klocek y = %d Klocek x = %d", kloceky, klocekx );
textprintf_ex( bufor, font, 20, 20, makecol( 0, 0, 0 ), - 1, "Myszka x = %d, y = %d, klawisz = %d !", mx, my, mb );
blit( ludek, bufor , 0, 0, x, y, ludek->w, ludek->h);
blit( bufor, screen, cameraX, cameraY, 0, 0, 640, 480 );
clear_to_color( bufor, makecol( 150, 150, 150 ) );
}
destroy_bitmap(kafel01);
destroy_bitmap(kafel02);
destroy_bitmap(kafel03);
destroy_bitmap(kafel04);
destroy_bitmap(kafel05);
destroy_bitmap(kafel06);
destroy_bitmap(bufor );
destroy_bitmap(ludek );
allegro_exit();
return 0;
}
END_OF_MAIN();
Problem polega na tym że po uruchomienu go nic nie można nic zrobić ,ale program się nie zawiesza działa jedynie przycisk ESC wyjścia może ktoś mi pomoże znaleźć błąd ?