//inicializacni funkce pri zacatku hry void init_game() { //pocatecni pozice, rychlost a hp raketky posx=0; posy=-300; speedx=speedy=0; hp=1; //hrac muze hned strilet reload=0; //promenne pro zachovani hlavnich statistik hry level=0; plevel=0; score=0; //na zacatku hrac zije playerdead=0; //cas od smrti hrace nakonci deathtimer=0; //trvani bonusu shieldtimer=0; canontimer=0; init_stars(); init_bullets(); init_enemies(); init_particles(); init_bonuses(); }
void set_game_state(GAME_STATE_TYPE s) { state = s; switch(state) { case GAME_STATE_MENU : set_menu(MENU_GAME); break; case GAME_STATE_BATTLE : set_menu(MENU_BATTLE); init_battle_player(game_battle, game_player); init_enemies(game_battle); break; default : break; } }
void begin_game(void) { int i; counter = 0; init_structs_etc(); for (i = 0; i < NO_ACTORS; i ++) { actor[i].in_play = 0; } player[0].score = 0; player[1].score = 0; if (game.type == GAME_SINGLE || game.type == GAME_TIME_ATTACK) { game.users = 1; actor[0].in_play = 0; player[game.single_player].actor_controlled = 0; // player[0].ships_left = 3; game.ships_left = 3; actor[0].controller = game.single_player; init_actor(0, player[game.single_player].ship); //ACTORTYPE_SHIP); } if (game.type == GAME_COOP || game.type == GAME_DUEL || game.type == GAME_TIME_ATTACK_COOP) { game.users = 2; actor[0].in_play = 0; player[0].actor_controlled = 0; // player[0].ships_left = 3; actor[0].controller = 0; init_actor(0, player[0].ship); //ACTORTYPE_SHIP); actor[1].in_play = 0; player[1].actor_controlled = 1; // player[1].ships_left = 3; actor[1].controller = 1; init_actor(1, player[1].ship); //ACTORTYPE_SHIP); game.ships_left = 6; } init_bullets(); init_clouds(); // init_stars(); init_enemies(); prepare_display(); game.drag = 0.013;//955;//9999; /* arena.max_x = 894000; arena.max_y = 895000; */ arena.level = 0; game.symbols_given = 0; init_level(); long_slacktime = 0; arena.waver_on_level = 0; }
void begin_game(void) { int i; counter = 0; init_structs_etc(); for (i = 0; i < NO_ACTORS; i ++) { actor[i].in_play = 0; } player[0].score = 0; player[1].score = 0; if (game.type == GAME_SINGLE) { game.users = 1; actor[0].in_play = 0; player[game.single_player].actor_controlled = 0; // player[0].ships_left = 3; game.ships_left = 3; actor[0].controller = game.single_player; init_actor(0, player[game.single_player].ship); //ACTORTYPE_SHIP); } else { game.users = 2; actor[0].in_play = 0; player[0].actor_controlled = 0; // player[0].ships_left = 3; actor[0].controller = 0; init_actor(0, player[0].ship); //ACTORTYPE_SHIP); actor[1].in_play = 0; player[1].actor_controlled = 1; // player[1].ships_left = 3; actor[1].controller = 1; init_actor(1, player[1].ship); //ACTORTYPE_SHIP); game.ships_left = 6; } init_bullets(); init_clouds(); init_enemies(); prepare_display(); game.drag = 0.013;//955;//9999; /* arena.max_x = 894000; arena.max_y = 895000; */ arena.level = 0; init_level(); }
int main() { ALLEGRO_DISPLAY *display = NULL; ALLEGRO_EVENT_QUEUE *event_queue=NULL; ALLEGRO_TIMER *timer=NULL; ALLEGRO_FONT *font=NULL; bool keys[4]={false, false, false, false}; bool redraw; enum tile map[50][30]; struct player player; struct enemy enemies[100]; int next; int selected_enemy=100; int level=1; int best=1; player.power=5; player.health=30; player.max_health=30; player.speed=2; player.x=0; player.y=0; player.turns_missed=0; player.kills=0; player.upgrades=4; if(!init(&display, &event_queue, &timer)) { return 1; } init_map(map); init_enemies(enemies, map, 5); font=al_load_font("Xolonium-Regular.otf", 30, 0); while(42) { ALLEGRO_EVENT ev; al_wait_for_event(event_queue, &ev); if(ev.type == ALLEGRO_EVENT_TIMER) { redraw=true; next=select_mover(player, enemies); if(next==100) { if(move_player(&player, keys, map, enemies)) { player.turns_missed=0; inc_turns(&player, enemies); } } else { int ret_x, ret_y; search(enemies[next].x, enemies[next].y, map, player.x, player.y, &ret_x, &ret_y); if(!is_player(ret_x, ret_y, player) && is_enemy(ret_x, ret_y, enemies)==100) { enemies[next].x=ret_x; enemies[next].y=ret_y; } if(is_player(ret_x, ret_y, player)) { fight(&player, enemies, next); } enemies[next].turns_missed=0; inc_turns(&player, enemies); if(!(rand()%(150/level))) { breed(enemies, map); } } if(enemies[selected_enemy].health<=0) { selected_enemy=100; } if(all_enemies_dead(enemies)) { level++; init_map(map); init_enemies(enemies, map, level*5); player.x=0; player.y=0; if(level>best) { best=level; } } if(player.health<=0) { level=1; init_map(map); init_enemies(enemies, map, level*5); player.power=5; player.health=30; player.max_health=30; player.speed=2; player.x=0; player.y=0; player.turns_missed=0; player.kills=0; player.upgrades=0; } } else if(ev.type==ALLEGRO_EVENT_DISPLAY_CLOSE) { break; } else if(ev.type == ALLEGRO_EVENT_KEY_DOWN) { switch(ev.keyboard.keycode) { case ALLEGRO_KEY_UP: keys[KEY_UP]=true; break; case ALLEGRO_KEY_DOWN: keys[KEY_DOWN]=true; break; case ALLEGRO_KEY_RIGHT: keys[KEY_RIGHT]=true; break; case ALLEGRO_KEY_LEFT: keys[KEY_LEFT]=true; break; } } else if(ev.type == ALLEGRO_EVENT_KEY_UP) { switch(ev.keyboard.keycode) { case ALLEGRO_KEY_UP: keys[KEY_UP]=false; break; case ALLEGRO_KEY_DOWN: keys[KEY_DOWN]=false; break; case ALLEGRO_KEY_RIGHT: keys[KEY_RIGHT]=false; break; case ALLEGRO_KEY_LEFT: keys[KEY_LEFT]=false; break; } } else if(ev.type == ALLEGRO_EVENT_MOUSE_BUTTON_DOWN) { int old_selected=selected_enemy; selected_enemy=is_enemy(ev.mouse.x/18, ev.mouse.y/18, enemies); if(selected_enemy==100) selected_enemy=old_selected; if(ev.mouse.x>900 && player.kills >= (player.upgrades * player.upgrades)/10) { bool change=false; if(ev.mouse.y>10 && ev.mouse.y<40) { player.max_health+=5; player.health=player.max_health; change=true; } else if(ev.mouse.y>50 && ev.mouse.y<80) { player.power+=2; change=true; } else if(ev.mouse.y>90 && ev.mouse.y<120) { player.speed+=1; change=true; } if(change) { player.upgrades+=1; } } } if(redraw && al_is_event_queue_empty(event_queue)) { redraw=false; al_clear_to_color(al_map_rgb(255, 255, 255)); draw_map(map); draw_enemies(enemies); al_draw_bitmap(player_img, player.x*18, player.y*18, 0); al_draw_textf(font, al_map_rgb(0, 255, 0), 950, 10, ALLEGRO_ALIGN_CENTRE, "%d", player.health); al_draw_textf(font, al_map_rgb(0, 255, 0), 950, 50, ALLEGRO_ALIGN_CENTRE, "%d", player.power); al_draw_textf(font, al_map_rgb(0, 255, 0), 950, 90, ALLEGRO_ALIGN_CENTRE, "%d", player.speed); al_draw_textf(font, al_map_rgb(0, 0, 255), 950, 150, ALLEGRO_ALIGN_CENTRE, "%d", player.kills); al_draw_textf(font, al_map_rgb(0, 0, 255), 950, 190, ALLEGRO_ALIGN_CENTRE, "%d", (player.upgrades*player.upgrades)/10); if(selected_enemy!=100) { al_draw_textf(font, al_map_rgb(255, 0, 0), 950, 250, ALLEGRO_ALIGN_CENTRE, "%d", enemies[selected_enemy].health); al_draw_textf(font, al_map_rgb(255, 0, 0), 950, 290, ALLEGRO_ALIGN_CENTRE, "%d", enemies[selected_enemy].power); al_draw_textf(font, al_map_rgb(255, 0, 0), 950, 330, ALLEGRO_ALIGN_CENTRE, "%d", enemies[selected_enemy].speed); } al_draw_textf(font, al_map_rgb(0, 0, 0), 950, 390, ALLEGRO_ALIGN_CENTRE, "%d", level); al_draw_textf(font, al_map_rgb(0, 0, 0), 950, 430, ALLEGRO_ALIGN_CENTRE, "%d", best); al_flip_display(); } } return 0; }