def update_bonus(): """ Метод update для SET_BONUS. :return: None """ for bonus in constants.SET_BONUS.copy(): map.set_object(bonus.position, bonus)
def delete(self): """ Метод удаляет Bonus из множестве и Объектной карты. :return: None """ map.set_object(self.position, None) constants.SET_BONUS.discard(self)
def death(self): """ Метод смерти. :return: None """ map.set_object(self.position, None) self.color = QColor(128, 128, 128)
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()))
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)
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__())
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()
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))
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))
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))
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()
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))
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))
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
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
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