#include #include #include #include using namespace std; volatile bool close_button_pressed = false; int playerx = 5; int playery = 5; int tilex = 32; int tiley = 32; int gamespeed = 12; int mapsizex = 20; int mapsizey = 11; char map[20][12]; BITMAP *buffer; BITMAP *mainhud; BITMAP *grass; BITMAP *water; BITMAP *lava; BITMAP *tree; BITMAP *deadtree; void close_button_handler() { close_button_pressed = true; simulate_keypress(KEY_ESC); } END_OF_FUNCTION(close_button_handler); void load_allegro() { allegro_init(); install_keyboard(); install_timer(); LOCK_FUNCTION(close_button_handler); set_color_depth(16); set_gfx_mode(GFX_AUTODETECT_WINDOWED, 640,480,0,0); set_window_title("MMORPG Client"); set_close_button_callback(close_button_handler); } void load_map(char mapx, char mapy) { ostringstream out; out << "maps/map" << mapx << mapy << ".txt"; string mappath = out.str(); ifstream mapfile(mappath.c_str()); int y = 1; string mapline; if (mapfile.is_open()) { while (!mapfile.eof() && y <= 12) { getline(mapfile,mapline); for(int i = 1; i <= 20; i++) { map[i][y] = mapline[i]; } y++; } mapfile.close(); } } void draw_tiles() { for(int x=0; x <= mapsizex; x++) { for(int y=0; y <= mapsizey; y++) { if(map[x][y] == "g") { draw_sprite(buffer, grass, x*tilex, y*tiley); } else if (map[x][y] == "t") { draw_sprite(buffer, grass, x*tilex, y*tiley); draw_sprite(buffer, tree, x*tilex, y*tiley); } else if (map[x][y] == "d") { draw_sprite(buffer, grass, x*tilex, y*tiley); draw_sprite(buffer, deadtree, x*tilex, y*tiley); } } } } void draw_hud() { draw_sprite(buffer, mainhud, 1, 384); } int main(int argc, char *argv[]) { load_allegro(); BITMAP *playerpic; playerpic = load_bitmap("data/images/players/player.bmp", NULL); grass = load_bitmap("data/images/ground/grass.bmp", NULL); water = load_bitmap("data/images/ground/water.bmp", NULL); lava = load_bitmap("data/images/ground/lava.bmp", NULL); tree = load_bitmap("data/images/plants/tree.bmp", NULL); deadtree = load_bitmap("data/images/plants/deadtree.bmp", NULL); mainhud = load_bitmap("data/images/gui/hud.bmp", NULL); buffer = create_bitmap(640,480); load_map("1","1"); while(!close_button_pressed) { if(key[KEY_RIGHT] && map[playery][playerx+1] == "g") { if(playerx < 19) { playerx++; } clear_keybuf(); } else if(key[KEY_LEFT]) { if(playerx >= 1 && map[playery][playerx-1] == "g") { playerx--; } clear_keybuf(); } else if(key[KEY_UP]) { if(playery >= 1 && map[playery-1][playerx] == "g") { playery--; } clear_keybuf(); } else if(key[KEY_DOWN] && map[playery+1][playerx] == "g") { if(playery <= 13) { playery++; } clear_keybuf(); } draw_tiles(); draw_hud(); draw_sprite(buffer, playerpic, playerx*tilex, playery*tiley); blit(buffer, screen, 0,0,0,0,640,480); clear_bitmap(buffer); readkey(); } release_screen(); destroy_bitmap(playerpic); destroy_bitmap(buffer); return 0; } END_OF_MAIN()