Даже самым простым врагам нужно как-то двигаться, поэтому почерпните вдохновение в том, как обращаться с кодом, лежащим в основе шаблонов атак.

Одним из ключевых элементов отличной видеоигры является наличие врагов. Будь то зомби, инопланетяне или другие игроки, враги могут сделать игру более сложной и захватывающей.

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

Создание простой игры

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

Вы можете найти полный код в этом репозиторий GitHub.

Начните с импорта необходимого модуля PyGame и его инициализации.

Импортировать пигейм

pygame.init()

Затем настройте экран и создайте игрока и вражеские объекты, используя игра. Прямоугольник() функция.

# Настроить экран
экран = pygame.display.set_mode((800, 600))

# Настраиваем цвета
черный = (0, 0, 0)
белый = (255, 255, 255)

instagram viewer

# Настраиваем прямоугольник игрока и вражеский объект
игрок = пигейм. Прямой(350, 500, 50, 50)
враг = пигейм. Прямой(350, 0, 50, 50)

После этого создайте игровой цикл, который выполняется до тех пор, пока игрок либо не столкнется с противником, либо не выйдет из игры. Также проверьте наличие столкновение между игроком и противником, и рисовать игровые объекты на экране.

# Настраиваем игровой цикл
работает = Истинный

пока бег:
для событие в pygame.event.get():
если event.type == pygame. ПОКИДАТЬ:
работает = ЛОЖЬ

# Заливаем экран белым
screen.fill (белый)

# Перемещаем прямоугольник игрока
ключи = pygame.key.get_pressed()

если ключи[pygame. K_LEFT]:
игрок.х -= 5

если ключи[pygame. К_ПРАВО]:
игрок.х += 5

если ключи[pygame. К_УП]:
игрок.у -= 5

если ключи[pygame. К_ВНИЗ]:
игрок.у += 5

# Проверка на столкновение между игроком и противником
если player.colliderect (враг):
работает = ЛОЖЬ

# Рисуем прямоугольник игрока и объект врага на экране
pygame.draw.rect (экран, черный, игрок)
pygame.draw.rect (экран, черный, враг)

# Обновить экран
pygame.display.update()

# Выйти из игры
pygame.выйти()

Направляйте врагов к игроку

Чтобы переместить врага к игроку, вам нужно рассчитать расстояние между ними, что вы можете сделать, используя теорему Пифагора. Затем вы можете использовать это расстояние, чтобы определить скорость движения врага и направление к игроку.

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

# Рассчитать расстояние между противником и игроком
Distance_x = игрок.x - враг.x
Distance_y = игрок.y - враг.y
расстояние = (расстояние_x ** 2 + расстояние_у ** 2) ** 0.5

# Переместить врага к игроку
скорость = 2

если расстояние != 0:
враг.х += скорость * расстояние_х / расстояние
враг.у += скорость * расстояние_у / расстояние

Рандомизировать движение врага на экране

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

Для этого сгенерируйте случайное направление движения врага с помощью модуля random в Python. Использовать выбор() Функция для выбора случайного направления из списка направлений, в которых может двигаться враг. Затем обновите позицию врага в зависимости от выбранного направления.

Импортировать случайный

# Случайным образом перемещайте врага по экрану
направление = случайный.выбор(['левый', 'верно', 'вверх', 'вниз'])

если направление == 'левый':
враг.х -= 5
Элиф направление == 'верно':
враг.х += 5
Элиф направление == 'вверх':
враг.у -= 5
Элиф направление == 'вниз':
враг.у += 5

Движение врага на основе близости

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

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

# Переместите врага к игроку, если игрок близко
скорость = 2

если расстояние < 300:
если расстояние != 0:
враг.х += скорость * расстояние_х / расстояние
враг.у += скорость * расстояние_у / расстояние

Враг уклоняется от атак игрока

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

Для этого вычислите единичный вектор к игроку, используя ранее рассчитанные Distance_x и Distance_y. Затем вычислите перпендикулярный вектор, чтобы переместить врага перпендикулярно единичному вектору. Наконец, вычислите скалярное произведение перпендикулярного вектора и единичного вектора, чтобы определить направление движения врага.

Чтобы реализовать это, добавьте приведенный ниже фрагмент кода после расчета расстояния.

скорость = 2

если расстояние < 400:
если расстояние != 0:
# Вычислить единичный вектор в сторону игрока
unit_vector_x = расстояние_x / расстояние
unit_vector_y = расстояние_y / расстояние

# Вычислить перпендикулярный вектор
перпендикуляр_вектор_x = -unit_vector_y
перпендикуляр_вектор_у = единичный_вектор_х

# Вычислить скалярное произведение перпендикулярного вектора и
# единичный вектор
dot_product = перпендикулярный_вектор_x * единичный_вектор_x
+ перпендикулярный_вектор_у * единичный_вектор_у

# Переместить врага перпендикулярно единичному вектору
если точечный_продукт > 0:
вражеский.x += скорость * перпендикулярный_вектор_x
вражеский.у += скорость * перпендикулярный_вектор_у
еще:
вражеский.x -= скорость * перпендикулярный_вектор_x
вражеский.у -= скорость * перпендикулярный_вектор_у

С этими модификациями противник будет стараться не подходить слишком близко к игроку. Это делает игру более сложной и увлекательной.

Добавление дополнительных функций

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

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

# Добавьте несколько врагов, которые случайным образом перемещаются по экрану
враги = []

для я в диапазон(5):
враг = пигейм. Прямоугольник (случайный.randint(0, 750), случайный.randint(0, 550), 50,
50)

враги.append (враг)

# Добавляем препятствия, которые игрок должен избегать
препятствие = pygame. Прямой(200, 250, 50, 50)

# Настраиваем игровой цикл
часы = pygame.time. Часы()
работает = Истинный

пока бег:
для событие в pygame.event.get():
если event.type == pygame. ПОКИДАТЬ:
работает = ЛОЖЬ

# Заливаем экран белым
screen.fill (белый)

# Перемещаем прямоугольник игрока
ключи = pygame.key.get_pressed()

если ключи[pygame. K_LEFT]:
игрок.х -= 5
если ключи[pygame. К_ПРАВО]:
игрок.х += 5
если ключи[pygame. К_УП]:
игрок.у -= 5
если ключи[pygame. К_ВНИЗ]:
игрок.у += 5

# Случайным образом перемещайте врагов по экрану
для враг в враги:
направление = случайный.выбор(['левый', 'верно', 'вверх', 'вниз'])

если направление == 'левый':
враг.х -= 5
Элиф направление == 'верно':
враг.х += 5
Элиф направление == 'вверх':
враг.у -= 5
Элиф направление == 'вниз':
враг.у += 5

# Проверка на столкновение между игроком и противником
если player.colliderect (враг):
работает = ЛОЖЬ

# Нарисуйте прямоугольник игрока, вражеские объекты и препятствие на
# экран
pygame.draw.rect (экран, черный, игрок)

для враг в враги:
pygame.draw.rect (экран, черный, враг)

pygame.draw.rect (экран, черный, препятствие)

# Обновить экран
pygame.display.update()

# Установить частоту кадров игры
часы.тик(60)

# Выйти из игры
pygame.выйти()

Улучшите свой игровой опыт с врагами

Добавляя врагов с уникальными движениями, поведением и способностями, вы можете сделать свои игры более увлекательными и сложными для игроков. Игрокам нужно будет разработать стратегию и адаптировать свой игровой процесс, чтобы победить разных типов врагов. Это может повысить вовлеченность, повысить ценность воспроизведения и заставить игроков возвращаться снова и снова.