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)
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()