<MyRusakov.ru />

Финансовая грамотность от А до Я

Финансовая грамотность от А до Я

Данный курс в кратчайшие сроки обучит Вас финансовой грамотности. Эти знания позволят Вам получить, как минимум, серьёзную финансовую стабильность, а, как максимум, финансовую независимость.

В рамках курса даётся большое количество практических заданий, благодаря которым Вы не просто посмотрите курс, а действительно выполните ряд важнейших шагов, о которых в нём говорится.

Помимо самого курса Вас ждёт ещё бесплатный ценный Бонус: «Ранний выход на пенсию». В рамках этого Бонуса Вы узнаете, какой должен быть капитал конкретно в Вашем случае, варианты его получения, а также какие есть стратегии вывода капитала на пенсии и где их можно протестировать.

Подробнее
Подписка

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Какая тема Вас интересует больше?

Космические приключения с Python и Pygame. Обработка столкновений

Космические приключения с Python и  Pygame. Обработка столкновений

Мы продолжаем создание игры про "Космические приключения" с Python и Pygame. Очень важной частью этой игры является возможность уничтожения вашего космического корабля в результате столкновения с астероидом. И в сегодняшней статье мы рассмотрим как реализовать данную возможность Вы можете проверить столкновения, используя GameObject.collides_with(), представленную в одной статей. Все, что вам нужно сделать, это вызвать этот метод для каждого астероида.

Отредактируйте метод _process_game_logic() в классе SpaceRocks из файла game.py следующим образом:


def _process_game_logic(self):
    for game_object in self._get_game_objects():
        game_object.move(self.screen)

    if self.spaceship:
        for asteroid in self.asteroids:
            if asteroid.collides_with(self.spaceship):
                self.spaceship = None
                break

Если какой-либо из астероидов сталкивается с космическим кораблем, то космический корабль уничтожается. В этой игре вы представите это, установив для self.spaceship значение None.

Обратите внимание, что в начале цикла также есть проверка для self.spaceship. Это потому, что когда космический корабль уничтожен, нет причин проверять какие-либо столкновения с ним. Кроме того, обнаружение столкновения с объектом None приведет к ошибке.

Теперь, когда космический корабль может иметь значение None, важно обновить _get_game_objects() в классе SpaceRocks, чтобы избежать попыток отрисовать или переместить разрушенный космический корабль:


def _get_game_objects(self):
    game_objects = [*self.asteroids]

    if self.spaceship:
        game_objects.append(self.spaceship)

    return game_objects


То же самое касается обработки ввода:


def _handle_input(self):
    for event in pygame.event.get():
        if event.type == pygame.QUIT or (
            event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE
        ):
            quit()

    is_key_pressed = pygame.key.get_pressed()

    if self.spaceship:
        if is_key_pressed[pygame.K_RIGHT]:
            self.spaceship.rotate(clockwise=True)
        elif is_key_pressed[pygame.K_LEFT]:
            self.spaceship.rotate(clockwise=False)
        if is_key_pressed[pygame.K_UP]:
            self.spaceship.accelerate()


Теперь вы можете запустить свою игру и увидеть, что космический корабль исчезает после столкновения с астероидом:


Изображение

Теперь ваш космический корабль может летать и уничтожаться при столкновении с астероидами.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (0):

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.