Exemplo n.º 1
0
    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
Exemplo n.º 2
0
    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()
Exemplo n.º 3
0
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)
Exemplo n.º 4
0
 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"
Exemplo n.º 5
0
    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()
Exemplo n.º 6
0
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()
Exemplo n.º 7
0
 def update(self):
     """updates all the enemies"""
     for enemy in self.enemies:
         enemy.update()
Exemplo n.º 8
0
        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)
Exemplo n.º 9
0
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
Exemplo n.º 10
0
    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
Exemplo n.º 11
0
						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()