Beispiel #1
0
def update_bonus():
    """
    Метод update для SET_BONUS.
    :return: None
    """
    for bonus in constants.SET_BONUS.copy():
        map.set_object(bonus.position, bonus)
Beispiel #2
0
 def delete(self):
     """
     Метод удаляет Bonus из множестве и Объектной карты.
     :return: None
     """
     map.set_object(self.position, None)
     constants.SET_BONUS.discard(self)
Beispiel #3
0
 def death(self):
     """
     Метод смерти.
     :return: None
     """
     map.set_object(self.position, None)
     self.color = QColor(128, 128, 128)
Beispiel #4
0
    def test_drop_bomb_green(self):
        self.player.type_bomb = 1

        map.set_object(self.player.position, self.player)
        self.player.drop_bomb()
        print(SET_BOMBS.__len__())

        self.assertEqual(type(self.green_bomb), type(SET_BOMBS.pop()))
Beispiel #5
0
 def end_lvl(self):
     """
     Метод создания партала для перехода на сл. уровень.
     :return: None
     """
     bonus = Bonus(self.position, portal=True, color=QColor(*COLOR_RED))
     map.set_object(self.position, bonus)
     constants.SET_BONUS.add(bonus)
Beispiel #6
0
    def test_drop_bomb_empty(self):
        self.player.type_bomb = 1
        self.player.count_bomb = 0

        map.set_object(self.player.position, self.player)
        self.player.drop_bomb()
        print(SET_BOMBS.__len__())

        self.assertEqual(0, SET_BOMBS.__len__())
Beispiel #7
0
    def remove(self):
        """
        Метод удаляет бомбу из Множества бомб и Объектной карты после взрыва.
        :return: None
        """
        map.set_object(self.position, None)
        constants.SET_BOMBS.discard(self)
        if self.screen:
            self.anime_bomb.clear()

        self.player.refresh_bomb()
Beispiel #8
0
    def test_move_down(self):
        map.read_map('map\map.txt')
        direction = 'down'
        map.set_object(self.player.position, self.player)

        maybe_new_position = list(self.player.position)
        maybe_new_position[1] += self.player.step

        self.player.move(direction)

        self.assertEqual(map.get_object(maybe_new_position),
                         map.get_object(self.player.position))
Beispiel #9
0
    def test_move_bonus(self):
        map.read_map('map\map.txt')
        direction = 'right'
        self.player.position = [1, 1]
        bonus = Bonus([2, 1])
        map.set_object(self.player.position, self.player)
        map.set_object(bonus.position, bonus)

        maybe_new_position = list(self.player.position)
        maybe_new_position[0] += self.player.step

        self.player.move(direction)

        self.assertEqual(map.get_object(maybe_new_position),
                         map.get_object(self.player.position))
Beispiel #10
0
    def test_move_wall(self):
        map.read_map('map\map.txt')
        direction = 'left'
        self.player.position = [1, 1]
        map.set_object(self.player.position, self.player)

        default_position = self.player.position

        maybe_new_position = list(self.player.position)
        maybe_new_position[0] -= self.player.step

        self.player.move(direction)

        self.assertEqual(map.get_object(default_position),
                         map.get_object(self.player.position))
Beispiel #11
0
 def death(self):
     """
     Метод смерти и дропа Bonus после смерти, если это последний монстр на карте, дроп партала на сл. уровень.
     :return: None
     """
     map.set_object(self.position, None)
     constants.LIST_ENEMY.remove(self)
     if len(constants.LIST_ENEMY) == 0:
         self.end_lvl()
     else:
         bonus = Bonus(self.position)
         map.set_object(self.position, bonus)
         constants.SET_BONUS.add(bonus)
         if self.screen:
             self.anime_enemy.clear()
Beispiel #12
0
    def test_move_enemy(self):
        map.read_map('map\map.txt')
        direction = 'right'
        self.player.position = [1, 1]
        enemy = Lower([2, 1])
        map.set_object(self.player.position, self.player)
        map.set_object(enemy.position, enemy)

        default_position = self.player.position

        maybe_new_position = list(self.player.position)
        maybe_new_position[0] += self.player.step

        self.player.move(direction)

        self.assertEqual(map.get_object(default_position),
                         map.get_object(self.player.position))
Beispiel #13
0
    def test_move_bomb(self):
        map.read_map('map\map.txt')
        direction = 'right'
        self.player.position = [1, 1]
        self.simple_bomb.position = [2, 1]
        map.set_object(self.player.position, self.player)
        map.set_object(self.simple_bomb.position, self.simple_bomb)

        default_position = self.player.position

        maybe_new_position = list(self.player.position)
        maybe_new_position[0] += self.player.step

        self.player.move(direction)

        self.assertEqual(map.get_object(default_position),
                         map.get_object(self.player.position))
Beispiel #14
0
    def try_move(self, new_position):
        """
        Метод пытается переместить Player на координату new_position с помощью метода map.can_move.
        Если map.can_move вернёт True, то заменяем объект по координате new_position на Player и делаем пустой
        позицию где стоял Player.
        :param new_position: Параметр принимает координату, куда хочет перейти Player.
        :return: None
        """
        if not map.can_move(new_position):
            return

        if isinstance(map.get_object(self.position), Player):
            map.set_object(self.position, None)
        map.set_object(new_position, self)
        if self.screen:
            self.screen.anime_player3(self.position, new_position)
        self.position = new_position
Beispiel #15
0
 def drop_bomb(self):
     """
     Метод установки бомбы.
     :return: None
     """
     if isinstance(map.get_object(self.position),
                   Player) and self.count_bomb > 0.9:
         if self.type_bomb == 0:
             is_bomb = SimpleBomb(self.position,
                                  self,
                                  self.power_bomb,
                                  screen=self.screen)
         else:
             is_bomb = Mine(self.position, self, screen=self.screen)
         constants.SET_BOMBS.add(is_bomb)
         map.set_object(self.position, is_bomb)
         self.count_bomb -= 1
         print('Осталось: {} бомб(ы)'.format(self.count_bomb))
     else:
         return
Beispiel #16
0
    def try_move(self, direction):
        """
        Метод пытается переместить Enemy по направлению direction с помощью метода map.can_move.
        Если map.can_move вернёт True, то заменяем объект по направлению direction на Enemy и делаем пустой
        позицию где стоял Enemy.
        :param direction: Параметр принимает направление, куда двигается Enemy.
        :return: None
        """
        new_position = list(self.position)

        if direction == 'left':
            new_position[0] -= self.step
        elif direction == 'right':
            new_position[0] += self.step
        elif direction == 'down':
            new_position[1] += self.step
        elif direction == 'up':
            new_position[1] -= self.step

        if not map.can_move(new_position):
            # Короче, если моб попадает в 'ловушку' пускай умирает, чтобы небыло рекурсии*
            try:
                self.choose_direction()
            except RecursionError:
                self.death()

            return

        if isinstance(map.get_object(self.position), Enemy):
            map.set_object(self.position, None)

        if not isinstance(map.get_object(new_position), Player):
            map.set_object(new_position, self)

        self.position = new_position  # узанть почему подчёркивает.

        return True