Ejemplo n.º 1
0
    def __init__(self, util):
        self.util = util
        self.level_solved = False

        self.player_1 = Player(self, 2, 21)
        self.player_2 = Player(self, 2, 18)
        self.player_3 = Player(self, 2, 15)
        self.player_4 = Player(self, 2, 12)
        self.player_5 = Player(self, 2, 9)
        self.players = [
            self.player_1, self.player_2, self.player_3, self.player_4,
            self.player_5
        ]

        self.door_1 = Door(29, 21)
        self.door_2 = Door(29, 18)
        self.door_3 = Door(29, 15)
        self.door_4 = Door(29, 12)
        self.door_5 = Door(29, 9)
        self.doors = [
            self.door_1, self.door_2, self.door_3, self.door_4, self.door_5
        ]

        self.walls = []

        self.pillars = []

        self.level = Level2(self)
Ejemplo n.º 2
0
 def __init__(self, name, screen, screen_height, screen_width):
     Player.__init__(self, name, screen, screen_height, screen_width)
     try:
         self.predictive_model = load_model('pong_conv2d.h5')
         self.y_mean = joblib.load(y_mean_dir)
         self.x_mean = joblib.load(x_mean_dir)
     except Exception as e:
         print Exception
         print "Models or parameters above not found, train the model first"
         print """To train the model use pong2players.py script to gather
Ejemplo n.º 3
0
 def test_destroy(self):
     game_data.game_objects.clear()
     cords = Vector(10, 20)
     size_p = Size(30, 30)
     player = Player(cords.x, cords.y, size_p)
     Player.fire(player)
     bullet = self.find_bullet()
     self.assertIsNotNone(bullet)
     self.assertIsNotNone(player.bullet)
     bullet.destroy()
     self.assertEqual(game_data.game_objects[-1].name, "Animation")
     self.assertIn(bullet.id, game_data.for_destroy)
     self.assertIsNone(player.bullet)
Ejemplo n.º 4
0
 def read_map_data(args):
     args = clean_list(args)
     # stage length is determined by the first map row.
     stage_length = 0
     y = 0
     for index, line in enumerate(args):
         x = 0
         line = line.rstrip().split(',')
         for column in line:
             column = column.capitalize()
             if column in map_data:
                 if column == 'G':  # ground
                     ground = Ground(0, 0, 70, 70, x, y)
                     map_data[column].append(ground)
                 elif column == 'I':  # ice
                     ice = Ice(0, 0, 70, 70, x, y)
                     map_data[column].append(ice)
                 elif column == 'R':  # rock
                     rock = Rock(0, 0, 70, 70, x, y)
                     map_data[column].append(rock)
                 elif column == 'C':  # coin
                     coin = Coin(0, 0, 38, 38, x + 19, y + 19)
                     map_data[column].append(coin)
                 elif column == 'E':  # enemy
                     enemy = Enemy(0, 0, 70, 30, x, y)
                     map_data[column].append(enemy)
                 elif column == 'S':  # spike
                     spike = Spike(0, 0, 70, 35, x, y + 35)
                     map_data[column].append(spike)
                 elif column == 'F':  # flag
                     if map_data[
                             column] is not None:  #only one winning flag per game
                         raise CorruptedMapFileError(
                             "Only one winning flag per game.")
                     else:
                         flag = Flag(0, 0, 70, 70, x, y)
                         map_data[column] = flag
                 elif column == 'B':  # box
                     box = Box(0, 0, 70, 70, x, y)
                     map_data[column].append(box)
                 elif column == 'P':  # player
                     if map_data[
                             column] is not None:  # if there ia already an Player added
                         raise CorruptedMapFileError(
                             "Only one player per game!")
                     else:
                         player = Player(0, 0, 50, 29, x, y, None)
                         map_data[column] = player
             x += 70
         # set the stage_length when we are at the 0 index
         if index == 0:
             stage_length = x
             map_data["length"] = stage_length
         else:
             if x != stage_length:
                 raise CorruptedMapFileError(
                     "Error while reading map data. All of the rows should have equal amount of blocks."
                 )
         y += 70
Ejemplo n.º 5
0
    def __init__(self, clients):
        players = []
        coordinates = self.get_coordinates(len(clients))
        for index, client in enumerate(clients):
            players.append(Player(index + 1, *next(coordinates), 'Player {}'.format(index + 1), PLAYER_COLORS[index], client))

        self.players = players
        self.losers = []
        self.bonuses = []
        self.game_log = []
        self.tick = 1
Ejemplo n.º 6
0
    def __init__(self, util):
        self.util = util
        self.level_solved = False

        self.player = Player(self, 27, 27)
        self.players = [self.player]

        self.doors = []

        self.walls = []

        self.pillars = []
        self.randomize_pillars()

        self.level = Level6(self)
Ejemplo n.º 7
0
    def __init__(self, util):
        self.util = util
        self.level_solved = False

        self.player = Player(self, 1, 1)
        self.players = [self.player]

        self.door = Door(29, 15)
        self.doors = [self.door]

        self.walls = []

        self.pillars = []

        self.level = Level1(self)
Ejemplo n.º 8
0
    def __init__(self, clients):
        players = []
        coordinates = self.get_coordinates(len(clients))
        for index, client in enumerate(clients):
            players.append(
                Player(index + 1, *next(coordinates),
                       'Player {}'.format(index + 1),
                       CONSTS.PLAYER_COLORS[index], client))

        self.players = players
        self.losers = []
        self.bonuses = []
        self.game_log = []
        self.events = []
        self.tick = 1
        self.available_bonuses = [
            b for b in [Nitro, Slowdown, Saw]
            if b.visio_name in CONSTS.AVAILABLE_BONUSES
        ]
Ejemplo n.º 9
0
    def __init__(self, util):
        self.util = util
        self.level_solved = False

        self.player = Player(self, 21, 22)
        self.players = [self.player]

        self.doors = []

        self.walls = []

        self.p_0 = Pillar(21, 22)
        self.p_1 = Pillar(17, 22)
        self.p_2 = Pillar(17, 18)
        self.p_3 = Pillar(11, 18)
        self.p_4 = Pillar(11, 12)
        self.p_5 = Pillar(21, 12)
        self.p_6 = Pillar(21, 18)
        self.pillars = [self.p_0, self.p_1, self.p_2, self.p_3, self.p_4, self.p_5, self.p_6]

        self.level = Level5(self)
Ejemplo n.º 10
0
class GameInterface(Interface):
    attack: AttackPattern = None
    aii: ArrayInterfaceImage = None
    background_sprite: Sprite = None
    batch: Batch = None
    border: Rectangle = None
    enemy: Enemy = None
    image = None
    facecam: Facecam = None
    face_cascade = None
    foreground_sprite: Sprite = None
    fps_display: FPSDisplay = None
    keys = key.KeyStateHandler()
    player: Player = None
    projectiles: List[Projectile] = []
    powerup: Powerup = None
    scheduled_functions = tuple()

    def __init__(self):
        super().__init__()
        window = system.get_window()
        gl.glEnable(gl.GL_BLEND)
        gl.glBlendFunc(gl.GL_SRC_ALPHA, gl.GL_ONE_MINUS_SRC_ALPHA)
        base_path = os.path.join('images', 'space_background_pack', 'layers')

        self.background = load(os.path.join(base_path, 'parallax-space-background.png'))
        self.background_sprite = Sprite(self.background)
        big_planet = load(os.path.join(base_path, 'parallax-space-big-planet.png'))
        self.big_planet_sprite = Sprite(big_planet)
        far_planet = load(os.path.join(base_path, 'parallax-space-far-planets.png'))
        self.far_planet_sprite = Sprite(far_planet)
        ring_planet = load(os.path.join(base_path, 'parallax-space-ring-planet.png'))
        self.ring_planet_sprite = Sprite(ring_planet)
        self.ring_planet_sprite.x = 100
        self.ring_planet_sprite.y = 100
        stars = load(os.path.join(base_path, 'parallax-space-stars.png'))
        self.stars_sprite = Sprite(stars)
        self.scheduled_functions = (
            (self.randomize_projectiles, 2),
            (self.check_direction, 1 / 120),
            (self.generate_powerup, 20)
        )

        if config.get_config('control') == 1:
            self.face_cascade = cv.CascadeClassifier(
                'venv/Lib/site-packages/cv2/data/haarcascade_frontalface_default.xml')
            self.facecam = Facecam(face_cascade=self.face_cascade).start()
            self.aii = ArrayInterfaceImage(self.facecam.read(), 'BGR')
            self.image = self.aii.texture

            @self.facecam.event('on_face_move')
            def follow_face(x, y, width, height):
                # Need to flip things first to work
                x = self.image.width - x
                y = self.image.height - y
                new_x = self.border.x + x - width // 2
                new_y = self.border.y + y - height // 2
                self.player.move(new_x, new_y)

            self.scheduled_functions = (
                (self.randomize_projectiles, 2),
                (self.generate_powerup, 20),
            )

            window.push_handlers(self.facecam)

        self.player = Player(src='images/ufo.png')
        self.border = Rectangle(
            width=(500 if not self.image else self.image.width) + 10,
            height=(500 if not self.image else self.image.height) + 10,
            color=(0, 0, 0, 127)
        )
        self.player.scale = 1.2
        self.batch = Batch()
        self.projectiles: List[Projectile] = []
        window.push_handlers(self.keys)

        def pause_game(symbol, modifiers):
            if symbol == key.ESCAPE:
                self.enemy.running = not self.enemy.running
                self.enemy.attack_pattern.running = not self.enemy.attack_pattern.running
                self.player.running = not self.player.running

        window.on_key_press = pause_game

        for func, interval in self.scheduled_functions:
            clock.schedule_interval(func, interval)
        self.fps_display = FPSDisplay(window)
        self.generate_enemy(0)
        self.resize()

    def generate_enemy(self, dt):
        enemy_index = config.get_config('enemy')
        if enemy_index > len(enemies) - 1:
            return system.get_window().load_interface(WinInterface())

        window = system.get_window()
        self.enemy = enemies[enemy_index](self.batch, speed=100)
        self.enemy.move(window.width * 0.8, window.height / 2)
        self.enemy.next_x, self.enemy.next_y = self.enemy.x, self.enemy.y

        def on_die():
            config.set_config('enemy', config.get_config('enemy') + 1)
            clock.schedule_once(self.generate_enemy, 2)

        self.enemy.on_die = on_die

    def resize(self):
        window = system.get_window()
        scale = window.width / self.background.width
        self.background_sprite.scale = scale
        self.big_planet_sprite.scale = scale / 2
        self.far_planet_sprite.scale = scale / 2
        self.ring_planet_sprite.scale = scale / 2
        self.stars_sprite.scale = scale

        self.big_planet_sprite.x = window.width / 2
        self.big_planet_sprite.y = window.height / 2
        self.far_planet_sprite.x = window.width - self.far_planet_sprite.width
        self.far_planet_sprite.y = window.height - self.far_planet_sprite.height

        if self.image:
            self.image.x = (window.width - self.image.width) / 2
            self.image.y = (window.height - self.image.height) / 2
        self.border.x = window.width / 2 * 0.3
        self.border.y = (window.height - self.border.height) / 2

        self.generate_powerup(0)
        self.player.move(x=window.width / 2 * 0.3, y=window.height / 2)

    def on_draw(self):
        self.animate_background()
        self.background_sprite.draw()
        self.big_planet_sprite.draw()
        self.far_planet_sprite.draw()
        self.ring_planet_sprite.draw()
        self.stars_sprite.draw()
        self.border.draw()
        if self.facecam:
            img = self.facecam.read()
            img = cv.flip(img, -1)
            self.image.blit(self.border.x, self.border.y, 0)
            self.aii.view_new_array(img)
        # self.fps_display.draw()
        self.player.draw()
        self.batch.draw()
        # self.attack.draw()
        if self.enemy:
            self.enemy.draw()
        if self.powerup:
            self.powerup.forward()
            self.powerup.draw()
            if self.player.check_for_collision(self.powerup):
                self.powerup.on_collide(self.player)
                self.powerup.delete()
                self.powerup = None

    def animate_background(self):
        big_planet_sprite_depth = 3
        far_planet_sprite_depth = 10
        ring_planet_sprite_depth = 5
        stars_sprite_depth = 8

        window = system.get_window()
        self.big_planet_sprite.x = self.big_planet_sprite.x - 1 * (1 / big_planet_sprite_depth)
        if self.big_planet_sprite.x + self.big_planet_sprite.width <= 0:
            self.big_planet_sprite.x = window.width
        self.far_planet_sprite.x = self.far_planet_sprite.x - 1 * (1 / far_planet_sprite_depth)
        if self.far_planet_sprite.x + self.far_planet_sprite.width <= 0:
            self.far_planet_sprite.x = window.width
        self.ring_planet_sprite.x = self.ring_planet_sprite.x - 1 * (1 / ring_planet_sprite_depth)
        if self.ring_planet_sprite.x + self.ring_planet_sprite.width <= 0:
            self.ring_planet_sprite.x = window.width
        self.stars_sprite.x = self.stars_sprite.x - 1 * (1 / stars_sprite_depth)
        if self.stars_sprite.x + self.stars_sprite.width <= 0:
            self.stars_sprite.x = window.width

    def generate_powerup(self, dt):
        window = system.get_window()
        # roll = random.randint(1, 10)
        roll = 1
        if roll <= 3:  # 30% chance of getting a powerup
            powerup = random.choice(powerups)(batch=self.batch)
            x = random.randint(int(self.border.x), int(self.border.x + self.border.width))
            powerup.move(x=x, y=window.height)

            @powerup.movement
            def movement():
                powerup.move(powerup.x, powerup.y - powerup.calculate_speed())

            self.powerup = powerup

    def randomize_projectiles(self, dt):
        if self.enemy:
            self.enemy.attack_pattern.generate()

    def check_direction(self, dt):
        unit = 500 * dt
        if self.keys[key.DOWN]:
            if self.player.get_bot_bound() - unit >= self.border.y:
                self.player.move(self.player.x, self.player.y - unit)
        elif self.keys[key.UP]:
            if self.player.get_bot_bound() + self.player.height + unit <= self.border.y + self.border.height:
                self.player.move(self.player.x, self.player.y + unit)
                # self.player.y += unit
        if self.keys[key.LEFT]:
            if self.player.get_left_bound() - unit >= self.border.x:
                self.player.move(self.player.x - unit, self.player.y)
        elif self.keys[key.RIGHT]:
            if self.player.get_left_bound() + self.player.width + unit <= self.border.x + self.border.width:
                self.player.move(self.player.x + unit, self.player.y)
        # if self.keys[key.ESCAPE]:
        # fg_ratio = 0.4
        # bg_ratio = 0.1
        # self.foreground_sprite.x = (window.width * (1 + fg_ratio)) / 2 - self.player.x * fg_ratio
        # self.foreground_sprite.y = (window.height * (1 + fg_ratio)) / 2 - self.player.y * fg_ratio
        # self.background_sprite.x = (window.width * (1 + bg_ratio)) / 2 - self.player.x * bg_ratio
        # self.background_sprite.y = (window.height * (1 + bg_ratio)) / 2 - self.player.y * bg_ratio

    def clean(self):
        self.enemy.clean()
        if self.facecam:
            self.facecam.clean()
        print(f'Deleting {self}')
        super().clean()
Ejemplo n.º 11
0
def main():
    backgscale = pygame.transform.scale(backg, (SCR_WID, SCR_HEI))
    try:
        ai_player = sys.argv[1]
    except:
        ai_player = 'linear'

    SCREEN_REDUCE = 16

    global player
    if ai_player == 'conv':
        player = Conv2DPlayer("player1", screen, SCR_HEI, SCR_WID)
    elif ai_player == 'linear':
        player = ElasticNetPlayer("player1", screen, SCR_HEI, SCR_WID)

    global enemy
    enemy = Player("player2", screen, SCR_HEI, SCR_WID)

    block = Block()
    got.add(block)

    ball = Ball(screen, SCR_HEI, SCR_WID, player, enemy)
    Call.add(ball)

    prev_screen_1 = None
    prev_screen_2 = None
    i = 0
    while True:

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                print("Game exited by user")
                exit()

        screen.blit(backg, (0, 0))
        got.update()
        Call.update()
        backgscale = pygame.transform.scale(backg, (SCR_WID, SCR_HEI))
        got.draw(screen)
        Call.draw(screen)
        screen_np = (pygame.surfarray.array2d(screen)[SCREEN_REDUCE *
                                                      2:SCR_WID -
                                                      SCREEN_REDUCE, :])
        screen_np = screen_np.flatten().reshape(1, -1) - x_mean
        prev_screen_2 = prev_screen_1
        prev_screen_1 = screen_np

        player.draw()
        enemy.draw()
        if i > 2:

            screen_sequence = np.concatenate(
                [prev_screen_2, prev_screen_1, screen_np], axis=1)

            player.movement(screen_sequence)

        else:
            player.movement(None)
        enemy.movement()
        ball.movement()
        enemy.scoring()
        player.scoring()
        i += 1
        pygame.display.flip()
        clock.tick(FPS)
Ejemplo n.º 12
0
 def test_upd(self):
     game_data.game_objects.clear()
     game_data.for_destroy.clear()
     game_data.map_width = 500
     game_data.map_height = 500
     cords_p = Vector(50, 50)
     size_p = Size(30, 30)
     player = Player(cords_p.x, cords_p.y, size_p)
     cords = Vector(200, 200)
     size = Size(12, 10)
     bullet = Bullet(cords.x,
                     cords.y,
                     size,
                     Direction.Up,
                     False,
                     player=player)
     player.bullet = bullet
     BonusClock()
     Bullet.upd(bullet)
     self.check_obj_position(bullet, Vector(200, 197))
     self.assertEqual(len(game_data.for_destroy), 0)
     wall = Wall(200, 196, Size(40, 40))
     Bullet.upd(bullet)
     self.check_obj_position(bullet, Vector(200, 194))
     self.assertIn(bullet.id, game_data.for_destroy)
     self.assertNotIn(wall.id, game_data.for_destroy)
     game_data.game_objects.pop()
     game_data.for_destroy.clear()
     player.position = Vector(200, 192)
     Bullet.upd(bullet)
     self.check_obj_position(bullet, Vector(200, 191))
     self.assertIn(bullet.id, game_data.for_destroy)
     self.assertIn(player.id, game_data.for_destroy)
     size_by_direction = {
         Direction.Up: Size(12, 10),
         Direction.Right: Size(10, 13),
         Direction.Down: Size(13, 10),
         Direction.Left: Size(10, 13)
     }
     # r
     bullet.direction = Direction.Right
     bullet.size = size_by_direction[bullet.direction]
     game_data.game_objects.pop(0)
     game_data.for_destroy.clear()
     Bullet.upd(bullet)
     self.check_obj_position(bullet, Vector(203, 191))
     # d
     bullet.direction = Direction.Down
     bullet.size = size_by_direction[bullet.direction]
     Bullet.upd(bullet)
     self.check_obj_position(bullet, Vector(203, 194))
     # l
     bullet.direction = Direction.Left
     bullet.size = size_by_direction[bullet.direction]
     Bullet.upd(bullet)
     self.check_obj_position(bullet, Vector(200, 194))
     bullet.position = Vector(26, 26)
     bullet.direction = Direction.Up
     bullet.size = size_by_direction[bullet.direction]
     Bullet.upd(bullet)
     self.assertIn(bullet.id, game_data.for_destroy)
Ejemplo n.º 13
0
    def __init__(self, util):
        self.util = util
        self.level_solved = False

        self.p_1 = Player(self, 1, 5)
        self.p_2 = Player(self, 3, 25)
        self.p_3 = Player(self, 5, 5)
        self.p_4 = Player(self, 7, 25)
        self.p_5 = Player(self, 9, 5)
        self.p_6 = Player(self, 11, 25)
        self.p_7 = Player(self, 13, 5)
        self.p_8 = Player(self, 15, 25)
        self.p_9 = Player(self, 17, 5)
        self.p_10 = Player(self, 19, 25)
        self.p_11 = Player(self, 21, 5)
        self.p_12 = Player(self, 23, 25)
        self.p_13 = Player(self, 25, 5)
        self.p_14 = Player(self, 27, 25)
        self.p_15 = Player(self, 29, 5)
        self.p_16 = Player(self, 31, 25)
        self.players = [
            self.p_1, self.p_2, self.p_3, self.p_4, self.p_5, self.p_6,
            self.p_7, self.p_8, self.p_9, self.p_10, self.p_11, self.p_12,
            self.p_13, self.p_14, self.p_15, self.p_16
        ]

        self.g_1 = Door(1, 25)
        self.g_2 = Door(3, 5)
        self.g_3 = Door(5, 25)
        self.g_4 = Door(7, 5)
        self.g_5 = Door(9, 25)
        self.g_6 = Door(11, 5)
        self.g_7 = Door(13, 25)
        self.g_8 = Door(15, 5)
        self.g_9 = Door(17, 25)
        self.g_10 = Door(19, 5)
        self.g_11 = Door(21, 25)
        self.g_12 = Door(23, 5)
        self.g_13 = Door(25, 25)
        self.g_14 = Door(27, 5)
        self.g_15 = Door(29, 25)
        self.g_16 = Door(31, 5)
        self.doors = [
            self.g_1, self.g_2, self.g_3, self.g_4, self.g_5, self.g_6,
            self.g_7, self.g_8, self.g_9, self.g_10, self.g_11, self.g_12,
            self.g_13, self.g_14, self.g_15, self.g_16
        ]

        self.pillars = []

        self.walls = []

        self.level = Level3(self)
Ejemplo n.º 14
0
    def __init__(self, util):
        self.util = util
        self.level_solved = False

        self.p_1 = Player(self, 1, 5)
        self.p_2 = Player(self, 3, 5)
        self.p_3 = Player(self, 5, 5)
        self.p_4 = Player(self, 7, 5)
        self.p_5 = Player(self, 9, 5)
        self.p_6 = Player(self, 11, 5)
        self.p_7 = Player(self, 13, 5)
        self.p_8 = Player(self, 15, 5)
        self.p_9 = Player(self, 17, 5)
        self.p_10 = Player(self, 19, 5)
        self.p_11 = Player(self, 21, 5)
        self.p_12 = Player(self, 23, 5)
        self.p_13 = Player(self, 25, 5)
        self.p_14 = Player(self, 27, 5)
        self.p_15 = Player(self, 29, 5)
        self.p_16 = Player(self, 31, 5)
        self.players = [
            self.p_1, self.p_2, self.p_3, self.p_4, self.p_5, self.p_6,
            self.p_7, self.p_8, self.p_9, self.p_10, self.p_11, self.p_12,
            self.p_13, self.p_14, self.p_15, self.p_16
        ]

        self.door = Door(15, 15)
        self.doors = [self.door]

        self.pillars = []

        self.walls = []

        self.level = Level4(self)
Ejemplo n.º 15
0
    def __init__(self):
        super().__init__()
        window = system.get_window()
        gl.glEnable(gl.GL_BLEND)
        gl.glBlendFunc(gl.GL_SRC_ALPHA, gl.GL_ONE_MINUS_SRC_ALPHA)
        base_path = os.path.join('images', 'space_background_pack', 'layers')

        self.background = load(os.path.join(base_path, 'parallax-space-background.png'))
        self.background_sprite = Sprite(self.background)
        big_planet = load(os.path.join(base_path, 'parallax-space-big-planet.png'))
        self.big_planet_sprite = Sprite(big_planet)
        far_planet = load(os.path.join(base_path, 'parallax-space-far-planets.png'))
        self.far_planet_sprite = Sprite(far_planet)
        ring_planet = load(os.path.join(base_path, 'parallax-space-ring-planet.png'))
        self.ring_planet_sprite = Sprite(ring_planet)
        self.ring_planet_sprite.x = 100
        self.ring_planet_sprite.y = 100
        stars = load(os.path.join(base_path, 'parallax-space-stars.png'))
        self.stars_sprite = Sprite(stars)
        self.scheduled_functions = (
            (self.randomize_projectiles, 2),
            (self.check_direction, 1 / 120),
            (self.generate_powerup, 20)
        )

        if config.get_config('control') == 1:
            self.face_cascade = cv.CascadeClassifier(
                'venv/Lib/site-packages/cv2/data/haarcascade_frontalface_default.xml')
            self.facecam = Facecam(face_cascade=self.face_cascade).start()
            self.aii = ArrayInterfaceImage(self.facecam.read(), 'BGR')
            self.image = self.aii.texture

            @self.facecam.event('on_face_move')
            def follow_face(x, y, width, height):
                # Need to flip things first to work
                x = self.image.width - x
                y = self.image.height - y
                new_x = self.border.x + x - width // 2
                new_y = self.border.y + y - height // 2
                self.player.move(new_x, new_y)

            self.scheduled_functions = (
                (self.randomize_projectiles, 2),
                (self.generate_powerup, 20),
            )

            window.push_handlers(self.facecam)

        self.player = Player(src='images/ufo.png')
        self.border = Rectangle(
            width=(500 if not self.image else self.image.width) + 10,
            height=(500 if not self.image else self.image.height) + 10,
            color=(0, 0, 0, 127)
        )
        self.player.scale = 1.2
        self.batch = Batch()
        self.projectiles: List[Projectile] = []
        window.push_handlers(self.keys)

        def pause_game(symbol, modifiers):
            if symbol == key.ESCAPE:
                self.enemy.running = not self.enemy.running
                self.enemy.attack_pattern.running = not self.enemy.attack_pattern.running
                self.player.running = not self.player.running

        window.on_key_press = pause_game

        for func, interval in self.scheduled_functions:
            clock.schedule_interval(func, interval)
        self.fps_display = FPSDisplay(window)
        self.generate_enemy(0)
        self.resize()
 def __init__(self, name, screen, screen_height, screen_width):
     Player.__init__(self, name, screen, screen_height, screen_width)
Ejemplo n.º 17
0
from game_objects.projectile import Projectile
from game_objects.player import Player
from pyglet import clock
from widgets.event_window import EventWindow
import pyglet
import cv2 as cv
import time

window = EventWindow(fullscreen=True)
# soul_image = pyglet.image.load('soul.png')
# soul = pyglet.sprite.Sprite(soul_image)
soul = Player(src='soul.png')
print(soul.width, soul.height)
print(window.width / 2, window.height / 2)
soul.move(window.width / 2 - soul.width, window.height / 2 - soul.height)
soul.scale = 1.3
print('Soul: ', soul.x, soul.y, soul.width, soul.height)
soul_np = cv.imread('soul.png')
projectile = Projectile(src='projectiles/dull_knife.png',
                        speed=10,
                        x=window.width * 0.7,
                        y=window.height)
# projectile.x = window.width / 3
# projectile.rectangle.x = projectile.x
# projectile.y = window.height / 2
# projectile.rectangle.y = projectile.y
projectile.point(soul.x, soul.y)


@window.event
def on_draw():