def drawhelp(self, name, pos): if Help.has_key(name): text = Help[name] lines = text.splitlines() for x in range(1, len(lines)): if lines[x] == '-': lines[x] = "\n\n" title = lines[0] text = ' '.join(lines[1:]) else: title = name text = "no help available" self.img = fonts[0].textbox((255, 240, 200), text, 260, (50, 100, 50), 30) r = self.img.get_rect() titleimg, titlepos = fonts[1].text((255, 240, 200), title, (r.width / 2, 10)) self.img.blit(titleimg, titlepos) r.topleft = pos r = r.clamp(game.arena) alphaimg = pygame.Surface(self.img.get_size()) alphaimg.fill((50, 100, 50)) alphaimg.set_alpha(192) gfx.surface.blit(alphaimg, r) self.img.set_colorkey((50, 100, 50)) self.rect = gfx.surface.blit(self.img, r) gfx.dirty(self.rect)
def run(self): r = self.background(self.images[0][1]) gfx.dirty(r) self.moveship() gfx.updatestars(self.background, gfx) if not self.done: self.drawlist() for img in self.images: r = gfx.surface.blit(img[0], img[1]) gfx.dirty(r) else: if gfx.rect.colliderect(self.images[0][1]) and not self.aborted: if self.current[0] >= 0: g = self.gamelist[self.current[0]] r = gfx.surface.blit(g[1][0], g[1][1]) gfx.dirty(r) for img in self.images: r = gfx.surface.blit(img[0], img[1]) gfx.dirty(r) else: self.clearlist() if self.aborted: game.handler = self.prevhandler else: game.handler = gameplay.GamePlay(self.prevhandler) for img in self.images[1:]: r = self.background(img[1]) gfx.dirty(r)
def drawlist(self): """ Desenha as opcoes do menu """ for vals in self.gamelist: for v in vals: gfx.dirty(gfx.surface.blit(*v))
def starting(self): """ Funcao de abertura do menu: Carrega a musica principal e desenha o logo do jogo. """ snd.playmusic('aster2_sw.xm') gfx.dirty(gfx.surface.blit(self.logo, self.logorect))
def cleanup(self): """ Limpa toda a area do jogo, quando deve-se finalizar o jogo ou voltar para a tela de opcoes. """ r = self.bgfill(0, (0, 0, game.size[0], game.size[1])) gfx.dirty(r)
def draw(self, gfx): percent = 1.0 - (self.clocks / self.life) c1 = (percent * 0.4 + 0.2) * 255 c2 = c1 / 4 color = (c1, c2, c2) pygame.draw.line(gfx.surface, color, self.start, self.end, 3) gfx.dirty(self.rect)
def starting(self): if self.startmusic: self.startmusic = 0 self.song = random.choice(Songs) snd.playmusic(*self.song) self.songtime = pygame.time.get_ticks() gfx.dirty(self.background(gfx.rect))
def starting(self): snd.playmusic('aster2_sw.xm') gfx.dirty(gfx.surface.blit(self.logo, self.logorect)) gfx.dirty(gfx.surface.blit(self.bigship, self.bigshiprect)) self.fame = self.renderhall()
def gameover_start(self): snd.play("gameover") self.ticks = 0 if not self.gamewon: if self.curwave: for wave in self.curwave: for baddy in wave.enemies: baddy.dead = 1 self.background(baddy.lastrect) gfx.dirty(baddy.rect) for x in self.popobjs: x.dead = 1 for x in self.powerupobjs: x.dead = 1 B = self.background for l in self.objlists: for o in l: o.erase(B) if self.map: self.map.erase(B) if self.curwave: [wave.erase(B) for wave in self.curwave] self.runobjects(self.objlists) self.cleanup()
def drawhelp(self, name, pos): if Help.has_key(name): text = Help[name] lines = text.splitlines() for x in range(1, len(lines)): if lines[x] == '-': lines[x] = "\n\n" title = lines[0] text = ' '.join(lines[1:]) else: title = name text = "no help available" self.img = fonts[0].textbox((255, 240, 200), text, 260, (50, 100, 50), 30) r = self.img.get_rect() titleimg, titlepos = fonts[1].text((255, 240, 200), title, (r.width/2, 10)) self.img.blit(titleimg, titlepos) r.topleft = pos r = r.clamp(game.arena) alphaimg = pygame.Surface(self.img.get_size()) alphaimg.fill((50, 100, 50)) alphaimg.set_alpha(192) gfx.surface.blit(alphaimg, r) self.img.set_colorkey((50, 100, 50)) self.rect = gfx.surface.blit(self.img, r) gfx.dirty(self.rect)
def clearlist(self): """ Apaga a lista de preferencias (atualizacao grafica do menu) """ for vals in self.gamelist: for v in vals: gfx.dirty(self.background(v[1]))
def quit(self): """ Funcao de saida do menu de creditos """ gfx.dirty(self.background(gfx.rect)) game.handler = self.prevhandler self.done = 1 snd.play('select_choose')
def quit(self): snd.play('chimeout') if snd.music: snd.tweakmusicvolume() if self.rect: r = self.rect.inflate(2, 2) r = self.prevhandler.background(r) gfx.dirty(r) game.handler = self.prevhandler self.done = 1
def starting(self): """ Funcao de pre-inicializacao do jogo. """ if self.startmusic: self.startmusic = 0 self.song = random.choice(Songs) snd.playmusic(*self.song) self.songtime = pygame.time.get_ticks() gfx.dirty(self.background(gfx.rect))
def draw(self, gfx): frame = int(self.rotate)%self.numframes if self.popped: img = popimages[int(self.popped)] elif self.firsttouch > 0.0: img = self.imglists[0][frame] else: img = self.imglists[self.touches][frame] r = gfx.surface.blit(img, self.rect) gfx.dirty(r)
def run(self): if self.done: return for line in self.text: img, r = line gfx.surface.blit(img, r) gfx.dirty(r) ratio = game.clockticks / 25 speedadjust = max(ratio, 1.0) self.time += speedadjust
def erase(self, background): """ Limpa uma area do mapa. """ if self.lastrect: background(self.lastrect) gfx.dirty(self.lastrect) else: background(self.rect) gfx.dirty(self.rect)
def clearitem(self, item, dirty=0): """ Limpa a area de desenho do item do menu. Parametros: item - item do menu dirty - se houve atualizacao grafica do item do menu (necessario para atualizar a tela) """ r = self.background(item.rect) if dirty: gfx.dirty(r)
def draw(self, gfx): frame = int(self.rotate) % self.numframes if self.popped: img = popimages[int(self.popped)] elif self.firsttouch > 0.0: img = self.imglists[0][frame] else: img = self.imglists[self.touches][frame] r = gfx.surface.blit(img, self.rect) gfx.dirty(r)
def quit(self): import gamemenu gfx.dirty(self.background(gfx.rect)) for b in self.blocks: r = b[0].get_rect().move(b[1]) gfx.dirty(self.background(r)) if load_finished_status >= 0: game.handler = gamemenu.GameMenu(self.prevhandler) else: game.handler = self.prevhandler
def recalcname(self): length = len(game.player.name) for x in range(game.name_maxlength): l = nameletters[x] r = self.background(l[0]) gfx.dirty(r) if x < length: if not l[2]: l[2] = thefont.render(game.player.name[x], 1, (200, 250, 200), (0, 0, 0)).convert() l[2].set_colorkey((0, 0, 0), RLEACCEL) else: l[2] = None
def recalcname(self): length = len(game.player.name) for x in range(game.name_maxlength): l = nameletters[x] r = self.background(l[0]) gfx.dirty(r) if x < length: if not l[2]: l[2] = thefont.render(game.player.name[x], 1, (200, 250, 200), (0, 0, 0)).convert() l[2].set_colorkey((0, 0, 0), pygame.RLEACCEL) else: l[2] = None
def gameover_start(self): snd.play("gameover") self.ticks = 5 if not self.gamewon: self.textobjs.append(objtext.Text("Game Over")) for g in self.guardobjs: if not g.killed: g.killed = 1 explode = objexplode.Explode(g.rect.center) self.staticobjs.append(explode) # argh, force a cleanup self.background(g.lastrect) gfx.dirty(g.lastrect)
def levelup_tick(self): if not self.donelevelup: c = levelupcolors[self.ticks % 2] self.ticks += 1 img, r = font.text(c, "Level Up!", (game.size[0] / 2 - 15, game.size[1] / 2 - 30), bgd=(0, 67, 171)) r = gfx.surface.blit(img, r) gfx.dirty(r) if self.ticks == 100: self.donelevelup = 1 self.ticks = 0 self.cleanup() self.changestate("levelstart") self.levelchanged = 0
def drawitem(self, item, lit): if not lit: gfx.surface.blit(item.img_off, item.smallrect) else: lite = images[0] glowval = (math.sin(self.glow) + 2.5) * 50.0 if self.switchclock == 2: glowval /= 2 if gfx.surface.get_bytesize()>1: lite.set_alpha(glowval) gfx.surface.blit(lite, item.rect) gfx.surface.blit(item.img_on, item.rect) gfx.dirty(item.rect)
def gameover_start(self): snd.play('gameover') self.ticks = 5 if not self.gamewon: self.textobjs.append(objtext.Text('Game Over')) for g in self.guardobjs: if not g.killed: g.killed = 1 explode = objexplode.Explode(g.rect.center) self.staticobjs.append(explode) #argh, force a cleanup self.background(g.lastrect) gfx.dirty(g.lastrect)
def run(self): if self.rect: self.background(self.rect) gfx.updatestars(self.background, gfx) gfx.dirty(gfx.surface.blit(self.img_logo, (30, 25))) gfx.dirty(gfx.surface.blit(self.img_powered, (510, 490))) for b in self.blocks: gfx.dirty(gfx.surface.blit(*b)) bar = pygame.Rect(self.rect) if load_total: bar.width = (float(load_current)/float(load_total)) * bar.width gfx.surface.fill((5, 50, 5), bar) r = pygame.Rect(self.rect.left, self.rect.bottom-2, self.rect.width, 2) gfx.surface.fill((20, 80, 30), r) gfx.surface.blit(self.text, self.textrect) gfx.dirty(self.rect) now = pygame.time.get_ticks() #we let the screen stay up for at about 1 second if not self.thread.isAlive(): if load_finished_status >= 0: if now-self.starttime > 1200: self.quit() else: if not self.handlederror: msg = ('Fatal Error Loading Resources', load_finished_type, load_finished_message, 'Press Any Key To Quit') self.buildblock(msg) self.handlederror = 1 if self.gotfinishinput: self.quit()
def run(self): if self.rect: self.background(self.rect) gfx.updatestars(self.background, gfx) gfx.dirty(gfx.surface.blit(self.img_logo, (30, 25))) gfx.dirty(gfx.surface.blit(self.img_powered, (510, 490))) for b in self.blocks: gfx.dirty(gfx.surface.blit(*b)) bar = Rect(self.rect) if load_total: bar.width = (float(load_current) / float(load_total)) * bar.width gfx.surface.fill((5, 50, 5), bar) r = Rect(self.rect.left, self.rect.bottom - 2, self.rect.width, 2) gfx.surface.fill((20, 80, 30), r) gfx.surface.blit(self.text, self.textrect) gfx.dirty(self.rect) now = pygame.time.get_ticks() #we let the screen stay up for at about 1 second if not self.thread.is_alive(): if load_finished_status >= 0: if now - self.starttime > 1200: self.quit() else: if not self.handlederror: msg = ('Fatal Error Loading Resources', load_finished_type, load_finished_message, 'Press Any Key To Quit') self.buildblock(msg) self.handlederror = 1 if self.gotfinishinput: self.quit()
def run(self): if self.needdraw: self.needdraw = 0 self.drawhelp(self.helpname, self.helppos) ratio = game.clockticks / 25 speedadjust = max(ratio, 1.0) self.time += speedadjust if not self.done: pts = (self.rect.topleft, self.rect.topright, self.rect.bottomright, self.rect.bottomleft) s = gfx.surface clr = 40, 80, 40 gfx.dirty(pygame.draw.line(s, clr, pts[0], pts[1])) gfx.dirty(pygame.draw.line(s, clr, pts[1], pts[2])) gfx.dirty(pygame.draw.line(s, clr, pts[2], pts[3])) gfx.dirty(pygame.draw.line(s, clr, pts[3], pts[0])) off = int(self.time * 0.9) r = 255 g = int(220 + math.cos(self.time * .2) * 30) b = int(180 + math.cos(self.time * .2) * 65) clr = r, g, b gfx.drawvertdashline(s, pts[0], pts[3], clr, 10, off) gfx.drawvertdashline(s, pts[1], pts[2], clr, 10, -off) gfx.drawhorzdashline(s, pts[0], pts[1], clr, 10, off) gfx.drawhorzdashline(s, pts[3], pts[2], clr, 10, -off)
def start(self): snd.play('explode', 1.0, 350) aliveguards = [] for g in self.state.guardobjs: if not g.killed: aliveguards.append(g) if aliveguards: g = random.choice(aliveguards) g.killed = 1 explode = objexplode.Explode(g.rect.center) self.state.staticobjs.append(explode) #argh, force a cleanup self.state.background(g.lastrect) gfx.dirty(g.lastrect)
def run(self): for cred in self.text: r = cred[1] self.background(r) gfx.dirty(r) ratio = game.clockticks / 25 speedadjust = max(ratio, 1.0) self.time += speedadjust gfx.updatestars(self.background, gfx) if not self.done: frame = int(self.time * .5) % len(self.r) surf = gfx.surface self.background(r.move(50, 400)) self.background(r.move(300, 400)) self.background(r.move(550, 400)) gfx.dirty(surf.blit(self.r[frame], (50, 400))) gfx.dirty(surf.blit(self.g[frame], (300, 400))) gfx.dirty(surf.blit(self.b[frame], (550, 400))) for cred, pos in self.text: gfx.surface.blit(cred, pos)
def quit(self): """ Funcao de saida da tela de apresentacao do jogo. """ import gamemenu gfx.dirty(self.background(gfx.rect)) for b in self.blocks: r = b[0].get_rect().move(b[1]) gfx.dirty(self.background(r)) if load_finished_status >= 0: game.handler = gamemenu.GameMenu(self.prevhandler) else: game.handler = self.prevhandler
def run(self): """ Loop de execucao deste handler. """ if self.rect: self.background(self.rect) gfx.dirty(gfx.surface.blit(self.img_logo, (30, 25))) gfx.dirty(gfx.surface.blit(self.img_powered, (510, 490))) for b in self.blocks: gfx.dirty(gfx.surface.blit(*b)) bar = Rect(self.rect) if load_total: bar.width = (float(load_current)/float(load_total)) * bar.width gfx.surface.fill((5, 50, 5), bar) r = Rect(self.rect.left, self.rect.bottom-2, self.rect.width, 2) gfx.surface.fill((20, 80, 30), r) gfx.surface.blit(self.text, self.textrect) gfx.dirty(self.rect) now = pygame.time.get_ticks() #Mantem a tela de apresentacao do jogo por 1 segundo if not self.thread.isAlive(): if load_finished_status >= 0: if now-self.starttime > 1200: self.quit() else: if not self.handlederror: msg = ('Fatal Error Loading Resources', load_finished_type, load_finished_message, 'Press Any Key To Quit') self.buildblock(msg) self.handlederror = 1 if self.gotfinishinput: self.quit()
def run(self): self.step += 0.5 self.starframe = (self.starframe + self.starinc) % 5 if not self.done: self.clearletter(self.letter, self.letter) else: for img in self.fontimages: self.clearletter(img, self.letter) gfx.updatestars(self.background, gfx) if not self.done: r = gfx.surface.blit(self.stars[self.starframe], self.starrect) gfx.dirty(r) for img in self.fontimages: self.drawletter(img, self.letter) for img in self.images: r = gfx.surface.blit(img[0], img[1]) gfx.dirty(r) self.drawname() else: for img in self.fontimages: gfx.dirty(img[1]) for img in self.images: r = self.background(img[1]) gfx.dirty(r) self.recalcname()
def getready_tick(self): self.ticks += 1 if not self.donegetready: img = getready_images[self.getreadyimage] r = img.get_rect() r = gfx.surface.blit(img, (game.size[0] / 2 - (r.width / 2), game.size[1] / 2 - (r.height / 2))) gfx.dirty(r) if not self.ticks % 40: self.getreadyimage = (self.getreadyimage + 1) % len(getready_images) if self.ticks == 200: self.donegetready = 1 self.ticks = 0 self.cleanup() else: self.changestate("gamestart")
def draw(self, gfx): if not self.active: r = self.drawsurface.fill((0, 67, 171), self.rect) gfx.dirty(r) else: if not self.dead: img = None frame = int(self.frame) % 3 if self.shield: img = shieldbg[self.shield-1] else: img = self.image[frame] self.drawsurface.blit(img, self.rect) gfx.dirty2(self.rect, self.lastrect) self.lastrect = Rect(self.rect)
def draw(self, gfx): if not self.active: r = self.drawsurface.fill((0, 67, 171), self.rect) gfx.dirty(r) else: if not self.dead: img = None frame = int(self.frame) % 3 if self.shield: img = shieldbg[self.shield - 1] else: img = self.image[frame] self.drawsurface.blit(img, self.rect) gfx.dirty2(self.rect, self.lastrect) self.lastrect = Rect(self.rect)
def levelup_tick(self): if not self.donelevelup: c = levelupcolors[self.ticks % 2] self.ticks += 1 img, r = font.text(c, 'Level Up!', (game.size[0] / 2 - 15, game.size[1] / 2 - 30), bgd=(0, 67, 171)) r = gfx.surface.blit(img, r) gfx.dirty(r) if self.ticks == 100: self.donelevelup = 1 self.ticks = 0 self.cleanup() self.changestate('levelstart') self.levelchanged = 0
def start(self): snd.play('explode', 1.0, 350) aliveguards = [] for g in self.state.guardobjs: if not g.killed: aliveguards.append(g) if aliveguards: g = random.choice(aliveguards) g.killed = 1 laser = objlaser.Laser(self.state.player.rect.center, g.rect.center) self.state.staticobjs.append(laser) explode = objexplode.Explode(g.rect.center) self.state.staticobjs.append(explode) #argh, force a cleanup self.state.background(g.lastrect) gfx.dirty(g.lastrect)
def drawitem(self, item, selected): """ Desenha um item do menu. Parametros: item - item do menu a desenhar. selected - item esta selecionado. """ if not selected: gfx.surface.blit(item.img, item.rect) gfx.dirty(item.rect) else: gfx.surface.blit(item.img, item.rect) gfx.dirty(item.rect) gfx.surface.blit(self.select, self.selectrect) self.last_selectrect = Rect(self.selectrect) gfx.dirty2(self.selectrect, self.last_selectrect)
def drawname(self): hicolor = (int((math.sin(self.step)+1)*50+80),)*3 locolor = 50, 50, 50 lolocolor = 25, 25, 25 curletter = len(game.player.name) for x in range(game.name_maxlength): l = nameletters[x] col = (x == curletter) and hicolor or locolor if l[2]: col = lolocolor r = gfx.surface.fill(col, l[1]) gfx.dirty(r) if l[2]: r = l[2].get_rect() r.centerx = l[0].centerx r.bottom = l[0].bottom r = gfx.surface.blit(l[2], r) gfx.dirty(r)
def drawhelp(self, name, pos): title = 'Paused' text = 'Press Any Key To Continue' self.img = fonts[0].textbox((255, 240, 200), text, 200, (50, 100, 50), 50) r = self.img.get_rect() titleimg, titlepos = fonts[1].text((255, 240, 200), title, (r.width//2, 10)) self.img.blit(titleimg, titlepos) r.topleft = pos r = r.clamp(game.arena) alphaimg = pygame.Surface(self.img.get_size()) alphaimg.fill((50, 100, 50)) alphaimg.set_alpha(192) gfx.surface.blit(alphaimg, r) self.img.set_colorkey((50, 100, 50)) self.rect = gfx.surface.blit(self.img, r) gfx.dirty(self.rect)