class Game(StateMachine): def __init__(self,gridSize=32,frameRate=60): super(Game,self).__init__('TheGame.You Lost It.') pygame.init() self.framerate = frameRate self.maze = Maze(gridSize) self.maze.read("theMaze") self.screen = pygame.display.set_mode(self.maze.rect.size,0,32) self.clock = pygame.time.Clock() self.paused = False self.add(AttractMode(self)) self.add(SetupLevelMode(self)) self.add(PlayingMode(self)) self.add(IntermissionMode(self)) self.add(GameOverMode(self)) self.setStateByName(PlayingMode.name) @property def time(self): ms = self.clock.tick(self.framerate) return ms / 1000.0 @property def font(self): try: return self._font except AttributeError: pass self._font = pygame.font.Font(FONTNAME,self.maze.gridWidth) return self._font @property def highScoreLabel(self): try: return self._highScoreLabel except AttributeError: pass self._highScoreLabel = self.font.render("HIGH SCORE", True, (255,255,255),(0,0,0)) return self._highScoreLabel @property def oneUpLabel(self): try: return self._oneUpLabel except AttributeError: pass self._oneUpLabel = self.font.render("1UP", True, (255,255,255),(0,0,0)) return self._oneUpLabel @property def twoUpLabel(self): try: return self._twoUpLabel except AttributeError: pass self._twoUpLabel = self.font.render("2UP", True, (255,255,255),(0,0,0)) return self._twoUpLabel @property def readyLabel(self): try: return self._readyLabel except AttributeError: pass self._readyLabel = self.font.render("Ready!", True, (255,255,0),(0,0,0)) return self._readyLabel def start(self): pass def up(self): self.maze.puckman.newHeading = UP def down(self): self.maze.puckman.newHeading = DOWN def left(self): self.maze.puckman.newHeading = LEFT def right(self): self.maze.puckman.newHeading = RIGHT def pause(self): self.paused = True def unpause(self): self.paused = False def run(self): while True: self.think() def quit(self): print "quitting" exit() def drawHighScore(self): lrect = self.highScoreLabel.get_rect() srect = self.screen.get_rect() lrect.midtop = srect.midtop self.screen.blit(self.highScoreLabel,lrect.topleft) def draw1UpScore(self,score): r = self.screen.get_rect() scoreText = self.font.render("%d" % score, True, (255,255,0),(0,0,0)) lrect = scoreText.get_rect() x,y = r.midtop x /= 4 y += self.maze.gridWidth lrect.midtop = (x,y) self.screen.blit(scoreText,lrect.topleft) def draw1Up(self): lrect = self.oneUpLabel.get_rect() srect = self.screen.get_rect() x,y = srect.midtop x /= 2 lrect.midtop = (x,y) self.screen.blit(self.oneUpLabel,lrect.topleft) def draw2Up(self): pass def drawFruit(self): pass def update(self): if self.paused: self.time else: self.maze.update(self.time) def draw(self): self.maze.draw(self.screen) self.drawHighScore() self.draw1Up() self.draw1UpScore(self.maze.puckman.score) self.draw2Up() self.drawFruit()