def addObjects(self, newDrawableObjects): for sprite in newDrawableObjects: RenderUpdates.add_internal(self, sprite) self._spritelist.insert( len(self._spritelist) - 1, [sprite, sprite.getXPos(), sprite.getYPos()])
def removeObject(self, sprite): for i in self._spritelist: if i[0] == sprite: self._spritelist.remove(i) break RenderUpdates.remove_internal(self, sprite)
def start_song(self): self.toparr_group = RenderUpdates() self.fx_group = RenderUpdates() self.text_group = RenderUpdates() self.text_group.add([self.score, self.lifebar, self.judging_disp]) self.text_group.add(self.holdtext) if mainconfig["showcombo"]: self.text_group.add(self.combos) if self.game.double: self.arrow_group = [OrderedRenderUpdates(), OrderedRenderUpdates()] for i in range(2): self.steps[i].play() for d in self.game.dirs: if mainconfig["explodestyle"] > -1: self.toparrfx[i][d].add(self.fx_group) if not self.dark: self.toparr[i][d].add(self.toparr_group) self.sprite_groups = [self.toparr_group, self.arrow_group[0], self.arrow_group[1], self.fx_group, self.text_group] else: self.steps.play() self.arrow_group = OrderedRenderUpdates() for d in self.game.dirs: if mainconfig["explodestyle"] > -1: self.toparrfx[d].add(self.fx_group) if not self.dark: self.toparr[d].add(self.toparr_group) self.sprite_groups = [self.toparr_group, self.arrow_group, self.fx_group, self.text_group]
def draw_start_text(self): """ description: - Creates and draws the Text object when being in pause mode :return: nothing """ dbi = DatabaseInteract() sets = dbi.get_settings() key_left = sets[1] key_right = sets[3] key_shoot = sets[8] heading1 = TextElement( center_position=(400, 400), font_size=18, bg_rgb=BLUE, text_rgb=WHITE, text=f"Startwinkel mit '{key_left}' und '{key_right}' auswählen", ) heading2 = TextElement( center_position=(400, 450), font_size=18, bg_rgb=BLUE, text_rgb=WHITE, text=f"Mit '{key_shoot}' Ball abschiessen, zum Beenden 'ESC' drücken ", ) elems = RenderUpdates(heading1,heading2) elems.draw(self.screen)
def clear( self, drawToSurface ): if self.bgMangr.dirty: #there's no point in clearing things because we're #about to wipe the whole surface in update() return RenderUpdates.clear( self, drawToSurface, self.bgMangr.GetBgSurface )
def add_internal(self, sprite): #prevent duplication if self.spritedict.has_key(sprite): return RenderUpdates.add_internal(self, sprite) if not hasattr(sprite, 'zAxis'): #TODO: is this legal? sprite.zAxis = 0 z = sprite.zAxis if z == 0: self.orderedSprites.insert(0, sprite) else: success = 0 for i in range(len(self.orderedSprites) - 1): candidate = self.orderedSprites[i] if z < candidate.zAxis: self.orderedSprites.insert(i, sprite) success = 1 break if not success: self.orderedSprites.append(sprite)
def addObject(self, newDrawableObject): RenderUpdates.add_internal(self, newDrawableObject) self._spritelist.insert( len(self._spritelist) - 1, [ newDrawableObject, newDrawableObject.getXPos(), newDrawableObject.getYPos() ])
def load_flower_data(self, data): """ Loads the list of flowers :param data: :return: """ self.flower_database = data self.flowers = RenderUpdates(data.values())
def main(): fundo, tela, clock = config() musica = pygame.mixer.Sound("BGM/Firelink Shrine.wav") grupo = RenderUpdates() personagem = Hero(20, 290, "dante", grupo) pygame.font.init() frase = Text(40, 'Quem eh voce e oque faz aqui?', 'carolingia.ttf') lx = [b for b in range(-4, 76)] l1 = [-10] l2 = [6] parede = [x for x in range(-10, 16)] iniciarConversa = [43, 0] teclas = { K_LEFT: False, K_RIGHT: False, K_UP: False, K_DOWN: False, K_RETURN: False, 27: False } # obs 27 = tecla 'esc' musica.play() fundo = fundo.convert() pygame.display.flip() while True: clock.tick(FPS) for e in pygame.event.get([KEYUP, KEYDOWN]): valor = (e.type == KEYDOWN) if e.key in teclas.keys(): teclas[e.key] = valor if teclas[27]: # tecla ESC pygame.quit() sys.exit() if teclas[K_LEFT]: personagem.move("LEFT") if teclas[K_RIGHT]: personagem.move("RIGHT") if teclas[K_UP]: personagem.move("UP") if teclas[K_DOWN]: personagem.move("DOWN") if personagem.px == iniciarConversa[ 0] and personagem.py == iniciarConversa[1]: tela.blit(frase.frases, (200, 500)) pygame.display.flip() #print(personagem.px, personagem.py) grupo.clear(tela, fundo) pygame.display.update(grupo.draw(tela))
def main(): colided_list = [] level, screen, clock, fps, rect_list = set_config() group = RenderUpdates() heroine = Hero(100, 30, group) keys = { K_LEFT: False, K_RIGHT: False, K_UP: False, K_DOWN: False, K_RETURN: False, 27: False, K_a: False } # obs 27 = 'esc' pygame.display.flip() while True: clock.tick(fps) for event in pygame.event.get([KEYUP, KEYDOWN]): value = (event.type == KEYDOWN) if event.key in keys: keys[event.key] = value idx = heroine.rect.collidelist(rect_list) if idx != -1 and rect_list[idx] not in colided_list: colided_list.append(rect_list[idx]) print rect_list[idx] if rect_list[ idx].x <= heroine.rect.x and heroine.rect.x <= rect_list[ idx].width: heroine.fsm.set_state("stand_still") heroine.cannot_move_to = None #import pdb; pdb.set_trace() else: heroine.cannot_move_to = heroine.fsm.side if idx == -1: heroine.fsm.set_state("fall") if keys[27]: # tecla ESC pygame.quit() sys.exit() elif keys[K_LEFT] and heroine.cannot_move_to != "left": heroine.fsm.set_state("move") heroine.fsm.update("left") elif keys[K_RIGHT] and heroine.cannot_move_to != "right": heroine.fsm.set_state("move") heroine.fsm.update("right") elif keys[K_UP]: heroine.fsm.set_state("jump") elif keys[K_DOWN]: heroine.fsm.set_state("get_down") elif keys[K_a]: heroine.fsm.set_state("attack") heroine.fsm.auto_update() utils.clear_screen(level, screen) pygame.display.update(group.draw(screen))
def clear(self): """ Clear all of the sprites in the group to the background. """ levels = self.levels.keys() levels.sort() for l in levels: level = self.levels[l] RenderUpdates.clear(level, self.screen, self.bg)
def clear_layer(self): """Not used at this time. """ for sprite in self.sprites(): if len(self.levels) > 1: levels = self.levels.keys() levels.sort() for l in levels[1:]: level = self.levels[l] RenderUpdates.clear(level, self.screen, self.bg)
def __init__(self, randomizer): self.randomizer = randomizer # Set title pygame.display.set_caption("Pybomber") # Setup screen self.screen = pygame.display.get_surface() # Create sprite groups self.populatedBombGroup = SpriteGroup() self.bombGroup = SpriteGroup() self.bomberGroup = SpriteGroup() self.explosionGroup = SpriteGroup() self.immutableGroup = SpriteGroup() self.powerUpGroup = SpriteGroup() self.mutableGroup = SpriteGroup() self.universalGroup = SpriteGroup() # For drawing everything. self.dirtyGroup = SpriteGroup() self.flyOverGroup = SpriteGroup() # Load a background self.background = pygame.image.load(BACKGROUND).convert() self.map = None # Draw background on screen self.screen.blit(self.background, ((0, 0), RESOLUTION)) # Number of rows and colums in the current map. self.mapRows = 0 self.mapColumns = 0
def __init__( self, screen, display ): self.nextModelClass = None self.screen = screen self.screenRect = screen.get_rect() self.display = display self.model = None self.bgImage = load_png( 'bg_mainmenu.png' ) self.btnGroup = RenderUpdates() fBtn = ImgButton( 'freestyle', self.Freestyle ) fBtn.rect.midtop = self.screenRect.midtop fBtn.rect.y += 100 self.btnGroup.add( fBtn ) self.freestyleButton = fBtn fBtn = ImgButton( 'freestyle_tricky', self.FreestyleTricky ) fBtn.rect.midtop = self.screenRect.midtop fBtn.rect.y += 160 self.btnGroup.add( fBtn ) self.freestyleTrickyButton = fBtn fBtn = ImgButton( 'speedy', self.Speedy ) fBtn.rect.midtop = self.screenRect.midtop fBtn.rect.y += 220 self.btnGroup.add( fBtn ) self.speedyButton = fBtn fBtn = ImgButton( 'sharpshooter', self.Sharpshooter ) fBtn.rect.midtop = self.screenRect.midtop fBtn.rect.y += 280 self.btnGroup.add( fBtn ) self.sharpshooterButton = fBtn fBtn = ImgButton( 'firehose', self.Firehose ) fBtn.rect.midtop = self.screenRect.midtop fBtn.rect.y += 340 self.btnGroup.add( fBtn ) self.firehoseButton = fBtn fBtn = ImgButton( 'loading', self.Loading ) fBtn.rect.midtop = self.screenRect.midtop fBtn.rect.y += 400 self.loadingButton = fBtn dBtn = ImgButton( 'debug', self.Debug ) dBtn.rect.midbottom = self.screenRect.midbottom dBtn.rect.y -= 10 self.btnGroup.add( dBtn ) self.debugButton = dBtn self.groups = [ self.btnGroup ]
def getLoadScreen(): screen = Display.get_surface() splashGroup = SpriteGroup() # Create text for connecting player connectingText = TextBar("Loading...", (0, 20, 250, 50), 35) imgWidth = connectingText.image.get_width() connectingText.rect.left = (screen.get_size()[X] - imgWidth) / 2 splashGroup.add(connectingText) return splashGroup, connectingText
def add_below(self, ref_sprite, sprite): """ Add the sprite to the group below ref_sprite. The sprite will be added below ref sprite so ref_sprite is on top of it. """ RenderUpdates.add_internal(self, sprite) i = self._spritelist.index(ref_sprite) self._spritelist.insert(i+1, sprite) sprite.add_internal(self)
def getLoadScreen(): screen = Display.get_surface() splashGroup = SpriteGroup() # Create text for connecting player connectingText = TextBar ('Loading...', (0, 20, 250, 50), 35) imgWidth = connectingText.image.get_width() connectingText.rect.left = (screen.get_size()[X] - imgWidth) / 2 splashGroup.add(connectingText) return splashGroup,connectingText
def __init__(self): super().__init__() self.ghost = self._create_ghost() self.ghost_group = RenderUpdates(self.ghost) walls = self._create_walls() self.wall_group = RenderUpdates(*walls) pickups = self._create_pickups() self.pickup_group = RenderUpdates(*pickups)
def add_ontop(self, ref_sprite, sprite): """ Add the sprite to the group on top ref_sprite. The sprite will be added on top of ref sprite so ref_sprite is below of it. """ RenderUpdates.add_internal(self, sprite) i = self._spritelist.index(ref_sprite) self._spritelist.insert(i, sprite) sprite.add_internal(self)
def __init__(self): super().__init__() self.ball = self._create_ball() self.ball_group = RenderUpdates(self.ball) self.paddles = self._create_paddles() self.paddle_group = RenderUpdates(*self.paddles) self.border_walls = self._create_border() self.border_group = RenderUpdates(*self.border_walls)
def __init__(self, items): platforms = [Platform([400 + 260 * i, 390], s[0], i) for i, s in enumerate(items)] credits = Credits() self._score = TopScores() sprites = RenderUpdates([credits, self._score]) sprites.add(platforms) pos = 0 em = EventManager() em.clear() screen = pygame.display.get_surface() em.get() quit = False screen.blit(Menu.bg, [0, 0]) sprites.draw(screen) pygame.display.update() while not quit: for ev in em.get(): if ev.type == PLAYER: if ev.key == LEFT: if pos != 0: pos -= 1 for p in platforms: p.left() elif ev.key == RIGHT: if pos != len(items) - 1: pos += 1 for p in platforms: p.right() else: try: r = items[pos][1][ev.key](self, platforms[pos], pos, ev.key) if r: # If the callback returns true, then we # need to redraw the whole screen and # reread our scores. (If it returns false, # it probably means it just modified some # cart text). self._score.read_scores() screen.blit(Menu.bg, [0, 0]) pygame.display.update() except KeyError: pass elif ev.type == QUIT: quit = True sprites.update(pygame.time.get_ticks()) pygame.display.update(sprites.draw(screen)) sprites.clear(screen, Menu.bg) pygame.time.clock.tick(60)
def main(): fundo, tela, clock = config() musica = pygame.mixer.Sound("BGM/Firelink Shrine.wav") grupo = RenderUpdates() personagem = Hero(20, 290, "dante", grupo) pygame.font.init() frase = Text(40, 'Quem eh voce e oque faz aqui?', 'carolingia.ttf') lx = [b for b in range(-4, 76)] l1 = [-10] l2 = [6] parede = [x for x in range(-10, 16)] iniciarConversa = [43, 0] teclas = {K_LEFT: False, K_RIGHT: False, K_UP: False, K_DOWN: False, K_RETURN: False, 27: False} # obs 27 = tecla 'esc' musica.play() fundo = fundo.convert() pygame.display.flip() while True: clock.tick(FPS) for e in pygame.event.get([KEYUP, KEYDOWN]): valor = (e.type == KEYDOWN) if e.key in teclas.keys(): teclas[e.key] = valor if teclas[27]: # tecla ESC pygame.quit() sys.exit() if teclas[K_LEFT]: personagem.move("LEFT") if teclas[K_RIGHT]: personagem.move("RIGHT") if teclas[K_UP]: personagem.move("UP") if teclas[K_DOWN]: personagem.move("DOWN") if personagem.px == iniciarConversa[0] and personagem.py == iniciarConversa[1]: tela.blit(frase.frases, (200, 500)) pygame.display.flip() #print(personagem.px, personagem.py) grupo.clear(tela, fundo) pygame.display.update(grupo.draw(tela))
class CursorScreen(Screen): """A Screen with custom cursors""" def setup(self): self._cursor_group = RenderUpdates() self._loaded_cursor = None self.set_cursor(None) def on_enter(self): super(CursorScreen, self).on_enter() pygame.mouse.set_visible(0) def on_exit(self): super(CursorScreen, self).on_exit() pygame.mouse.set_visible(1) def draw(self, surface): super(CursorScreen, self).draw(surface) self.set_cursor(self.game.tool) self._loaded_cursor.set_highlight(self.cursor_highlight()) self._cursor_group.update() self._cursor_group.draw(surface) def set_cursor(self, item): if item is None or item.CURSOR is None: cursor = HAND else: cursor = item.CURSOR if cursor != self._loaded_cursor: self._loaded_cursor = cursor self._loaded_cursor.load(self.gd.resource) self._cursor_group.empty() self._cursor_group.add(self._loaded_cursor) def cursor_highlight(self): return self.container.mouseover_widget.highlight_cursor
def __init__(self, sprites): self._spritelist = [[sprites, sprites.getXPos(), sprites.getYPos()]] #self._spritelist.append([sprites, sprites.getXPos(), sprites.getYPos()]) RenderUpdates.__init__(self, sprites) self.xPos = 0 self.yPos = 0 self.xSize = 0 self.ySize = 0 self.calcPosition() self.calcSize() self.setRelativePositions()
def titleScreen(screen, clock, menu): title = UITextElement( True, [screen.get_width() / 2, int(60 * (screen.get_height() / 720))], "Game", int(50 * (screen.get_height() / 720)), None, (255, 255, 255)) play_button = UITextElement( False, [screen.get_width() / 2, int(410 * (screen.get_height() / 720))], "Play", int(30 * (screen.get_height() / 720)), None, (255, 255, 255), "M.Game") options_button = UITextElement( False, [screen.get_width() / 2, int(460 * (screen.get_height() / 720))], "Options", int(30 * (screen.get_height() / 720)), None, (255, 255, 255), "M.Options") quit_button = UITextElement( False, [screen.get_width() / 2, int(510 * (screen.get_height() / 720))], "Quit", int(30 * (screen.get_height() / 720)), None, (255, 255, 255), "M.Quit") buttons = RenderUpdates(title, play_button, options_button, quit_button) ##buttons.add(new_button) return menuLoop(screen, clock, menu, buttons)
def title_screen(screen, player=False): # Make a Title that is a "button" game_title = UIElement( center_position=(400, 200), font_size=100, bg_rgb=TITLE_SCREEN_COLOR, text_rgb=TITLE_TEXT_COLOR, text="Party 2020!", reactive=False, ) # Make the start "button" start_button = UIElement( center_position=(400, 400), font_size=50, bg_rgb=TITLE_SCREEN_COLOR, text_rgb=TITLE_TEXT_COLOR, text="START", action=GameMode.GAME_SCREEN, ) # Make the quit "button" quit_button = UIElement( center_position=(400, 450), font_size=30, bg_rgb=TITLE_SCREEN_COLOR, text_rgb=TITLE_TEXT_COLOR, text="QUIT", action=GameMode.QUIT, ) # Make a description that is a "button" desc1 = UIElement( center_position=(400, 525), font_size=15, bg_rgb=TITLE_SCREEN_COLOR, text_rgb=TITLE_TEXT_COLOR, text="Avoid the virus", reactive=False, ) # Make a description that is a "button" desc2 = UIElement( center_position=(400, 540), font_size=15, bg_rgb=TITLE_SCREEN_COLOR, text_rgb=TITLE_TEXT_COLOR, text="Masks will save you if you're exposed to the virus", reactive=False, ) # Make a description that is a "button" desc3 = UIElement( center_position=(400, 555), font_size=15, bg_rgb=TITLE_SCREEN_COLOR, text_rgb=TITLE_TEXT_COLOR, text="Catch toilet paper", reactive=False, ) buttons = RenderUpdates(game_title, start_button, quit_button, desc1, desc2, desc3) return title_loop(screen, buttons, fill=TITLE_SCREEN_COLOR)
def __init__(self, layer=None, sprites=[]): """Initialize the sprite group. @param layer: L{Screen.Layer} in which the sprite lives. @param sprites: Initial sprite or sequence of sprites in the group. """ self.levels = {0: self} if layer is None: layer = conf.window else: pass self.layer = layer self.screen = layer.screen self.bg = layer.bg RenderUpdates.__init__(self, sprites)
def title_screen(screen): title_btn = UIElement(center_position=(350, 250), font_size=50, bg_rgb=BLACK, text_rgb=WHITE, text="Earth invaders") start_btn = UIElement( center_position=(350, 350), font_size=30, bg_rgb=BLACK, text_rgb=WHITE, text="Start", action=GameState.NEWGAME, ) quit_btn = UIElement( center_position=(350, 450), font_size=30, bg_rgb=BLACK, text_rgb=WHITE, text="Quit", action=GameState.QUIT, ) secret_btn = UIElement( center_position=(538, 373), font_size=30, bg_rgb=WHITE, text_rgb=WHITE, text=".", action=GameState.SECRET, ) buttons = RenderUpdates(title_btn, start_btn, quit_btn, secret_btn) return game_loop(screen, buttons)
def manual_play(screen, board): root = Tk() canvas = Canvas(root) temp_new = Toplevel(canvas) Manual_play_window(temp_new, board) root.quit() root.mainloop() action=GameState.NEWGAME return_btn = UIElement( center_position=(400, 400), font_size=30, bg_rgb=BLUE, text_rgb=WHITE, text="Back", action=GameState.NEWGAME, ) quit_btn = UIElement( center_position=(400, 500), font_size=30, bg_rgb=BLUE, text_rgb=WHITE, text="Quit", action=GameState.QUIT, ) buttons = RenderUpdates(return_btn, quit_btn) return game_loop(screen, buttons)
def play_level(screen, player): return_btn = UIElement( center_position=(110, 670), font_size=30, text_rgb=BLACK, text="Main menu", action=GameState.TITLE, ) humlevel_btn = UIElement( center_position=(400, 200), font_size=40, text_rgb=BLACK, text="Human v/s Human", action=GameState.HUMAN, ) AIlevel_btn = UIElement( center_position=(400, 300), font_size=40, text_rgb=BLACK, text="Human v/s AI", action=GameState.AI, ) buttons = RenderUpdates(return_btn, humlevel_btn, AIlevel_btn) return game_loop(screen, buttons)
def pauseScreen(screen, clock, menu): title = UITextElement( True, [screen.get_width() / 2, int(60 * (screen.get_height() / 720))], "Pause", int(50 * (screen.get_height() / 720)), None, (255, 255, 255)) resume_button = UITextElement( False, [screen.get_width() / 2, int(160 * (screen.get_height() / 720))], ("Resume"), int(30 * (screen.get_height() / 720)), None, (255, 255, 255), "M.Back") save_button = UITextElement( False, [screen.get_width() / 2, int(210 * (screen.get_height() / 720))], ("Save"), int(30 * (screen.get_height() / 720)), None, (255, 255, 255), "S.Save") options_button = UITextElement( False, [screen.get_width() / 2, int(260 * (screen.get_height() / 720))], ("Options"), int(30 * (screen.get_height() / 720)), None, (255, 255, 255), "M.Options") back_button = UITextElement( False, [screen.get_width() / 2, int(660 * (screen.get_height() / 720))], "Exit to main menu", int(30 * (screen.get_height() / 720)), None, (255, 255, 255), "M.Main") buttons = RenderUpdates(title, resume_button, save_button, options_button, back_button) return menuLoop(screen, clock, menu, buttons)
def __init__( self, screen, display ): self.screen = screen self.screenRect = screen.get_rect() self.display = display self.model = None self.currentTime = 0 self.bgImage = load_png( 'bg_game.png' ) self.hiGroup = RenderUpdates() self.lowGroup = RenderUpdates() self.viewOnlyGroup = RenderUpdates() self.bubbleGroup = RenderUpdates() self.ins_spin = None self.ins_press = None self.quitButton = None self.squeezePrompt = None self.groups = [self.lowGroup, self.bubbleGroup, self.hiGroup, self.viewOnlyGroup] self.locks = [] self.stripeOrder = ['violet','blue','green', 'yellow','orange','red'] self.stripeHeights = { 'violet': 233, 'blue': 189, 'green': 136, 'yellow': 85, 'orange': 44, 'red': 11, } self.heaterRects = { 'green': Rect ( 160, 470, 80, 100 ), 'blue': Rect ( 265, 470, 80, 100 ), 'violet': Rect ( 370, 470, 80, 100 ), 'red': Rect ( 475, 470, 80, 100 ), 'orange': Rect ( 580, 470, 80, 100 ), 'yellow': Rect ( 685, 470, 80, 100 ), } self.purseStatusbars = [] controller = mvcState.GetController() controller.gameEventListeners.append( self )
def __init__(self): super().__init__() self.player = self._make_player() self.player_group = RenderUpdates(self.player) self.pickup_count = self._make_pickup_count() self.total_time = self._make_total_time() self.timer = self._make_timer() self.display_group = RenderUpdates(self.timer, self.total_time, self.pickup_count) self.pickup = self._make_pickup() self.pickup_group = RenderUpdates(self.pickup) self.walls = self._make_walls() self.walls_group = RenderUpdates(*self.walls)
def add(self, sprites, level=0): """Add sprite to group. - sprites: a single sprite, or multiple sprites. - level: drawing layer at which to add the sprite. higher numbers will be drawn on top of lower numbers. level less than 0 indicate that sprits will be drawn bellow others Default level is ZERO """ if level == 0: RenderUpdates.add(self, sprites) else: if not self.levels.has_key(level): level_group = SpriteGroup(self.layer) self.levels[level] = level_group else: level_group = self.levels[level] level_group.add(sprites)
def __init__( self, screen, display ): self.screen = screen self.screenRect = screen.get_rect() self.display = display self.model = None self.bgImage = load_png( 'bg_winscreen.png' ) self.btnGroup = RenderUpdates() quitBtn = QuitButton() quitBtn.rect.bottomleft = self.screenRect.bottomleft quitBtn.rect.move_ip( 10, -10 ) self.btnGroup.add( quitBtn ) self.quitButton = quitBtn self.groups = [ self.btnGroup ]
def cleanState(self): pygame.display.set_caption("Pybomber") self.screen.blit(self.background, ((0, 0), RESOLUTION)) self.populatedBombGroup = SpriteGroup() self.bombGroup = SpriteGroup() self.bomberGroup = SpriteGroup() self.explosionGroup = SpriteGroup() self.immutableGroup = SpriteGroup() self.powerUpGroup = SpriteGroup() self.mutableGroup = SpriteGroup() self.universalGroup = SpriteGroup() # For drawing everything. self.dirtyGroup = SpriteGroup() self.groundGroup = SpriteGroup() self.flyOverGroup = SpriteGroup() self.mapRows = 0 self.mapColumns = 0 self.curWidgetID = 0
def draw_spcl_txt(self): """ description: - Write the type of the special that just dropped to the top of the screen. :return: nothing """ if self.spcl_text is not None: info = TextElement( center_position=(590, 10), font_size=16, bg_rgb=BLUE, text_rgb=WHITE, text=f"Spezial: {self.spcl_text.text} aufgetaucht", ) elems = RenderUpdates(info) elems.draw(self.screen) if self.spcl_text.tick(): self.spcl_text = None
def grow_flora(self, play_area): """ Grows the decorative plants :param play_area: :return: void """ plant_db = grow_plants(play_area, num=randint(90, 150), plant_type="grass", bias="center") plant_db = merge_plant_sets( plant_db, grow_plants(play_area, num=randint(50, 75), plant_type="grassy_plant", bias="edges")) plant_db = merge_plant_sets( plant_db, grow_plants(play_area, num=randint(1, 2), plant_type="pretty_log", bias="edges")) plant_db = merge_plant_sets( plant_db, grow_plants(play_area, num=randint(0, 3), plant_type="stump", bias="edges")) plant_db = merge_plant_sets( plant_db, grow_plants(play_area, num=randint(25, 55), plant_type="leaves", bias="edges")) plant_db = merge_plant_sets( plant_db, grow_plants(play_area, num=randint(15, 25), plant_type="bushy_grass", bias="edges")) self.plants = RenderUpdates(list(plant_db.values()))
def add_internal (self, sprite): """RenderLayer.add_internal (...) -> None """ if sprite in self.spritedict: return RenderUpdates.add_internal (self, sprite) if sprite.depth == 0: self.sprite_depths.insert (0, sprite) else: success = False for i in range (len (self.sprite_depths) - 1): candidate = self.sprite_depths[i] if sprite.depth < candidate.depth: self.sprite_depths.insert (i, sprite) success = True break if not success: self.sprite_depths.append (sprite)
def play_level(screen, player): return_btn = UIElement(center_position=(140, 570), font_size=30, text_color=WHITE, background_color=BLUE, text="Return to main menu", action=GameState.TITLE) buttons = RenderUpdates(return_btn) return game_loop(screen, buttons)
def level_easy( ): #Create buttons for the Easy level, position them in a random location pos = [(250, 300), (600, 300)] loc = random.sample(pos, 2) greenbtn = make_game_button(loc[0], 70, GREEN) redbtn = make_game_button(loc[1], 70, RED) loc.clear() buttons = RenderUpdates(greenbtn, redbtn) return buttons
def main(): level, screen, clock, fps = set_config() group = RenderUpdates() heroine = Hero(20, 140, "elisa", group) keys = { K_LEFT: False, K_RIGHT: False, K_UP: False, K_DOWN: False, K_RETURN: False, 27: False, K_a: False } # obs 27 = 'esc' pygame.display.flip() while True: clock.tick(fps) for e in pygame.event.get([KEYUP, KEYDOWN]): valor = (e.type == KEYDOWN) if e.key in keys.keys(): keys[e.key] = valor if keys[27]: # tecla ESC pygame.quit() sys.exit() if heroine.attacking: heroine.animate_attack() elif keys[K_LEFT]: heroine.move("left") elif keys[K_RIGHT]: heroine.move("right") elif keys[K_UP]: heroine.jump() elif keys[K_DOWN]: heroine.get_down() elif keys[K_a]: heroine.attack() #heroine.is_jumping(gravity) utils.clear_screen(level, screen) pygame.display.update(group.draw(screen))
def draw(self): """ draw all sprites onto the surface """ render = [] levels = self.levels.keys() levels.sort() for lvl in levels: level = self.levels[lvl] render += RenderUpdates.draw(level, self.screen) return render
def __init__(self, title='Checkers', log_level=log.INFO, show_fps=False): log.basicConfig(level=log_level) self.show_fps = show_fps self.window_title = title self.game = Board(BOARD_DIM) # Initialize Game Groups self.brown_spaces = RenderUpdates() self.pieces = RenderUpdates() self.piece_selected = GroupSingle() self.space_selected = GroupSingle() self.current_piece_position = ORIGIN self.screen = None self.fps_clock = None self.font = None self.font_rect = None self.background = None self.background_rect = None self.fps_text = None self.fps_rect = None self.winner_text = None self.winner_rect = None
def __init__(self): self.objs = {} self.events = [] self.render = RenderUpdates() self.projectiles = Group() self.enemies = Group() self.you = None self.bg_sprite = BGSprite(pygame.display.get_surface()) # Since we don't care about MOST EVENTS pygame.event.set_allowed(None) pygame.event.set_allowed([ MOUSEBUTTONDOWN, KEYDOWN, QUIT, UPDATEEVENT, SPAWNEVENT ])
def __init__( self, tela, descricao_mapa=None ): self.tela = tela self.entrada = None self.saida = None self.tamanho = None self.mapa = None self.tam_peca = None # grupo que contem objetos nao desenhados self.nao_desenhados = RenderUpdates() if descricao_mapa: self.monta_labirinto( descricao_mapa )
def __init__(self, title='Checkers', log_drag=False, show_fps=False, ip='127.0.0.1', port=5000, spectate=False): self.game_running = True self.player = None self.log_drag = log_drag self.show_fps = show_fps self.window_title = title self.game = NetBoard(handler=self, ip=ip, port=port, spectate=spectate) # Initialize Game Groups self.board_spaces = set() self.pieces = RenderUpdates() self.piece_selected = GroupSingle() self.bg_text = RenderUpdates() self.fg_text = RenderUpdates() self.current_piece_position = ORIGIN self.screen = None self.fps_clock = None self.font = None self.background = None self.background_rect = None self.fps_text = None self.winner_text = None self.turn_text = None self.player_text = None self.game_id_text = None
def main(): # Get filename try: image_file = sys.argv[1] framerate = sys.argv[2] except: image_file = raw_input("Enter name of image file: ") framerate = raw_input("Enter framerate: ") timedelay = (1.0)/(float(framerate)) # Initialize display try: screen = pygame.display.set_mode((600,600), HWSURFACE|DOUBLEBUF) except: screen = pygame.display.set_mode((600,600)) background = pygame.image.load(BACKGROUND).convert() screen.blit(background, (0,0,400,400)) temp_img = pygame.image.load(image_file) anim_size = (temp_img.get_height(), temp_img.get_height()) surf = pygame.surface.Surface(anim_size) anim = Animation(surf, (0,0,temp_img.get_height(),temp_img.get_height()), image_file) sprites = SpriteGroup() sprites.add(anim) # Display animation pygame.display.flip() while 1: cur_time = t.time() sprites.clear(screen, background) sprites.update() dirty = sprites.draw(screen) pygame.display.update(dirty) for event in pygame.event.get(): if event.type == KEYDOWN: if event.key == K_ESCAPE: sys.exit() t.sleep(t.time() - cur_time + timedelay)
def __init__(self, name, rect_data, speed, max_frame, max_frame_delay, img): """ Init. - rect_data : list contains => - x : position x - y : position y - w : width of rect_collapse - h : height of collase - direction """ super(BaseEntity, self).__init__() self.name = name self.rect = None self.image = None self.childs = Group() self.rect_collapse = Rect(rect_data) self.speed = speed self.direction = UP # Create animation for the entity self.animation = self.init_animation(max_frame, max_frame_delay, img)
def __init__(self,level=0): pygame.init() self.screen = pygame.display.set_mode(self.screen_size) if self.title: pygame.display.set_caption(self.title) self.fps = 30 #group definitions self.userPlacedObjects = Group() self.startItems = RenderUpdates() self.playerGroup = RenderUpdates() self.tails = RenderUpdates() self.blackHoles = RenderUpdates() self.obstacles = RenderUpdates() self.masslessObstacles = RenderUpdates() self.goalCollide = Group() self.toolbar = OrderedUpdates() #level/transition/player & enemy/obstacle creation hocus pocus self.goal = Goal(573,372,self.goalCollide,30) self.bar = ToolBar(0,626,self.toolbar,self.screen,self,self.goal) self.player = Player(50,535,self.screen,(255,0,0),self.playerGroup,1000,624,(2,-2),self.tails,self) self.level = level self.levelUp = True self.stars = Starfield(self.screen,1000,626,200) BlackHole(339,70,self.blackHoles,self.screen,80,71,16) temp = EarthRounder(513,313,self.masslessObstacles,self.screen,40,0) temp.rotate(55) temp = Alien(60,188,self.masslessObstacles,self.screen,34,1) temp.rotate(-15) temp = Alien(107,268,self.masslessObstacles,self.screen,35,1) temp.rotate(-75) temp = Alien(816,533,self.masslessObstacles,self.screen,39,0) temp.rotate(-13) temp = BlueUpAnDown(811,227,self.masslessObstacles,self.screen,34,1,97,239) temp.rotate(80) self.obstacles.add(self.blackHoles) self.obstacles.add(self.goalCollide) self.freeb = False self.gotoLevel = level self.loaded = False if system.thereIsASaveFile() and level == 0: self.intro_screen = Intro(0,0,self.startItems,str('title_w_file.png')) self.thereIsAFile = True elif level == 0: self.intro_screen = Intro(0,0,self.startItems) self.thereIsAFile = False
def remove_internal( self, sprite ): RenderUpdates.remove_internal( self, sprite ) del self.displayRects[sprite]
def add_internal( self, sprite ): RenderUpdates.add_internal( self, sprite ) center = self.bgMangr.GetDisplayCenter(sprite.rect) self.displayRects[sprite] = sprite.rect.move(0,0) #copy self.displayRects[sprite].center = center
def __init__( self, bgMangr ): RenderUpdates.__init__(self) self.bgMangr = bgMangr self.displayRects = {}