Космические приключения с Python и Pygame. Перемещение астероидов
Здравствуйте! В цикле статей по созданию космической аркады, с Python и Pygame, мы достигли того что на игровом поле отображается космический корабль и шесть астероидов, разбросанных в случайном порядке. При этом астероиды недвижимы. И в сегодняшней статье мы еще немного оживим игру, придав им возможность движения.
Так же как и в случае с положением астероидов, случайными должны быть не только направление движения, но и значения скорости.
Начнем с создания метода get_random_velosity() в файле space_rock/utils.py:
def get_random_velocity(min_speed, max_speed):
speed = random.randint(min_speed, max_speed)
angle = random.randrange(0, 360)
return Vector2(speed, 0).rotate(angle)
Метод будет генерировать случайное значение между значениями min_speed и max_speed и случайным углом между 0 и 360 градусами. Затем он создаст вектор с этим значением, повернутый на этот угол.
Поскольку скорость астероида должна быть случайной независимо от того, где он находится, давайте воспользуемся этим методом непосредственно в классе Asteroid. Начните с обновления импорта в файле space_rocks/models.py:
from pygame.math import Vector2
from pygame.transform import rotozoom
from utils import get_random_velocity, load_sprite, wrap_position
Обратие внимание, что вы устанавливаете свое случайное положение в одном месте, а свою случайную скорость - в другом. Это потому, что позиция должна быть случайной только для шести астероидов, с которых вы начинаете, поэтому она устанавливается в файле space_rocks/game.py, где инициализируется игра. Однако скорость является случайной для каждого астероида, поэтому вы задаете ее в конструкторе класса Asteroid.
Затем используйте новый метод в конструкторе класса Asteroid:
def __init__(self, position):
super().__init__(
position, load_sprite("asteroid"), get_random_velocity(1, 3)
)
Обратите внимание, что метод использует минимальное значение 1. Это потому, что астероид всегда должен двигаться, по крайней мере немного.
Запустите игру еще раз, чтобы увидеть движущиеся астероиды:
Вы также можете перемещать космический корабль по экрану. К сожалению, при столкновении с астероидом ничего не происходит. Пришло время добавить несколько столкновений.
-
- Михаил Русаков
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.