Finally I have finished linking everything together and get ready for the next stage. Here is the Game Manager class which is the only class we need in the main pygame project file. This class contains everything we need to control game objects, play background music and render the game graphics on the game scene.
from Player import Player from Background import Background from MissileManager import MissileManager import pygame class GameManager(object): def __init__(self, scene): self.scene = scene self.player = Player(self.scene) self.background = Background(self.scene) self.missile_manager = MissileManager(self.scene, self.player) self.load_music() self.play_music() def load_music(self): pygame.mixer_music.load('Music/winternight.ogg') def play_music(self): pygame.mixer_music.play(-1) #play the music infinite time def set_player_x(self, _x): self.player.setX(_x) def set_player_y(self, _y): self.player.setY(_y) def set_missile_strike(self, strike): self. missile_manager.setStrike(True) def update(self): self.player.update() self.missile_manager.update() def draw(self): self.background.draw() self.player.draw() self.missile_manager.draw() pygame.display.flip()
No new method has been introduced in this class, what we do is just to group the unorganized code in the previous main pygame file to a single Game Manager class. The main python file now looks really neat because all we need is just a single Game Manager class to control everything. Here is the modify version of the main pygame file.
import sys, pygame from pygame.locals import * from GameManager import GameManager pygame.init() size = width, height = 660, 660 pygame.display.set_caption("Air Strike") # set the title of the window screen = pygame.display.set_mode(size) game_manager = GameManager(screen) while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.mixer_music.stop() sys.exit() # detect key press event if event.type == KEYDOWN: if event.key == K_LEFT: game_manager.set_player_x(-0.1) elif event.key == K_RIGHT: game_manager.set_player_x(0.1) if event.key == K_UP: game_manager.set_player_y(-0.1) elif event.key == K_DOWN: game_manager.set_player_y(0.1) if event.key == K_SPACE: game_manager.set_missile_strike(True) elif event.type == KEYUP: if event.key == K_LEFT: game_manager.set_player_x(0) elif event.key == K_RIGHT: game_manager.set_player_x(0) if event.key == K_UP: game_manager.set_player_y(0) elif event.key == K_DOWN: game_manager.set_player_y(0) if event.key == K_SPACE: game_manager.set_missile_strike(False) game_manager.update() game_manager.draw()
In the next few chapters we will create the enemy ship class as well as the explosion class and the game level class which will be used to control the level of the game.