Exemplo n.º 1
0
 def __init__(self):
     Application.__init__(self)
     pygame.key.set_repeat(100,100)
     
     self.gameover = False
     self.kills = 0
     
     self.ships = Group()
     self.bullets = Group()
     self.player_bullets = BulletGroup(10)
     self.spawners = [   BadGuySpawner(100, self.ships, self.bounds, self.bullets),
                         FastGuySpawner(250, self.ships, self.bounds, self.bullets),
                         MadGuySpawner(300, self.ships, self.bounds, self.bullets)]
     
     self.player = Player(self.screen_size[0]/2, self.screen_size[1]-25, 0, 0, self.bounds, self.player_bullets)
             
     self.killed_text = UpdateText("Killed: ", self.kills, (self.screen_size[0]-100, self.screen_size[1]-25), 30)
     self.lives_text = UpdateText("Lives: ", self.player.lives, (10, self.screen_size[1]-25), 30)
Exemplo n.º 2
0
class Game(Application):
    title = "Sqwars"
    screen_size = 800, 600
    min_dt = 200
    pause_key = K_p
    paused_text = "Press P to blast more baddies!"
    gameover_msg = "Game Over!"
        
    def __init__(self):
        Application.__init__(self)
        pygame.key.set_repeat(100,100)
        
        self.gameover = False
        self.kills = 0
        
        self.ships = Group()
        self.bullets = Group()
        self.player_bullets = BulletGroup(10)
        self.spawners = [   BadGuySpawner(100, self.ships, self.bounds, self.bullets),
                            FastGuySpawner(250, self.ships, self.bounds, self.bullets),
                            MadGuySpawner(300, self.ships, self.bounds, self.bullets)]
        
        self.player = Player(self.screen_size[0]/2, self.screen_size[1]-25, 0, 0, self.bounds, self.player_bullets)
                
        self.killed_text = UpdateText("Killed: ", self.kills, (self.screen_size[0]-100, self.screen_size[1]-25), 30)
        self.lives_text = UpdateText("Lives: ", self.player.lives, (10, self.screen_size[1]-25), 30)
            
    def handle_event(self, event):
        self.player.vx = 0 # Player only moves when the key is down
        key = pygame.key.get_pressed()
        if key[pygame.K_SPACE]:
            self.player.shoot(200)
        if key[pygame.K_LEFT] and self.player.atedge != "Left":
            self.player.vx = -150
        if key[pygame.K_RIGHT] and self.player.atedge != "Right":
            self.player.vx = 150
    
    def update(self):
        dt = min(self.min_dt, self.clock.get_time())
        self.bullets.update(dt)
        self.player_bullets.update(dt)
        
        # Check if any of the enemy bullets hit the player, if they did, the player loses a life
        if pygame.sprite.spritecollide(self.player, self.bullets, True):
            self.player.lose_life()
            self.lives_text.var = self.player.lives
        
        # Check if any of the player bullets hit an enemy, if they did, kill the enemy and give the player more points
        for bullet in self.player_bullets:
            self.kills += bullet.kill_things(self.ships, self.player)
            self.killed_text.var = self.kills
        
        # Check if any of the player's bullets hit a enemy bullet, if they did, they both disappear    
        pygame.sprite.groupcollide(self.player_bullets, self.bullets, True, True)
        
        
        self.ships.update(dt)
        self.player.update(dt)
        
        for spawner in self.spawners:
            spawner.random_spawn()
        
        # If ships get by the player, the player loses a life!
        for ship in self.ships:
            if ship.rect.bottom > self.bounds.bottom:
                ship.kill()
                self.player.lives -= 1
                
        if self.player.lives == 0:
            self.do_gameover()
    
    def draw(self, screen):
        # Draw E'ERTHANG
        screen.fill((0,0,0))
        self.ships.draw(screen)
        self.bullets.draw(screen)
        self.player_bullets.draw(screen)
        self.player.draw(screen)
        self.killed_text.draw(screen)
        self.lives_text.draw(screen)
        if self.is_gameover:
            self.do_gameover()