Ejemplo n.º 1
0
  def __init__(self, sprite_groups):
    self.sprite_groups = sprite_groups
    self.add_starting_sprites()
    
    self.player_sprite = self.sprite_groups.player.sprites()[0]
    self.player_controller = PlayerController(self.sprite_groups)
    self.blocks_controller = BlocksController(self.sprite_groups)
    self.lasers_controller = LasersController(self.sprite_groups)
    self.items_controller = ItemsController(self.sprite_groups)

    self.events = self.get_events()
    self.collision = False

    pygame.key.set_repeat(1,10)

    pygame.mixer.music.load('sounds/music.wav')
    pygame.mixer.music.play(loops=-1)
Ejemplo n.º 2
0
class GameController:
  def __init__(self, sprite_groups):
    self.sprite_groups = sprite_groups
    self.add_starting_sprites()
    
    self.player_sprite = self.sprite_groups.player.sprites()[0]
    self.player_controller = PlayerController(self.sprite_groups)
    self.blocks_controller = BlocksController(self.sprite_groups)
    self.lasers_controller = LasersController(self.sprite_groups)
    self.items_controller = ItemsController(self.sprite_groups)

    self.events = self.get_events()
    self.collision = False

    pygame.key.set_repeat(1,10)

    pygame.mixer.music.load('sounds/music.wav')
    pygame.mixer.music.play(loops=-1)

  def update_sprites(self):
    self.events = self.get_events()
    self.keys = pygame.key.get_pressed()
    self.collision = self.get_player_block_collisions()
    self.get_player_item_collisions()
    self.get_player_laser_collisions()

    self.player_controller.update_player(self.events, self.collision, self.keys)

    if not self.check_player_bounds():
      GameController.play_lose_sound()
      pygame.time.delay(1500)
      sys.exit()
    
    added = self.blocks_controller.update_blocks()
    self.lasers_controller.update_lasers(added)
    self.items_controller.update_items()
    
    pygame.event.pump()

  def get_events(self):
    events = {}
    for event in pygame.event.get():
      if event.type == pygame.KEYDOWN:
        events[event.key] = 1
    return events

  def get_player_block_collisions(self):
    blocks = self.sprite_groups.blocks
    blocks_hit = self.sprite_groups.blocks_hit
    hit_blocks = pygame.sprite.spritecollide(self.player_sprite, blocks, False)
    if hit_blocks is not None: map(blocks_hit.add, hit_blocks)

  def get_player_item_collisions(self):
    items = self.sprite_groups.starsnbombs
    items_hit = self.sprite_groups.starsnbombs_hit
    hit_items = pygame.sprite.spritecollide(self.player_sprite, items, True)
    if hit_items is not None: map(items_hit.add, hit_items)

  def get_player_laser_collisions(self):
    lasers = self.sprite_groups.on_lasers
    lasers_hit = self.sprite_groups.lasers_hit
    hit_lasers = pygame.sprite.spritecollide(self.player_sprite, lasers, False)
    if hit_lasers:
      pygame.mixer.music.stop()
      pygame.mixer.Sound('sounds/lose.wav').play()
      pygame.time.delay(1500)
      sys.exit()
      map(lasers_hit.add, hit_lasers)

  def check_player_bounds(self):
    if self.player_sprite.rect.centery < 0:
      return False
    elif self.player_sprite.rect.centery > 600:
      return False
    else:
      return True

  def add_starting_sprites(self):
    self.sprite_groups.add_block(Block(400,350))
    self.sprite_groups.add_star(StarSprite(-300,-350))
    self.sprite_groups.add_player(Player())
    self.sprite_groups.add_level_text(LevelText())

  @staticmethod
  def play_lose_sound():
    pygame.mixer.music.stop()
    lose_sound = pygame.mixer.Sound('sounds/lose.wav')
    lose_sound.play()