class Game (object): def __init__(self): """Game encompasses the entirety of all game states/objects/etc. Here we make our game screen and init some variables for holding our game objects.""" self.screen = Screen() self.gameobjects = [] #NOTE: We have to specifically set screen to self.screen otherwise # it will set dimensions to self.screen, which is BAD self.player = Player( (25,50), screen=self.screen ) def run(self): """The main game loop. Handles events""" self.screen.add_object( EvilMage( (100,100), screen=self.screen ) ) self.screen.add_object( Text( (500,0), "Test", screen=self.screen) ) self.screen.add_player( self.player ) self.screen.run() #TODO: eventually have a prompt for saving, etc. self.quit() def quit(self): """Quit the game.""" exit()
def run(): pygame.init() screen = Screen() # mixer.music.load('sounds/background.wav') # mixer.music.play(-1) player = Player() playerX_change = 0 playerY_change = 0 screen.add_player(player) score = 0 bullets = [] for enemy in enemies: screen.add_enemy(enemy) # Game Loop running = True while running: screen.fill() screen.show_score(score) for event in pygame.event.get(): if event.type == pygame.QUIT: running = False if event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT or event.key == pygame.K_a: playerX_change -= 0.5 if event.key == pygame.K_RIGHT or event.key == pygame.K_d: playerX_change += 0.5 if event.key == pygame.K_UP or event.key == pygame.K_w: playerY_change -= 0.5 if event.key == pygame.K_DOWN or event.key == pygame.K_s: playerY_change += 0.5 if event.key == pygame.K_SPACE: if len(bullets) < 50: bullet = Bullet(player) bullets.append(bullet) mixer.Sound('sounds/laser.wav').play() if event.type == pygame.KEYUP: if event.key == pygame.K_LEFT or event.key == pygame.K_a or event.key == pygame.K_RIGHT or event.key == pygame.K_d: playerX_change = 0 if event.key == pygame.K_UP or event.key == pygame.K_w or event.key == pygame.K_DOWN or event.key == pygame.K_s: playerY_change = 0 player.move_player(playerX_change, playerY_change) screen.add_player(player) for enemy in enemies: enemy.move_enemy() screen.add_enemy(enemy) if enemy.check_for_collision(player): screen.game_over() running = False for bullet in bullets: screen.add_bullet(bullet) if bullet.Y < 0: bullets.remove(bullet) if enemy.check_for_collision(bullet): screen.kill_enemy(enemy) # Show Explosion briefly pygame.display.update() enemies.remove(enemy) mixer.Sound('sounds/explosion.wav').play() score += 1 if len(enemies) == 0: x = random.randint(0, 320) if score < 80: while len(enemies) < 5: if score < 20: create_enemyA(x) if 20 <= score < 50: create_enemyB(x) if 50 <= score < 80: create_enemyC(x) x += 64 if 80 <= score < 150: while len(enemies) < 10: create_enemyC(x) x += 64 if 150 <= score: while len(enemies) < 15: create_enemyC(x) x += 64 pygame.display.update()