コード例 #1
0
ファイル: gun.cpp プロジェクト: AndreyNaboka/AngryHead
void gun::update(const float delta) {
    m_time_to_next_shoot -= delta;
    if (m_time_to_next_shoot <= 0.0f) {
        add_new_bullets(1);
        m_time_to_next_shoot = m_shoot_interval - (get_fire_rate_level()*SHOOT_INTERVAL_STEP);
    }
    update_bullets(delta);
}
コード例 #2
0
ファイル: shooting.c プロジェクト: Saito-/INSHI
int main()
{
	int i, j;
	srand(time(NULL));
	
	init();
	
	print_map();

	while (1) {
		char ch = getchar();
		if (ch < 'i' || ch > 'l') continue;
		if (!tgt.isOnMap) {
			generate_tgt();
			update_bullets();
			if (ch == 'j')
				move_left();
			if (ch == 'i')
				shoot();
			if (ch == 'l')
				move_right();
			collision();
		} else {
			update_tgt();
			update_bullets();
			if (ch == 'j')
				move_left();
			if (ch == 'i')
				shoot();
			if (ch == 'l')
				move_right();
			collision();
		}
		print_map();
		if (Life == 0) break;
	}

	printf("Game Over\n");
	printf("Your Score: %d\n", Score);

	return 0;
}
コード例 #3
0
ファイル: Controller.cpp プロジェクト: Zer0Zer0Huit/PythonBot
void
Controller::loop()
{
  bool gameFinished(false), paused(true);
  sf::Event event;
  
  m_view.resize(); // Useful on Windows where the content is not properly sized. A recalculation fix it.
  while (!gameFinished)
  {
    // Deal with all events.
    while (m_view.get_window().pollEvent(event))
    {
      if (event.type == sf::Event::Closed)
      {
	m_view.get_window().close();
	gameFinished = true;
      }
      else if (event.type == sf::Event::Resized)
	m_view.resize();
      else if (event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Space)
	paused = !paused;
    }
    
    // Draw the scene.
    m_view.draw(m_model.get_circles());
    m_view.draw(m_model.get_dead_bots());
    m_view.draw(m_model.get_bots());
    m_view.draw(m_model.get_bullets());
    m_view.draw(m_model.get_scans());
    if (paused)
      m_view.draw_pause();
    m_view.render();
    
    if (!paused)
    {
      // Manage bullets.
      update_bullets();
    
      // Manage bots.
      update_bots();
    }
  }
}
コード例 #4
0
ファイル: main.c プロジェクト: dradtke/battlechess
/* the main game function */
static int play_game()
{ 
   ALLEGRO_TIMER *inc_counter;
   int gameover = 0;
   int cyclenum = 0;

   /* init */
   score = 0;

   init_view();
   init_player();
   init_badguys();
   init_bullets();
   init_explode();
   init_message();

   #define TIMER_SPEED  ALLEGRO_BPS_TO_SECS(30*(cyclenum+2))

   inc_counter = al_create_timer(TIMER_SPEED);
   al_start_timer(inc_counter);

   while (!gameover) {

      /* move everyone */
      while ((al_get_timer_count(inc_counter) > 0) && (!gameover)) {
	 update_view();
	 update_bullets();
	 update_explode();
	 update_message();

	 if (update_badguys()) {
	    if (advance_view()) {
	       cyclenum++;
	       al_set_timer_count(inc_counter, 0);
	       lay_attack_wave(TRUE);
	       advance_player(TRUE);
	    }
	    else {
	       lay_attack_wave(FALSE);
	       advance_player(FALSE);
	    }
	 }

	 gameover = update_player();

	 al_set_timer_count(inc_counter, al_get_timer_count(inc_counter)-1);
      }

      /* take a screenshot? */
      if (key[ALLEGRO_KEY_PRINTSCREEN]) {
	 static int ss_count = 0;

	 char fname[80];

	 sprintf(fname, "speed%03d.tga", ++ss_count);

	 al_save_bitmap(fname, al_get_backbuffer(screen));

	 while (key[ALLEGRO_KEY_PRINTSCREEN])
	    poll_input_wait();

	 al_set_timer_count(inc_counter, 0);
      }

      /* toggle fullscreen window */
      if (key[ALLEGRO_KEY_F]) {
         int flags = al_get_display_flags(screen);
         al_set_display_flag(screen, ALLEGRO_FULLSCREEN_WINDOW,
            !(flags & ALLEGRO_FULLSCREEN_WINDOW));

         while (key[ALLEGRO_KEY_F])
            poll_input_wait();
      }

      /* draw everyone */
      draw_view();
   }

   /* cleanup */
   al_destroy_timer(inc_counter);

   shutdown_view();
   shutdown_player();
   shutdown_badguys();
   shutdown_bullets();
   shutdown_explode();
   shutdown_message();

   if (gameover < 0) {
      sfx_ping(1);
      return FALSE;
   }

   return TRUE;
}
コード例 #5
0
ファイル: ofApp.cpp プロジェクト: Iwanaka/shooter
//--------------------------------------------------------------
void ofApp::update(){

	if(game_state=="start"){//スタート画面の更新描画

	}else if(game_state=="tutorial"){

	}else if(game_state=="game"){//ゲーム画面の更新描画
		player_1.update();
		update_bullets();
		update_bonuses();
        boss_1.update();

		//ボスの動き、弾バリエーション
		if(boss_1.lives>0){
			if(boss_1.shot()){
			if(boss_1.lives>=50){
		
			Bullet b;
			b.setup(false,boss_1.pos,boss_1.bullet_speed,&boss_bullet_image);
			bullets.push_back(b);
		        }
		if(boss_1.lives<50){
			Bullet b;
			b.setup(false,boss_1.pos,boss_1.bullet_speed,&boss_bullet_image2);
			bullets.push_back(b);
		}
			}

		//敵出現
		for(int i=0;i<enemies.size();i++){
			enemies[i].update();

			if(enemies[i].time_to_shoot()){
			Bullet b;//time_to_shot関数にて一瞬だけtrueにしている
			b.setup(false,enemies[i].pos,enemies[i].speed,&enemy_bullet_image);
			bullets.push_back(b);
            }
      }
		for(int i=enemies.size()-1;i>0;i--){
			//画面外に出たら消す
		    if(enemies[i].pos.y+enemies[i].width/2>ofGetHeight()){
			enemies.erase(enemies.begin()+i);
		  }
		}
		if(level_controller.should_spawn()==true){
			Enemy e;
			e.setup(max_enemy_amplitude,max_enemy_shoot_interval,&enemy_image);
			enemies.push_back(e);
		}
		if(level_controller.Item_spawn()==true){
			Life l;
			l.setup(&life_image);
			bonuses.push_back(l);
		}
		}
		else{
			for(int i=0;i<enemies.size();i++){
				enemies[i].end();
				if(boss_1.pos.y<0){
					game_state="end";
					mainSound.stop();
					endingSong.loadSound("end.mp3");
					endingSong.play();
				}
			}
		}
	}else if(game_state=="end"){
	}
}