def update(self): current_input_state = self.input_handler.get_current_input_state() self.camera.update() #Increase or decrease the updates per render if current_input_state.slomo and self.updates_per_render > self.slomo_updates_per_render: self.updates_per_render -= 0.5 if not(current_input_state.slomo) and self.updates_per_render < self.regular_updates_per_render: self.updates_per_render += 0.5 if current_input_state.slomo and not(current_input_state.slomo_prev): self.camera.change_zoom(1.1) if current_input_state.slomo_prev and not(current_input_state.slomo): self.camera.change_zoom(1) self.player.update(current_input_state) for enemy in self.enemies: enemy.update(self) for bullet in self.reflected_bullets: bullet.collide_with_enemy(self.enemies) bullet.update(self) for bullet in self.unreflected_bullets: bullet.collide_with_player(self.player) bullet.collide_with_deflector(self) bullet.update(self) self.updates_since_render += 1
def update(self, value): """Periodic update function""" # Set a callback for 20ms glutTimerFunc(20, self.update, 0) # Change things here for a in self.asteroids: a.update() for enemy in self.enemies: enemy.update() self.ship.update() self.collision() particle.update() self.game_update() self._level_frame += 1 if self._level_frame % 500 == 0: newalien = levels.level[self.level].enter_alien(self.ship) if newalien: self.enemies.add(newalien) # Cause a re-display glutPostRedisplay()
def run(): global mousePosition, mouseClick, pressed, regen debugScreen = False exit = False nodeScreen = False while True: pressed = pygame.key.get_pressed() mouseClick = pygame.mouse.get_pressed() mousePosition = pygame.mouse.get_pos() for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() if event.type == pygame.KEYDOWN: if event.key == pygame.K_ESCAPE: pause.run() if event.key == K_F3: if debugScreen == True: debugScreen = False elif debugScreen == False: debugScreen = True if event.key == K_BACKQUOTE: function = input() eval(function) if event.key == K_F5: print("crappy code imbound") nodeScreen = True bag.update(mousePosition, mouseClick, pressed) hotbarUpdate() if bag.open == False: pygame.display.flip() chr.update(pressed) enemy.update() minimap.update() if bag.open == True: pygame.display.update(bag.inventoryRect) if debugScreen == True: debug() if nodeScreen == True: enemy.makeGrid() pygame.display.flip() while True: for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() if event.type == pygame.KEYDOWN: if event.key == K_F5: exit = True if exit == True: nodeScreen = False exit = False break bar.update() clock.tick(60)
def playing_update(self): self.player.update() for enemy in self.enemies: enemy.update() for enemy in self.enemies: if enemy.grid_pos == self.player.grid_pos: if enemy.personality != "random1": self.remove_life() self.enemy_reset2() else: self.chased_enemies.append(enemy) self.enemy_reset() if self.coins == [] and self.player.current_score > 10: self.state = "win"
def update(self): """ Processes all game events. """ # Process game queue and general events self.event_queue.pump() self.rank -= calcs.sign(self.rank - self.min_rank) # Process all enemies and their bullets for bullet in self.enemy_bullets.copy(): if bullet.update(): self.enemy_bullets.remove(bullet) for enemy in self.enemies.copy(): enemy.update() enemy.collide_test(self.player_bullets) # Process item movements for item in self.items.copy(): item.update() if (self.player and self.player.item_collisions and item.hitbox.colliderect(self.player.hitbox)): item.activate(self) self.items.discard(item) elif item.y > PLAY_AREA_EXIT[3]: self.items.discard(item) # Process player movements if self.player: self.player.update() self.player_coordinates = (self.player.x, self.player.y) self.player.collide_test(self.enemy_bullets, self.enemies) for bullet in self.player_bullets.copy(): if bullet.update(): self.player_bullets.remove(bullet) # Decrement combo meter self.combo_time = max(0, self.combo_time - 1) if self.combo_count: if self.combo_count > 1: self.hud.combo_time = self.combo_time if not self.combo_time: self.combo_count = 0 # Update the scorecard in the HUD self.hud.write_score(self.score) # Test for new wave launch if self.next_wave < video.get_time(): self.generate_enemies()
def update_screen(settings, screen, ship, enemys, interface): """updates screen and show new screen""" screen.fill(settings.bg_color) for bullet in ship.bullets: if bullet.update(): ship.bullets.remove(bullet) else: bullet.show() ship.kill(enemys) ship.update() ship.show() if not enemys: next_lvl(screen, settings, enemys) for enemy in enemys: enemy.update(ship) enemy.show() ship.under_attack(enemys) interface.update(ship) interface.show()
def update(self): """updates all the enemies""" for enemy in self.enemies: enemy.update()
mr_player.move(0, 1) if pygame.mouse.get_pressed()[0]: mr_player.shoot() if keys[pygame.K_p]: if not waveComing: waveComing = True wave_controller.new_wave(base) screen.blit(background_image, (0, 0)) base.update(enemiesGroup) mr_player.update() for projectile in projectilesGroup: projectile.update() for enemy in enemiesGroup: enemy.update(projectilesGroup) if not enemiesGroup.sprites(): waveComing = False score_text = font.render("Score: " + str(ScoreManager.score), True, (255, 255, 255)) screen.blit(score_text, (10, 10)) wave_text = font.render("Wave: " + str(wave_controller.wave_number), True, (255, 255, 255)) screen.blit(wave_text, (800, 10)) # Tell pygame to update the screen pygame.display.flip() clock.tick(60)
def update(): global running global window global p global small_text global score_text global health_text global lost global in_store global potential_purchases global count global purchase_count for event in pygame.event.get(): if event.type == pygame.QUIT: running = False if event.type == pygame.USEREVENT + 1: sound_player.music() clock.tick(config.FPS) keyboard.update() count += 1 if keyboard.is_key_down(pygame.K_s) and count > 30 and not lost: count = 0 in_store = not in_store if in_store: alphabet = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k"] key_linker = { "a": pygame.K_a, "b": pygame.K_b, "c": pygame.K_c, "d": pygame.K_d, "e": pygame.K_e, "f": pygame.K_f, "g": pygame.K_g, "h": pygame.K_h, "i": pygame.K_i, "j": pygame.K_j, "k": pygame.K_k } potential_purchases = [w for w in weapon.weapons if w not in p.weapons] purchase_count += 1 if keyboard.is_key_down( pygame.K_z ) and p.health < 42 and scorekeeper.points >= 10 and purchase_count > 30: # purchase health p.health += 3 scorekeeper.points -= 10 if p.health > 42: p.health = 42 purchase_count = 0 cthing = 0 window.blit(assets.background_image, (0, 0)) tiny_text = pygame.font.Font("freesansbold.ttf", 24) for purchase in potential_purchases: if keyboard.is_key_down(key_linker[alphabet[cthing]]) \ and scorekeeper.points >= purchase.cost and purchase_count > 30: p.weapons.append(purchase) scorekeeper.points -= purchase.cost purchase_count = 0 img = tiny_text.render( "Press " + alphabet[cthing] + " to purchase " + purchase.name + " for " + str(purchase.cost) + " points", False, (0, 255, 0) if purchase.cost <= scorekeeper.points else (255, 0, 0)) window.blit(img, (0, cthing * 40)) cthing += 1 img = tiny_text.render("Press z to repair by 3 health for 10 points", False, ((0, 255, 0) if scorekeeper.points > 10 else (255, 0, 0))) window.blit(img, (0, cthing * 40)) pygame.display.flip() return entitymanager.update(window) enemy.update() if lost and keyboard.is_key_down(pygame.K_r): entitymanager.entities = [] lost = False init() scorekeeper.points = 0 if enemy.Enemy.bullet_type_change > 60 and random.randint(0, 300) == 0: enemy.Enemy.bullet_type_change -= 1 image2 = small_text.render("Points: " + str(scorekeeper.points), False, (255, 0, 0)) if score_text is not None: score_text.kill() score_text = entity.ConcreteEntity(image2, 0, 0, float("inf")) image3 = small_text.render( "Health: " + (str(p.health) if p is not None else "0"), False, (255, 0, 0)) if health_text is not None: health_text.kill() health_text = entity.ConcreteEntity(image3, 0, 38, float("inf")) pygame.display.flip() if p not in entitymanager.entities and not lost: # you lose large_text = pygame.font.Font('freesansbold.ttf', 115) image = large_text.render("YOU LOSE", False, (255, 0, 0)) entity.ConcreteEntity(image, config.WIDTH / 2 - image.get_width() / 2, config.HEIGHT / 2 - image.get_height() / 2, float("inf")) otherthing = small_text.render("Press R to retry", False, (0, 0, 255)) entity.ConcreteEntity( otherthing, config.WIDTH / 2 - otherthing.get_width() / 2, config.HEIGHT / 2 - otherthing.get_height() / 2 + 70, float("inf")) highscores = open(os.path.join(__location__, "scores.dat")) scores = highscores.read().split(";") biggest = 0 for sc in scores: if int(sc) > biggest: biggest = int(sc) last_thing = small_text.render( "You got a HIGHSCORE of: " + str(scorekeeper.cumulated) + "." if scorekeeper.cumulated > biggest else "Highscore is " + str(biggest) + "; you did not beat it.", False, (0, 0, 255)) entity.ConcreteEntity( last_thing, config.WIDTH / 2 - last_thing.get_width() / 2, config.HEIGHT / 2 - last_thing.get_height() / 2 + 110, float("inf")) highscores.close() new_file = open(os.path.join(__location__, "scores.dat"), "a") new_file.write(";" + str(scorekeeper.cumulated)) p = None lost = True if keyboard.is_key_down(pygame.K_ESCAPE): running = False
def update(self, deltat, screen, events): for event in events: down = event.type == pygame.KEYDOWN if event.key == pygame.K_RIGHT : self.hero.xSpeed = down * 6 elif event.key == pygame.K_LEFT : self.hero.xSpeed = down * -6 elif event.key == pygame.K_UP : self.hero.ySpeed = down * -6 elif event.key == pygame.K_DOWN : self.hero.ySpeed = down * 6 elif event.key == pygame.K_ESCAPE and down: return util.STATE_NewGame elif event.key == pygame.K_F1 and down : self.debug = not(self.debug) enemies = self.enemies hero = self.hero # update enemies enemies_view = [] for enemy in enemies: enemy.update(deltat) enemies_view.append(enemy.view) # update hero and camera hero.update(deltat, self.level.sprite_layers[2]) self.update_camera() # draw the stuff for sprite_layer in self.level.sprite_layers: if sprite_layer.is_object_group: continue else: self.renderer.render_layer(screen, sprite_layer) # draw debug data to show collision boxes if self.debug: # calculate where on the camera it should be camera_left = self.renderer._cam_rect.left camera_top = self.renderer._cam_rect.top for enemy_view in enemies_view: view = enemy_view.copy() view.left -= camera_left view.top -= camera_top pygame.draw.rect(screen, (255, 0, 0), view, 1) hero_rect = hero.collision_rect.copy() hero_rect.left -= camera_left hero_rect.top -= camera_top pygame.draw.rect(screen, (0, 0, 255), hero_rect, 1) # haha, or not. you lost! collision = hero.collision_rect.collidelist(enemies_view) if collision != -1: camera_left = self.renderer._cam_rect.left camera_top = self.renderer._cam_rect.top view = enemies_view[collision].copy() view.left -= camera_left view.top -= camera_top pygame.draw.rect(screen, (255, 0, 0), view, 3) return util.STATE_GameOver # maybe you did it? tiles = util.neighbour_tiles(hero.rect.center, self.level.sprite_layers[3]) if(hero.rect.collidelist(tiles) != -1): if self.next_level() == False: return util.STATE_GameComplete return util.STATE_InGame
SCORE += enemy.getScore() enemy.kill() enemy_list.remove(enemy) all_sprites_list.remove(enemy) wizard_.Gain() projectile_list.remove(projectile_) all_sprites_list.remove(projectile_) projectile_.reset() if projectile_.rect.x > SCREEN_WIDTH+50 or projectile_.rect.y > SCREEN_HEIGHT+50: projectile_list.remove(projectile_) all_sprites_list.remove(projectile_) projectile_.reset() for enemy in enemy_list: if enemy.rect.x > 40: enemy.rect.x -=ENEMYSPEED enemy.update() else: enemy.attack() if atkSpeed==30: wizard_.LoseHealth(enemy.dmg) elif atkSpeed>30: atkSpeed=0 atkSpeed+=1 paintScene() pygame.display.update()