def genGameOverOverlay(self, data): """Generates the objects neccessary for the game over screen""" self.gameOverStuffSurfs = [] self.gameOverStuffRects = [] surf, rect = ui.genText('GAME OVER', (0, 0), data.yellow, ui.MEGAFONT) rect.midbottom = (data.WINDOWWIDTH / 2, data.WINDOWHEIGHT / 2 - 20) self.gameOverStuffSurfs.append(surf) self.gameOverStuffRects.append(rect) surf, rect = ui.genText('score %s' % (self.lastEndScore), (0, 0), data.white, ui.BASICFONT) rect.bottomright = (data.WINDOWWIDTH / 2 - 10, data.WINDOWHEIGHT / 2) self.gameOverStuffSurfs.append(surf) self.gameOverStuffRects.append(rect) surf, rect = ui.genText('high score %s' % (self.highScore), (0, 0), data.white, ui.BASICFONT) rect.bottomleft = (data.WINDOWWIDTH / 2 + 10, data.WINDOWHEIGHT / 2) self.gameOverStuffSurfs.append(surf) self.gameOverStuffRects.append(rect) surf, rect = ui.genText('press any key to continue', (0, 0), data.lightgrey, ui.BASICFONT) rect.midbottom = (data.WINDOWWIDTH / 2 + 10, data.WINDOWHEIGHT / 2 + 50) self.gameOverStuffSurfs.append(surf) self.gameOverStuffRects.append(rect)
def update(self, data, dt): data.gameSurf.fill(data.grey) data.screen.fill(data.grey) data.spotlights.update(data) data.buildings.update(data) data.particleSpawners.update(data) data.particles.update(data) if not self.gameOver: data.AAguns.update(data) data.bullets.update(data) if time.time() - self.lastBomberTime > self.timeTillNewBomber or len( data.bombers) == 0: Bomber(data, random.randint(0, 1), random.randint(50, 250)) self.timeTillNewBomber = random.uniform(self.minBomberInterval, self.maxBomberInterval) self.lastBomberTime = time.time() if self.minBomberInterval > self.lowestEverBomberSpawnInterval: self.minBomberInterval -= self.learningCurve self.maxBomberInterval -= self.learningCurve data.bombers.update(data) data.bombs.update(data) data.screen.blit( data.gameSurf, (data.screenShakeOffset[0], data.screenShakeOffset[1])) data.updateScreenshake() # DISPLAY SCORE if not self.gameOver: if data.score != self.lastScore: self.scoreSurf, self.scoreRect = ui.genText( 'SCORE %s' % (data.score), (0, 0), data.white, ui.BASICFONT) self.scoreRect.topright = (data.WINDOWWIDTH - 10, 10) data.screen.blit(self.scoreSurf, self.scoreRect) self.lastScore = data.score if not self.gameOver: self.checkForGameOver(data) if self.gameOver: self.showGameOverOverlay(data) if len( data.input.unpressedKeys ) > 0: # start a new game if a or mouse button key is pressed self.gameOver = False self.newGame(data)
def genGameOverOverlay(self, data): """Generates the objects neccessary for the game over screen""" self.gameOverStuffSurfs = [] self.gameOverStuffRects = [] surf, rect = ui.genText('GAME OVER', (0, 0), data.yellow, ui.MEGAFONT) rect.midbottom = (data.WINDOWWIDTH / 2, data.WINDOWHEIGHT / 2 - 20) self.gameOverStuffSurfs.append(surf) self.gameOverStuffRects.append(rect) surf, rect = ui.genText('score %s' %(self.lastEndScore), (0, 0), data.white, ui.BASICFONT) rect.bottomright = (data.WINDOWWIDTH / 2 - 10, data.WINDOWHEIGHT / 2) self.gameOverStuffSurfs.append(surf) self.gameOverStuffRects.append(rect) surf, rect = ui.genText('high score %s' %(self.highScore), (0, 0), data.white, ui.BASICFONT) rect.bottomleft = (data.WINDOWWIDTH / 2 + 10, data.WINDOWHEIGHT / 2) self.gameOverStuffSurfs.append(surf) self.gameOverStuffRects.append(rect) surf, rect = ui.genText('press any key to continue', (0, 0), data.lightgrey, ui.BASICFONT) rect.midbottom = (data.WINDOWWIDTH / 2 + 10, data.WINDOWHEIGHT / 2 + 50) self.gameOverStuffSurfs.append(surf) self.gameOverStuffRects.append(rect)
def __init__(self): self.coderImg = pygame.image.load('assets/ui/credits/coder.png').convert_alpha() self.coderRect = self.coderImg.get_rect() self.coderRect.midbottom = (my.HALFWINDOWWIDTH, 0) self.thanksSurf, self.thanksRect = ui.genText('With thanks to Mekire', (0, 0), my.WHITE, ui.BIGFONT) self.thanksRect.midtop = (my.HALFWINDOWWIDTH, my.WINDOWHEIGHT) self.backButton = ui.Button('Back', 0, (0, 0), 1, 1) self.backButton.rect.midtop = (my.HALFWINDOWWIDTH, my.WINDOWHEIGHT) self.soundsButton = ui.Button('Sounds courtesy of all these lovely people', 0, (0, 0), 1, 1) self.soundsButton.rect.midtop = (my.HALFWINDOWWIDTH, my.WINDOWHEIGHT) self.animateOut = False
def __init__(self): self.logoImg = pygame.image.load('assets/aedificus title and dude.png').convert_alpha() self.logoRect = self.logoImg.get_rect() self.logoRect.midtop = (my.HALFWINDOWWIDTH, -773) self.versionSurf, self.versionRect = ui.genText('Aedificus ' + str(my.VERSIONNUMBER), (0, 0), my.WHITE, ui.BIGFONT) self.versionRect.bottomright = (my.WINDOWWIDTH - ui.GAP, my.WINDOWHEIGHT + 20) self.playButton = ui.Button(' Play ', 0, (0, 0), 1, 2) self.playButton.rect.midtop = (my.HALFWINDOWWIDTH, my.WINDOWHEIGHT) self.quitButton = ui.Button(' Quit ', 0, (my.HALFWINDOWWIDTH - 100, my.WINDOWHEIGHT), 1, 1) self.creditsButton = ui.Button('Credits', 0, (0, my.WINDOWHEIGHT), 1, 1) self.creditsButton.rect.right = my.HALFWINDOWWIDTH + 100 self.animateOut = False
def update(self, data, dt): data.gameSurf.fill(data.grey) data.screen.fill(data.grey) data.spotlights.update(data) data.buildings.update(data) data.particleSpawners.update(data) data.particles.update(data) if not self.gameOver: data.AAguns.update(data) data.bullets.update(data) if time.time() - self.lastBomberTime > self.timeTillNewBomber or len(data.bombers) == 0: Bomber(data, random.randint(0, 1), random.randint(50, 250)) self.timeTillNewBomber = random.uniform(self.minBomberInterval, self.maxBomberInterval) self.lastBomberTime = time.time() if self.minBomberInterval > self.lowestEverBomberSpawnInterval: self.minBomberInterval -= self.learningCurve self.maxBomberInterval -= self.learningCurve data.bombers.update(data) data.bombs.update(data) data.screen.blit(data.gameSurf, (data.screenShakeOffset[0], data.screenShakeOffset[1])) data.updateScreenshake() # DISPLAY SCORE if not self.gameOver: if data.score != self.lastScore: self.scoreSurf, self.scoreRect = ui.genText('SCORE %s' %(data.score), (0, 0), data.white, ui.BASICFONT) self.scoreRect.topright = (data.WINDOWWIDTH - 10, 10) data.screen.blit(self.scoreSurf, self.scoreRect) self.lastScore = data.score if not self.gameOver: self.checkForGameOver(data) if self.gameOver: self.showGameOverOverlay(data) if len(data.input.unpressedKeys) > 0:# start a new game if a or mouse button key is pressed self.gameOver = False self.newGame(data)
pygame.init() pygame.display.set_caption('Lotto') my.screen.fill(my.BLUE) pygame.display.update() GAP = 5 IMGNAMES = ['cellBg', 'ball', 'ballHighlight', 'bgImg'] IMG = {} for name in IMGNAMES: IMG[name] = pygame.image.load('assets/%s.png' %(name)).convert_alpha() my.BALLIMG = [] for num in range(1, my.NUMBALLS + 1): textSurf, textRect = ui.genText(str(num), (0,0), my.BLACK, ui.FRANCOIS) textRect.center = my.HALFCELLSIZE ball = IMG['ball'].copy() ball.blit(textSurf, textRect) my.BALLIMG.append(ball) class Control: def __init__(self): self.main() def main(self): my.input = input.Input() self.runGame()
def __init__(self, data): self.surfs = [] self.rects = [] surf, rect = ui.genText('Londons Burning!', (0, 0), data.yellow, ui.MEGAFONT) rect.midbottom = (data.WINDOWWIDTH / 2, data.WINDOWHEIGHT / 2 - 50) self.surfs.append(surf) self.rects.append(rect) texts = [ 'Defend London from death from above!', 'Click to shoot the bombs out of the air', 'You cant directly shoot the bombers', 'Shoot the big bombs to ricochet them back', 'and blow up the bombers!', 'Press any key to continue' ] y = self.rects[0].bottom + 50 for text in texts: surf, rect = ui.genText(text, (0, 0), data.lightgrey, ui.BASICFONT) if text == 'Press any key to continue': surf, rect = ui.genText(text, (0, 0), data.white, ui.BASICFONT) rect.midbottom = (data.WINDOWWIDTH / 2, y) self.surfs.append(surf) self.rects.append(rect) y += rect.height + 20 textSurf1, textRect1 = ui.genText('music by eric skiff', (0, 0), data.lightgrey, ui.BASICFONT) textRect1.bottomright = (data.WINDOWWIDTH - 10, data.WINDOWHEIGHT - 10) self.surfs.append(textSurf1) self.rects.append(textRect1) self.musicCreditsRect = textRect1 textSurf2, textRect2 = ui.genText('created by adam binks', (0, 0), data.yellow, ui.BASICFONT) textRect2.bottomright = (data.WINDOWWIDTH - 10, textRect1.top - 5) self.surfs.append(textSurf2) self.rects.append(textRect2) logoSurf = data.loadImage('assets/ui/jellyberg.png') logoRect = logoSurf.get_rect(bottomright=(data.WINDOWWIDTH - 10, textRect2.top - 5)) self.surfs.append(logoSurf) self.rects.append(logoRect) self.jellybergCreditsRects = [textRect2, logoRect] bombImg = data.loadImage('assets/enemies/superBomb.png', 14) bombRect = bombImg.get_rect(midbottom=(data.WINDOWWIDTH / 2, self.rects[0].top - 50)) self.surfs.append(bombImg) self.rects.append(bombRect) self.musicSurf = {} self.musicSurf[1] = data.loadImage('assets/ui/musicON.png') self.musicSurf[0] = data.loadImage('assets/ui/musicOFF.png') self.musicRect = self.musicSurf[0].get_rect( topright=(data.WINDOWWIDTH - 10, 10)) self.musicMuted = False self.sfxSurf = {} self.sfxSurf[1] = data.loadImage('assets/ui/sfxON.png') self.sfxSurf[0] = data.loadImage('assets/ui/sfxOFF.png') self.sfxRect = self.sfxSurf[0].get_rect(topright=(self.musicRect.left - 5, 10))
def __init__(self, data): self.surfs = [] self.rects = [] surf, rect = ui.genText('Londons Burning!', (0, 0), data.yellow, ui.MEGAFONT) rect.midbottom = (data.WINDOWWIDTH / 2, data.WINDOWHEIGHT / 2 - 50) self.surfs.append(surf) self.rects.append(rect) texts = ['Defend London from death from above!', 'Click to shoot the bombs out of the air', 'You cant directly shoot the bombers', 'Shoot the big bombs to ricochet them back', 'and blow up the bombers!', 'Press any key to continue'] y = self.rects[0].bottom + 50 for text in texts: surf, rect = ui.genText(text, (0, 0), data.lightgrey, ui.BASICFONT) if text == 'Press any key to continue': surf, rect = ui.genText(text, (0, 0), data.white, ui.BASICFONT) rect.midbottom = (data.WINDOWWIDTH / 2, y) self.surfs.append(surf) self.rects.append(rect) y += rect.height + 20 textSurf1, textRect1 = ui.genText('music by eric skiff', (0, 0), data.lightgrey, ui.BASICFONT) textRect1.bottomright = (data.WINDOWWIDTH - 10, data.WINDOWHEIGHT - 10) self.surfs.append(textSurf1) self.rects.append(textRect1) self.musicCreditsRect = textRect1 textSurf2, textRect2 = ui.genText('created by adam binks', (0, 0), data.yellow, ui.BASICFONT) textRect2.bottomright = (data.WINDOWWIDTH - 10, textRect1.top - 5) self.surfs.append(textSurf2) self.rects.append(textRect2) logoSurf = data.loadImage('assets/ui/jellyberg.png') logoRect = logoSurf.get_rect(bottomright = (data.WINDOWWIDTH - 10, textRect2.top - 5)) self.surfs.append(logoSurf) self.rects.append(logoRect) self.jellybergCreditsRects = [textRect2, logoRect] bombImg = data.loadImage('assets/enemies/superBomb.png', 14) bombRect = bombImg.get_rect(midbottom = (data.WINDOWWIDTH / 2, self.rects[0].top - 50)) self.surfs.append(bombImg) self.rects.append(bombRect) self.musicSurf = {} self.musicSurf[1] = data.loadImage('assets/ui/musicON.png') self.musicSurf[0] = data.loadImage('assets/ui/musicOFF.png') self.musicRect = self.musicSurf[0].get_rect(topright = (data.WINDOWWIDTH - 10, 10)) self.musicMuted = False self.sfxSurf = {} self.sfxSurf[1] = data.loadImage('assets/ui/sfxON.png') self.sfxSurf[0] = data.loadImage('assets/ui/sfxOFF.png') self.sfxRect = self.sfxSurf[0].get_rect(topright = (self.musicRect.left - 5, 10))
def update(self): my.input.get() my.screen.fill(my.PASTELBLUE) for slider in self.sliders: if self.sliderAlpha < 255: slider.surf.set_alpha(self.sliderAlpha) if not self.animateOut: self.sliderAlpha += 15 value = slider.update() if slider.label == 'Number of mountains': my.NUMMOUNTAINS = value elif slider.label == 'Number of rivers': my.NUMRIVERS = value elif slider.label == 'Tree density': my.TREEFREQUENCY = 200 - value self.embarkButton.simulate(my.input) if self.embarkButton.isClicked: self.animateOut = 'play' self.loadingSurf, self.loadingRect = ui.genText('GENERATING WORLD', (0,0), my.WHITE, ui.MEGAFONT) self.loadingRect.center = (my.HALFWINDOWWIDTH, my.HALFWINDOWHEIGHT) self.backButton.simulate(my.input) if self.backButton.isClicked: self.animateOut = 'main' my.screen.blit(self.logoImg, self.logoRect) # ANIMATE if self.animateOut: # animate out animateDone = True if self.backButton.rect.y < my.WINDOWHEIGHT - 1: animateDone = False self.backButton.rect.y += (my.WINDOWHEIGHT + 50 - self.backButton.rect.y) * 0.1 self.embarkButton.rect.y = self.backButton.rect.y if self.logoRect.y > -160: animateDone = False self.logoRect.y -= math.fabs(-180 - self.logoRect.y) * 0.1 if self.animateOut == 'play': my.screen.fill(my.DARKBLUE, pygame.Rect(self.loadingRect.x - 20, self.loadingRect.y - 20, self.loadingRect.width + 40, self.loadingRect.height + 40)) my.screen.blit(self.loadingSurf, self.loadingRect) if self.sliderAlpha > 0: self.sliderAlpha -= 15 else: # animate in if self.backButton.rect.y > my.HALFWINDOWWIDTH - 100: self.backButton.rect.y -= math.fabs(my.WINDOWHEIGHT * 0.75 - self.backButton.rect.y) * 0.1 self.embarkButton.rect.y = self.backButton.rect.y if self.logoRect.y < 30: self.logoRect.y += math.fabs(30 - self.logoRect.y) * 0.1 if self.animateOut and animateDone: if self.animateOut == 'play': my.gameRunning = True my.transition = 'begin' my.lastSurf = my.screen.copy().convert() return 'play' return 'main'
def update(self, deltaTime): my.UIhover = False my.input.get() updateCheats() if pygame.locals.K_SPACE in my.input.unpressedKeys: my.paused = not my.paused self.screenCache = my.screen.copy() self.pauseSurf = pygame.Surface((my.WINDOWWIDTH, my.WINDOWHEIGHT)) self.pauseTextSurf, self.pauseTextRect = ui.genText('PAUSED (press space to unpause)', (10, 10), my.WHITE, ui.MEGAFONT) self.pauseTextRect.center = (int(my.WINDOWWIDTH / 2), int(my.WINDOWHEIGHT / 2)) if pygame.locals.K_m in my.input.unpressedKeys: my.muted = not my.muted if my.muted: ui.StatusText('All sounds muted (M to unmute)', None, True) if not my.muted: ui.StatusText('All earmeltingly beautiful sounds activated', None, True) # if pygame.locals.K_p in my.input.unpressedKeys: # my.FPS = random.choice([60, 500]) # ui.StatusText('FPS: %s' %(my.FPS)) if not my.paused: self.pauseAlpha = 0 my.surf.blit(my.map.surf, my.camera.viewArea, my.camera.viewArea) my.camera.update(deltaTime) my.ticks += 1 for i in range(1, 20): if my.ticks % i == 0: my.tick[i] = True else: my.tick[i] = False my.dt = deltaTime self.sunx += my.SUNMOVESPEED if self.sunx > my.MAPWIDTH: self.sunx = -30 my.sunPos = (self.sunx, my.MAPHEIGHT + 50) try: my.mission = my.MISSIONS[my.currentMissionNum] except IndexError: if not my.DEBUGMODE and my.mission is not None: ui.StatusText('Congratulations, you completed all missions!') my.mission = None my.map.update() my.eventHandler.update(deltaTime) building.updateBuildings(deltaTime) item.update() mob.updateMobs(deltaTime) ui.handleTooltips() my.hud.updateWorldUI() my.screen.blit(my.surf, (0,0), my.camera.viewArea) my.hud.updateHUD(deltaTime) else: if self.pauseAlpha < 150: self.pauseAlpha += 600 * deltaTime self.pauseSurf.fill(my.DARKGREY) self.pauseSurf.set_alpha(self.pauseAlpha) self.pauseSurf.blit(self.pauseTextSurf, self.pauseTextRect) my.screen.blit(self.screenCache, (0, 0)) my.screen.blit(self.pauseSurf, (0, 0)) for key in my.resources.keys(): # DON'T FIX THE BUGS, HIDE 'EM! if my.resources[key] < 0: my.resources[key] = 0
def update(self, deltaTime): my.UIhover = False my.input.get() updateCheats() if pygame.locals.K_SPACE in my.input.unpressedKeys: my.paused = not my.paused self.screenCache = my.screen.copy() self.pauseSurf = pygame.Surface((my.WINDOWWIDTH, my.WINDOWHEIGHT)) self.pauseTextSurf, self.pauseTextRect = ui.genText( 'PAUSED (press space to unpause)', (10, 10), my.WHITE, ui.MEGAFONT) self.pauseTextRect.center = (int(my.WINDOWWIDTH / 2), int(my.WINDOWHEIGHT / 2)) if pygame.locals.K_m in my.input.unpressedKeys: my.muted = not my.muted if my.muted: ui.StatusText('All sounds muted (M to unmute)', None, True) if not my.muted: ui.StatusText('All earmeltingly beautiful sounds activated', None, True) # if pygame.locals.K_p in my.input.unpressedKeys: # my.FPS = random.choice([60, 500]) # ui.StatusText('FPS: %s' %(my.FPS)) if not my.paused: self.pauseAlpha = 0 my.surf.blit(my.map.surf, my.camera.viewArea, my.camera.viewArea) my.camera.update(deltaTime) my.ticks += 1 for i in range(1, 20): if my.ticks % i == 0: my.tick[i] = True else: my.tick[i] = False my.dt = deltaTime self.sunx += my.SUNMOVESPEED if self.sunx > my.MAPWIDTH: self.sunx = -30 my.sunPos = (self.sunx, my.MAPHEIGHT + 50) try: my.mission = my.MISSIONS[my.currentMissionNum] except IndexError: if not my.DEBUGMODE and my.mission is not None: ui.StatusText( 'Congratulations, you completed all missions!') my.mission = None for key in my.resources.keys(): if my.resources[key] < 0: my.resources[key] = 0 my.map.update() my.eventHandler.update(deltaTime) building.updateBuildings(deltaTime) item.update() mob.updateMobs(deltaTime) ui.handleTooltips() my.hud.updateWorldUI() my.screen.blit(my.surf, (0, 0), my.camera.viewArea) my.hud.updateHUD(deltaTime) if my.paused: if self.pauseAlpha < 150: self.pauseAlpha += 600 * deltaTime self.pauseSurf.fill(my.DARKGREY) self.pauseSurf.set_alpha(self.pauseAlpha) self.pauseSurf.blit(self.pauseTextSurf, self.pauseTextRect) my.screen.blit(self.screenCache, (0, 0)) my.screen.blit(self.pauseSurf, (0, 0))