示例#1
0
		Character::Character()
		{
			set_attributes();
			set_resources();
			set_behaviour();
			set_abilities();
			set_event_listeners();
		}
示例#2
0
void init_level()
{
  if(level < 21)
    effective_level = level;

  set_behaviour(1);
  pacman_dead = 0;
  frightened_ = 0;
  remaining_dots = 244;
  stage = 0;
  pinky.dot_counter = 0;
  inky.dot_counter = 0;
  clyde.dot_counter = 0;

  active_counter = 0;
  (*exit_house[0]) = 0;
  (*exit_house[1]) = 0;
  (*exit_house[2]) = 0;

  stage_times[1] = 20000; /* Chase 1 and 2 times are always 20s. */
  stage_times[3] = 20000;
  stage_times[4] = 5000; /* Scatter 3 time is always 5s. */
  printf("Level: %i Level Time: %i Stage: %i Stage Time: %i\n",effective_level,level_time,stage,stage_times[stage]);
  switch(effective_level)
  {
    case 0:
      stage_times[0] = 7000;
      stage_times[2] = 7000;
      stage_times[5] = 20000;
      stage_times[6] = 5000;
      break;
    case 1:
    case 2:
    case 3:
      stage_times[0] = 7000;
      stage_times[2] = 7000;
      stage_times[5] = 1033000;
      stage_times[6] = 17;
      break;
    default:
      stage_times[0] = 5000;
      stage_times[2] = 5000;
      stage_times[5] = 1037000;
      stage_times[6] = 17; /*  ~1/60 of a second. */
      break;
  }
}
示例#3
0
void update_game(struct Anim* anims, struct Image* images, uint32_t dt)
{
  if(pacman_dead == 1)
  {
    pacman_dead = isPacmanDying();
    if(pacman_dead == 0)
    {
      end_kill_pacman();
    }
    return;
  }

  level_time += dt;

  if(bonus_spawned == 1)
    bonus_timer -= dt;

  blinky_update(&blinky,&pacman,&my_grid);
  pinky_update(&pinky,&pacman,&my_grid);
  inky_update(&inky,&blinky, &pacman,&my_grid);
  clyde_update(&clyde,&pacman,&my_grid);
  pacman_update(&pacman,&my_grid);

  if(frightened_ == 1)
  {
    fright_timer -= dt;
    if(fright_timer < 0)
    {
      set_frightened(0);
    }
  }
  else
  {
    if(stage < 7)
    {
      stage_times[stage] -= dt;

      if(stage_times[stage] < 0)
      {

        if(behaviour_ == 1)
          set_behaviour(2);
        else
          set_behaviour(1);

        printf("Level: %i Level Time: %i Stage: %i Stage Time: %i\n",effective_level,level_time,stage,stage_times[stage]);
        printf("Behaviour: %i\n",behaviour_);

        ++stage;
      }
    }
  }

  if(get_remaining_dots() == 0)
  {
    inc_level();
    init_level();

    grid_reload(&my_grid);

    pacman_reset(&pacman);
    blinky_init(&blinky,anims,images);
    pinky_init(&pinky,anims,images);
    inky_init(&inky,anims,images);
    clyde_init(&clyde,anims,images);
  }
  else if(get_remaining_dots() == 170)
  {
    spawn_bonus();
    bonus_timer = (rand() % 1000) + 9000;
  }
  else if(get_remaining_dots() == 70)
  {
    spawn_bonus();
    bonus_timer = (rand() % 1000) + 9000;
  }


  if(bonus_timer <= 0 && bonus_spawned == 1)
  {
    kill_bonus();
  }
}