def __init__(self, screen): self.backdropManager = BackdropManager(self.drawBackdrops) self.playerX = 0 self.score = 0 self.playerState = None self.screen = screen self.healthQuery = None
class GamePlayingDisplay: backdropSize = BackdropManager.getBackDropSize() floorY = GuiConfig.floorY playerDrawCoordinates = GuiConfig.playerDrawCoords playerSpeedX = 10 scoreBorderImage = images.scoreBorderImage scoreBorderDimensions = GuiConfig.scoreBorderDimensions scoreFont = pygame.font.Font(GuiConfig.scoreFontFile, GuiConfig.scoreFontSizePts) scoreFontColor = GuiConfig.scoreFontColor scoreDrawCoords = GuiConfig.scoreDrawCoords def __init__(self, screen): self.backdropManager = BackdropManager(self.drawBackdrops) self.playerX = 0 self.score = 0 self.playerState = None self.screen = screen self.healthQuery = None def setHealthQuery(self, query): self.healthQuery = query def setScore(self, score): self.score = score def updateScreen(self, entitiesToDraw): self.backdropManager.draw() self.drawScore() for entity in entitiesToDraw: self.drawImage(entity[0], entity[1]) self.drawHealth() def updatePlayerData(self, playerState): self.playerState = playerState self.movePlayer() def movePlayer(self): self.playerX += GamePlayingDisplay.playerSpeedX self.checkPlayerRollover() def checkPlayerRollover(self): if self.playerX >= GamePlayingDisplay.backdropSize[0]: self.playerX -= GamePlayingDisplay.backdropSize[0] self.backdropManager.endOfBackdropReached() def drawBackdrops(self, backdrops): self.drawImage(backdrops[0], self.getCoordinatesForCurrentBackdrop()) if self.isBackDropBoundaryVisible(): self.drawImage(backdrops[1], self.getCoordinatesForNextBackdrop()) def drawImage(self, image, coordinates): self.screen.blit(image, coordinates) def isBackDropBoundaryVisible(self): return self.playerX >= GamePlayingDisplay.backdropSize[0] - GuiConfig.screenSize[0] def getCoordinatesForCurrentBackdrop(self): return (-1 * self.playerX, 0) def getCoordinatesForNextBackdrop(self): return (GamePlayingDisplay.backdropSize[0] - self.playerX, 0) def drawScore(self): self.drawScoreBorder() self.drawScoreCounter() def drawScoreBorder(self): self.drawImage(GamePlayingDisplay.scoreBorderImage, (0, 0)) def drawScoreCounter(self): self.drawImage(self.getScoreNumberImage(), GamePlayingDisplay.scoreDrawCoords) def getScoreNumberImage(self): scoreString = self.getScoreAsFormattedString() return GamePlayingDisplay.scoreFont.render(scoreString, True, GamePlayingDisplay.scoreFontColor) def getScoreAsFormattedString(self): return '{0:08d}'.format(self.score) def drawHealth(self): if self.healthQuery != None: if self.healthQuery() > 0: health = self.healthQuery() index = floor(health/20) index = 4 if index==5 else index color = GuiConfig.healthDrawColors[index] healthRect = ( GuiConfig.healthMaxX-(health*2), GuiConfig.healthMinY, health*2, GuiConfig.healthMaxY-GuiConfig.healthMinY) self.screen.fill(color, healthRect)