def __init__(self, m): self.model = m self.units = [unit.Unit(self.model, x, y) for x, y in self.model.conf.units] self.all_effects = pygame.sprite.Group() self.individual_effects = defaultdict(pygame.sprite.Group) self.all_walkers = pygame.sprite.Group() self.renderer = render.Renderer() self.renderer.draw(self.model) self.clock = pygame.time.Clock() # Win conditions self.win_duration_sec = self.model.conf.game["duration"] self.win_duration_frames = self.model.conf.game["duration"] * FRAMES_PER_SECOND self.win_living_min_threshold = self.model.conf.game["living_min_threshold"] self.font = bont.Tiny() self.news_font = data.load_font(*NEWS_FONT) self.over_font = data.load_font(*OVER_FONT) self.selection = None self.last_selection = None self.need_destination = False self.pending_cmd = None self.buttons = buttons.ButtonRegistry() self.buttons.add_sprite_button("Cleanse", self.send_reap, 150, 160) self.buttons.add_sprite_button("Burn", self.send_burn, 150, 180) self.buttons.add_sprite_button("Block", self.send_block, 205, 160) self.buttons.add_sprite_button("Cancel", self.cancel_selection, 205, 180) self.advisor_face = data.load_image("faces/6p.png") self.frame = 0 self.newsflash = None # don't fire a newsflash right away self.next_newsflash = 5 * FRAMES_PER_SECOND self.hover_info = hover_info.HoverInfo() self.over = None self.paused = False self.final_click = False self.voice_chan = None self.select_voice_iter = itertools.cycle(self.select_voices) music.enqueue("minor1")
def __init__(self, game, name, index, config=None): super(HowtoScene, self).__init__(game, name, index, config) self.bg_text = data.load_image('howtoplay.png') self.bg_text = pygame.transform.scale(self.bg_text, (534, 400)) self.bg_textrect = self.bg_text.get_rect() fontText = data.load_font(data.FONT_MAIN, 20) fontText.set_bold(True) texts = [{ 'text': '1) The boss generates 1 to 9 sounds', 'top': 30, 'left': 50 }, { 'text': '2) You must copy the generated sequence', 'top': 250, 'left': 20 }] for phrase in texts: text = fontText.render(phrase['text'], True, (255, 255, 255)) textrect = text.get_rect() textrect.top = phrase['top'] textrect.left = phrase['left'] self.bg_text.blit(text, textrect) self.text = data.render_text(data.FONT_MAIN, 37, 'Push the button !', (255, 255, 255)) self.textrect = self.text.get_rect() # bg_text.blit(self.text, self.textrect) self.background = data.load_image('credits.png') self.music_bg = data.load_sound('credits.ogg')
def __init__(self, game, name, index, config=None): super(HowtoScene, self).__init__(game, name, index, config) self.bg_text = data.load_image('howtoplay.png') self.bg_text = pygame.transform.scale(self.bg_text, (534, 400)) self.bg_textrect = self.bg_text.get_rect() fontText = data.load_font(data.FONT_MAIN, 20) fontText.set_bold(True) texts = [ {'text':'1) The boss generates 1 to 9 sounds', 'top':30, 'left':50}, {'text':'2) You must copy the generated sequence', 'top':250, 'left':20} ] for phrase in texts: text = fontText.render(phrase['text'], True, (255, 255, 255)) textrect = text.get_rect() textrect.top = phrase['top'] textrect.left = phrase['left'] self.bg_text.blit(text, textrect) self.text = data.render_text(data.FONT_MAIN, 37, 'Push the button !', (255, 255, 255)) self.textrect = self.text.get_rect() # bg_text.blit(self.text, self.textrect) self.background = data.load_image('credits.png') self.music_bg = data.load_sound('credits.ogg')
def __init__(self, size, menus): pygame.surface.Surface.__init__(self, size) self.menus = menus self.menusRect = [] self.current = 0 self.menu = None self.menurect = None self.font = data.load_font(data.FONT_TITLE, 45) self.set_colorkey((0, 0, 0)) # Transparent background
def get_font(font_code, size): ''' Devuelve la fuente asociado con el codigo de fuente y tamaño dado. ''' __check_initialize() if __fonts.has_key((font_code, size)): print "Fuente " + font_code + " con tamaño " + str(size) + " ya cargada" else: print "Fuente " + font_code + " con tamaño " + str(size) + " no estaba cargada aún, cargando..." __fonts[(font_code, size)] = data.load_font(__fonts_info[font_code], size) return __fonts[(font_code, size)]
def draw(self, screen): screen.blit(self.background, (0, 0)) fontTitle = data.load_font(data.FONT_TITLE, 45) fontTitle.set_underline(True) title = fontTitle.render('How to play', True, (255, 255, 255)) titlerect = title.get_rect() titlerect.centerx = screen.get_rect().centerx titlerect.top = 30 screen.blit(title, titlerect) self.bg_textrect.top = 100 self.bg_textrect.centerx = screen.get_rect().centerx screen.blit(self.bg_text, self.bg_textrect)
def get_font(font_code, size): ''' @brief Función que devuelve la fuente asociado con el codigo de fuente y tamaño dado. @param font_code Código de la fuente. @param size Tamaño de la fuente. @return Referencia a la fuente cargada ''' __check_initialize() if __fonts.has_key((font_code, size)): print "Fuente " + font_code + " con tamaño " + str(size) + " ya cargada" else: print "Fuente " + font_code + " con tamaño " + str(size) + " no estaba cargada aún, cargando..." __fonts[(font_code, size)] = data.load_font(__fonts_info[font_code], size) return __fonts[(font_code, size)]
def get_font(font_code, size): ''' @brief Función que devuelve la fuente asociado con el codigo de fuente y tamaño dado. @param font_code Código de la fuente. @param size Tamaño de la fuente. @return Referencia a la fuente cargada ''' __check_initialize() if __fonts.has_key((font_code, size)): pass else: __fonts[(font_code, size)] = data.load_font(__fonts_info[font_code], size) return __fonts[(font_code, size)]
def __init__(self, game, name, index, config=None): super(CreditsScene, self).__init__(game, name, index, config) self.text = data.render_text(data.FONT_TITLE, 37, 'Thanks for Playing', (255, 255, 255)) self.textrect = self.text.get_rect() font = data.load_font(data.FONT_MAIN, 17) names = ('cyqui', 'gleuh', 'greg0ire', 'joksnet') self.designLabel = data.render_text(data.FONT_TITLE, 23, 'Design:', (255, 255, 127)) self.designLabelRect = self.designLabel.get_rect() self.design = data.render_text(data.FONT_MAIN, 21, 'tocab', (255, 255, 255)) self.designRect = self.design.get_rect() self.musicLabel = data.render_text(data.FONT_TITLE, 23, 'Music:', (255, 255, 127)) self.musicLabelRect = self.musicLabel.get_rect() self.music = data.render_text(data.FONT_MAIN, 21, 'TOTOleHero', (255, 255, 255)) self.musicRect = self.music.get_rect() self.namesLabel = data.render_text(data.FONT_TITLE, 23, 'Developers', (255, 255, 127)) self.namesLabelRect = self.namesLabel.get_rect() self.names = [] for name in names: rend = font.render(name, True, (255, 255, 255)) rect = rend.get_rect() self.names.append((rend, rect)) self.team = data.render_text(data.FONT_TITLE, 37, 'The Bouba Team', (60, 255, 60)) self.teamRect = self.team.get_rect() self.background = data.load_image('credits.png') self.music_bg = data.load_sound('credits.ogg')
def run(self): while self.running: self.clock.tick(self.config['framerate']) if not self.nextLoopScene == None: self.doChange() self.nextLoopScene = None self.nextLoopSceneReset = False if not self.scene: self.end() for event in pygame.event.get(): if event.type == pygame.QUIT: self.end() elif event.type == pygame.KEYDOWN and event.key == pygame.K_F11: if self.screenMode != 0: self.screenMode = 0 else: self.screenMode = pygame.FULLSCREEN self.screen = pygame.display.set_mode(self.config['size'],self.screenMode) else: self.scene.handleEvent(event) #self.screen.fill((0, 0, 0)) self.scene.update() self.scene.draw(self.screen) if self.config['show_fps']: font = data.load_font(data.FONT_MAIN, 23) fps = '%.1f' % self.clock.get_fps() text = font.render(fps, False, (255, 0, 255)) rect = text.get_rect() rect.right = self.screen.get_width() - 5 rect.bottom = self.screen.get_height() - 5 self.screen.blit(text, rect) pygame.display.flip()
def __init__(self, game, name, index, config=None): super(LevelScene, self).__init__(game, name, index, config) self.font = data.load_font(data.FONT_FIX, 23) self.count = config['count'] if 'count' in config else 9 self.delta = config['delta'] if 'delta' in config else 1000 self.points = config['points'] if 'points' in config else 500 self.volume = config['volume'] if 'volume' in config else 0.3 self.pointsMulti = config['pointsMulti'] if 'pointsMulti' in config else 1 self.pointsText = None self.sequence = button.SequenceButtonGroup((20, 20), (210, 100), 15, 5, self.count, self.delta) self.buttons = button.PlayableButtonGroup((50, 150), (35, 300), 20, 15, self.count, 750) self.seqindex = 0 self.sequencing = False self.play = [] self.playing = False self.background = data.load_image('background.png') self.ray = data.load_image('ray.png') self.piano = data.load_image('piano.png') self.music_bg = data.load_sound('background.ogg', self.name) self.music_bg.set_volume(self.volume) self.music_pre_bg = data.load_sound('pre-background.ogg', self.name) self.music_pre_bg.set_volume(0.3) self.sequence.associateTheme(self.name) self.buttons.associateTheme(self.name) self.pre_bg_channel = None self.bg_channel = None # step counter management self.stepElapsingInTime = 1 self.stepElapsedTimeCounter = 0 self.counterStepPerClick = config['timetoclick'] if 'timetoclick' in config else 200 self.currentCounterStep = self.counterStepPerClick # counting only when button animation is over self.stepCountElapsingTime = False self.stepCounterText = None self.rectWidth = 0 boss = data.load_image('boss.png', self.name) boss.set_colorkey((255, 0, 255)) miniboss = data.load_image('boss_mini.png', self.name) miniboss.set_colorkey((255, 0, 255)) self.animMiniBossImage = miniboss # pygame.transform.scale(boss, (170, 170)) self.animMiniBossRect = self.animMiniBossImage.get_rect() self.animMiniBossRect.left = 302 self.animMiniBossRect.bottom = 243 self.animBossAction = 'scale' self.animBossActionCount = 0 self.animBossImage = boss # pygame.transform.scale(boss, (170, 170)) self.animBossRect = self.animBossImage.get_rect() self.animBossRect.left = 350 self.animBossRect.bottom = 280 self.animBossTime = 0 self.animBossShowRaw = False self.counterRect = [266,250,110,8] self.counterRectDecSizePerStep = 110.0/self.counterStepPerClick self.incrRedColorUnit = 255.0/self.counterStepPerClick self.decrBlueColorUnit = 255.0/self.counterStepPerClick self.bottomPanel = pygame.Surface((640,240)) self.bottomPanel.fill((100, 100, 100)) self.bottomPanel.set_alpha(200) self.bottomText = data.render_text(data.FONT_MAIN, 30, self.name.replace('-', ' ') + " starting in...", (255, 0, 0)) self.bottomTextRect = self.bottomText.get_rect() self.bottomTextRect.center = (320, 360)
def __init__(self, size=32): self.font = data.load_font('airstrip.ttf', size)
def __init__(self): self.buttons = [] self.font = data.load_font(*UI_FONT) self.pending_button = None
def __init__(self, game, name, index, config=None): super(LevelScene, self).__init__(game, name, index, config) self.font = data.load_font(data.FONT_FIX, 23) self.count = config['count'] if 'count' in config else 9 self.delta = config['delta'] if 'delta' in config else 1000 self.points = config['points'] if 'points' in config else 500 self.volume = config['volume'] if 'volume' in config else 0.3 self.pointsMulti = config[ 'pointsMulti'] if 'pointsMulti' in config else 1 self.pointsText = None self.sequence = button.SequenceButtonGroup((20, 20), (210, 100), 15, 5, self.count, self.delta) self.buttons = button.PlayableButtonGroup((50, 150), (35, 300), 20, 15, self.count, 750) self.seqindex = 0 self.sequencing = False self.play = [] self.playing = False self.background = data.load_image('background.png') self.ray = data.load_image('ray.png') self.piano = data.load_image('piano.png') self.music_bg = data.load_sound('background.ogg', self.name) self.music_bg.set_volume(self.volume) self.music_pre_bg = data.load_sound('pre-background.ogg', self.name) self.music_pre_bg.set_volume(0.3) self.sequence.associateTheme(self.name) self.buttons.associateTheme(self.name) self.pre_bg_channel = None self.bg_channel = None # step counter management self.stepElapsingInTime = 1 self.stepElapsedTimeCounter = 0 self.counterStepPerClick = config[ 'timetoclick'] if 'timetoclick' in config else 200 self.currentCounterStep = self.counterStepPerClick # counting only when button animation is over self.stepCountElapsingTime = False self.stepCounterText = None self.rectWidth = 0 boss = data.load_image('boss.png', self.name) boss.set_colorkey((255, 0, 255)) miniboss = data.load_image('boss_mini.png', self.name) miniboss.set_colorkey((255, 0, 255)) self.animMiniBossImage = miniboss # pygame.transform.scale(boss, (170, 170)) self.animMiniBossRect = self.animMiniBossImage.get_rect() self.animMiniBossRect.left = 302 self.animMiniBossRect.bottom = 243 self.animBossAction = 'scale' self.animBossActionCount = 0 self.animBossImage = boss # pygame.transform.scale(boss, (170, 170)) self.animBossRect = self.animBossImage.get_rect() self.animBossRect.left = 350 self.animBossRect.bottom = 280 self.animBossTime = 0 self.animBossShowRaw = False self.counterRect = [266, 250, 110, 8] self.counterRectDecSizePerStep = 110.0 / self.counterStepPerClick self.incrRedColorUnit = 255.0 / self.counterStepPerClick self.decrBlueColorUnit = 255.0 / self.counterStepPerClick self.bottomPanel = pygame.Surface((640, 240)) self.bottomPanel.fill((100, 100, 100)) self.bottomPanel.set_alpha(200) self.bottomText = data.render_text( data.FONT_MAIN, 30, self.name.replace('-', ' ') + " starting in...", (255, 0, 0)) self.bottomTextRect = self.bottomText.get_rect() self.bottomTextRect.center = (320, 360)