Example #1
0
void update_movement(GameState * state) {
	register int i;

	if (((state->wave.spawn_counter % 10 == 0 && !state->wave.completed) || (state->wave.cool_down_counter % 10 == 0 && state->wave.cool_down_counter != 0)) && state->mana != MANA_MAX) {
		if (state->mana + MANA_UPDATE < MANA_MAX) {
			state->mana += MANA_UPDATE;
		} else {
			state->mana += MANA_MAX - state->mana;
		}
	}
	//als frost wave actief is is er geen movement
	if (!state->spells.frost_wave_active) {
		//pad moet herberekend worden
		if (state->refresh_paths) {
			for (i = 0; i < state->enemies_length; i++) {
				if (state->enemies[i].enemy.alive) {
					refresh_path(&state->enemies[i].enemy.path, &state->world);
				}
			}
			state->refresh_paths = 0;
		}
		move_enemies(state);
	}
	move_projectiles(state);
}
Example #2
0
File: world.c Project: jcnix/JBlux
void* init_world()
{
    /* Incase the server crashed with users online
     * set all users to offline so they can reconnect */
    db_set_all_users_offline();
    
    /* Initialize and cache all maps from DB */
    maps = init_maps();
    
    while(1)
    {
        /* sleep for 500,000 microseconds, or 0.5 seconds */
        usleep(500000);
        respawn_npcs();
        npcs_attack_target();
        move_enemies();
    }
    return NULL;
}
int main()
{	
    //initscr(); 	
	n_enemies=0;
	srand(time(NULL));
	player.x=rand()%MAXLIN;
    player.y=rand()%MAXCOL; /*inicializa o player numa posição qualquer*/
    int temp_life,lvl=0;
    do{
    	int f;
    	if(kill==1)
    	{
    		kill=0;
    		n_enemies=10;
    		lvl=1;
    	}
		else
			n_enemies+=10;
			lvl++;
    	new_map_enemies();
        print_map();
        temp_life=1;
        do{
        	
			move_human();
			if(enable_mv==1)
			{
				move_enemies();
				print_map();
				temp_life=test_enemies();
				enable_mv=0;
			}
			        	        	
		}while(temp_life!=0 && master_quit==0 && kill==0);
		for(f=0;f<n_enemies;f++)
			robot[f].alive=0;		
	}while(master_quit==0);
	printf("\nLevel: %d", lvl);
	__fpurge(stdin);
	getchar();
	return EXIT_SUCCESS;
}
Example #4
0
void GameUpdate(float elapsed, std::vector<Entity*>& entities, std::vector<Entity*> enemy_bullets, Entity& player_bullet, Entity& explosion, Entity& player){
	static float timer = 0;
	static bool right = 1;
	static float explosion_life = 0;
	int randEnemy = 0;
	timer += elapsed;
	explosion_life += elapsed;
	
	size_t count = 44;
	for (size_t i = 0; i < 44; ++i){
		if (entities[i]->isDead){
			--count;
		}
	}

	for (size_t i = 0; i < ENEMY_BULLETS && i < count; ++i){
		if (bullet_not_on_screen(*enemy_bullets[i])){
			randEnemy = rand() % 44;
			
			while (entities[randEnemy]->isDead){
				randEnemy = rand() % 44;
			}
		
			enemy_bullets[i]->x = entities[randEnemy]->x;
			enemy_bullets[i]->y = entities[randEnemy]->y - entities[randEnemy]->height;
			enemy_bullets[i]->velocity_y = -2;
		}
		enemy_bullets[i]->Update(elapsed, friction_x, gravity);
		if (!player.isDead && enemy_bullets[i]->hasSqCollision(player)){
			enemy_bullets[i]->x = 7.0f;
			lives--;
			if (lives <= 0){
				player.isDead = 1;
			}
		}
	}

	

	player.Update(elapsed, friction_x, gravity);
	if (player.x >= (6.22 - player.width / 2)){
		player.x = (6.22 - player.width / 2);
	}
	else if ((player.x <= (-6.22 + player.width / 2))){
		player.x = (-6.22 + player.width / 2);
	}
	player_bullet.Update(elapsed, friction_x, gravity);
	if (bullet_not_on_screen(player_bullet)){
		player_bullet.velocity_y = 0;
		player_bullet.x = 7.0f;
		player_bullet.y = 0.0f;
	}
	if (explosion_life > 0.2){
		if (explosion.isDead){
			explosion.x = 7.0f;
			explosion.y = 0.0f;
		}
		explosion_life = 0;
	}

	for (size_t i = 44; i < 44 + (MAX_LIVES - lives); ++i){ /*show life amount based on lives variable*/
		entities[i]->isDead = 1;
	}

	for (size_t i = 0; i < 44; ++i){
		if (!entities[i]->isDead && entities[i]->hasSqCollision(player_bullet)){
			entities[i]->isDead = 1;
			player_bullet.velocity_y = 0;
			player_bullet.x = 7.0f;
			player_bullet.y = 0.0f;
			explosion.x = entities[i]->x;
			explosion.y = entities[i]->y;
			explosion.isDead = 1;
		}
	}

	move_enemies(entities, right,timer, 0, 44);

}
Example #5
0
void Game::main_loop(){
    //Quit flag
    bool quit = false;

	Timer fps;

	timer.start();

	int ticks = timer.get_ticks();
	int last_ticks = 0;

    //While the user hasn't quit
    while( quit == false )
    {
        //While there's events to handle
        while( SDL_PollEvent( &event ) )
        {
            //Handle events for the player
            player.handle_input(event);
			OutputDebugString(toString().c_str());

            //If the user has clicked X
            if( event.type == SDL_QUIT )
            {
                //Quit the program
                quit = true;
            }
        }

		if(ticks - last_ticks > 10000){ // if it has been ten seconds since the last enemy spawned
			last_ticks = ticks;
			//step up speed for existing enemies
			for(int i = 0; i < enemies.size(); i++){
				enemies[i].setSpeed(enemies[i].speed + 0.5f);
			}
			//add an enemy
			setup_enemy();
		}

		//Move enemies and player
		if(!move_enemies()){ //if there was a collision between enemies and player
			quit = true;     //quit the game altogether
		}
		move_player();
		
        //Render background
        //Show the dot on the screen
        render_game();

        //Update the screen
        if( SDL_Flip( screen ) == -1 )
        {
            return; //FAIL!
        }

        //Cap the frame rate
        if( fps.get_ticks() < 1000 / fpsCap )
        {
            SDL_Delay( ( 1000 / fpsCap ) - fps.get_ticks() );
        }
		ticks = timer.get_ticks();
    }
	//stop timer
	timer.stop();

    //Clean up
    clean_up();
}
Example #6
0
File: game.c Project: noox/Raketka
//posun hry o casovy tik
void update_game(float time, int k_up, int k_down, int k_right, int k_left, int k_fire) {
	//pozadi pro koncovy screen hry
	if (playerdead) { 
		move_stars(time);
		move_enemies(time);
		move_bullets(time);
		update_particles(time);
		move_bonuses(time);

		deathtimer-=time;
		if ((deathtimer<=0) && k_fire) { 
			//zacatek nove hry
			finish_game();
			init_game();
		}
	}

	else {
		handle_levels();
		
		//odecteni casu od casovacu bonusu
		shieldtimer-=time;
		canontimer-=time;

		reload+=time;

		//ovladani raketky (funkce z main.c)
		if (k_left) speedx-=time*1300;
		if (k_right) speedx+=time*1300;
		if (k_up) speedy+=time*1300;
		if (k_down) speedy-=time*1300;

		//strelba mozna jen po specifickem casovem intervalu 
		if (k_fire && ((canontimer>0)?(reload>(0.2/(plevel))):(reload>(0.5/(plevel*0.9))))) { 
			if (canontimer<=0)
				//strelba zavisla na power levelu
				add_bullet(posx, posy+50, 0, 200, plevel, 1, 1);
			else 
				//silenej gun po sebrani zeleneho bonusu
				add_bullet(posx, posy+50, 0.8*speedx+200*DFRAND*DFRAND*DFRAND, 300+speedy+20*DFRAND, 10*plevel, 1, 1); 
			reload=0;
		}
		
		//aplikace rychlosti raketky na pozici
		posx+=speedx*time;
		posy+=speedy*time;

		//aby raketka brzdila stejne pri ruznem frameratu
		speedx*=powf(0.02, time); //powf = exponenciela
		speedy*=powf(0.02, time);

		//okraje hraciho pole pro raketku
		if (posx<-225) {posx=-225; speedx=0;} 
		if (posx>225) {posx=225; speedx=0;}
		if (posy<-335) {posy=-335; speedy=0;}
		if (posy>-100) {posy=-100; speedy=0;}

		move_stars(time);
		move_enemies(time);
		move_bullets(time);
		update_particles(time);
		move_bonuses(time);
	}
}