Оживите свои аркадные игры, представив врагов.

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

Создайте простую игру

Прежде чем начать, убедитесь, что у вас есть pip установлен на вашем устройстве. Используйте эту команду для установки аркада библиотека:

пип установить аркада

После этого начните с создания простой игры, в которой игрок может перемещаться влево и вправо с помощью клавиш со стрелками.

Код, используемый в этой статье, доступен в этом Репозиторий GitHub и вы можете использовать его бесплатно по лицензии MIT.

Импортировать аркада

# Размеры окна
ЭКРАН_ШИРИНА = 800
ЭКРАН_ВЫСОТА = 600

# Атрибуты игрока
РАДИУС_ИГРОКА = 25
PLAYER_SPEED = 5

сортGameWindow(аркада. Окно):
деф__в этом__(собственность, ширина, высота):
super().__init__(ширина, высота)
arcade.set_background_color (arcade.color. БЕЛЫЙ)
self.player_x = ширина // 2

instagram viewer

дефon_draw(себя):
аркада.start_render()
arcade.draw_circle_filled(self.player_x, PLAYER_RADIUS, PLAYER_RADIUS, arcade.color. СИНИЙ)

дефon_key_press(я, ключ, модификаторы):
если ключ == аркада.ключ. ЛЕВЫЙ:
self.player_x -= PLAYER_SPEED
Элиф ключ == аркада.ключ. ВЕРНО:
self.player_x += PLAYER_SPEED

дефобновлять(я, дельта_время):
проходить

дефосновной():
окно = GameWindow (SCREEN_WIDTH, SCREEN_HEIGHT)
аркада.run()

если __имя__ == "__основной__":
основной()

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

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

# Добавить в класс GameWindow

сортGameWindow(аркада. Окно):
# ...

деф__в этом__(собственность, ширина, высота):
# ...

# Атрибуты врага
self.enemy_x = ширина // 2
self.enemy_y = рост - PLAYER_RADIUS
self.enemy_radius = 20

дефon_draw(себя):
# ...
arcade.draw_circle_filled(self.enemy_x, self.enemy_y, self.enemy_radius, arcade.color. КРАСНЫЙ)

дефобновлять(я, дельта_время):
если self.is_collision (self.player_x, self.player_y, self.enemy_x, self.enemy_y, PLAYER_RADIUS, self.enemy_radius):
Распечатать("Игра закончена!")

дефis_collision(я, x1, y1, x2, y2, радиус1, радиус2):
Distance_squared = (x1 - x2) ** 2 + (у1 - у2) ** 2
radius_sum_squared = (радиус1 + радиус2) ** 2
возвращаться Distance_squared <= radius_sum_squared

Заставить врага следовать за игроком

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

# Добавить в класс GameWindow

сортGameWindow(аркада. Окно):
# ...

дефобновлять(я, дельта_время):
если self.player_x < self.enemy_x:
self.enemy_x -= PLAYER_SPEED
Элиф self.player_x > self.enemy_x:
self.enemy_x += PLAYER_SPEED

если self.is_collision (self.player_x, self.player_y,
self.enemy_x, self.enemy_y,
PLAYER_RADIUS, ВРАГ_RADIUS):
Распечатать("Игра закончена!")

дефis_collision(я, x1, y1, x2, y2, радиус1, радиус2):
Distance_squared = (x1 - x2) ** 2 + (у1 - у2) ** 2
radius_sum_squared = (радиус1 + радиус2) ** 2
возвращаться Distance_squared <= radius_sum_squared

Ниже приведен вывод:

Добавление вражеских пуль

Чтобы создать врага, стреляющего пулями, создайте Пуля класс и список для отслеживания активных пуль. Враг будет периодически создавать новую пулю и обновлять свое положение. Создайте новый файл с именем пули.py и добавьте код со следующими обновлениями:

# Добавить в класс GameWindow

сортПуля:
деф__в этом__(я, x, y, радиус, скорость):
я.х = х
селф.у = у
self.radius = радиус
собственная скорость = скорость

дефобновлять(себя):
self.y -= self.скорость

сортGameWindow(аркада. Окно):
# ...

деф__в этом__(собственность, ширина, высота):
# ...

# Атрибуты врага
селф.пули = []
self.bullet_radius = 5
self.bullet_speed = 3
self.bullet_cooldown = 60# Количество кадров между спавнами пуль
self.bullet_timer = 0

дефon_draw(себя):
# ...
для пуля в селф.пули:
arcade.draw_circle_filled (bullet.x, bullet.y,
self.bullet_radius, аркадный.цвет. ЧЕРНЫЙ)

дефобновлять(я, дельта_время):
# ...

self.bullet_timer += 1
если self.bullet_timer >= self.bullet_cooldown:
self.bullets.append(Пуля(self.enemy_x, self.enemy_y - self.enemy_radius,
self.bullet_radius, self.bullet_speed))
self.bullet_timer = 0

для пуля в селф.пули:
пуля.обновление()
если self.is_collision (self.player_x, self.player_y, self.enemy_x,
self.enemy_y, PLAYER_RADIUS, ENEMY_RADIUS):
Распечатать("Игра закончена!")

дефis_collision(я, x1, y1, x2, y2, радиус1, радиус2):
Distance_squared = (x1 - x2) ** 2 + (у1 - у2) ** 2
radius_sum_squared = (радиус1 + радиус2) ** 2
возвращаться Distance_squared <= radius_sum_squared

Ниже приведен вывод:

Добавление очков здоровья для врагов

Во многих играх враги могут обладать очками здоровья (HP), что позволяет им выдерживать несколько ударов, прежде чем они будут побеждены. Добавление очков здоровья врагам может ввести стратегические элементы игрового процесса и создать ощущение прогресса и сложности. Создайте новый файл с именем хит-пойнт.py и добавьте код со следующими обновлениями:

# Размеры окна
ЭКРАН_ШИРИНА = 800
ЭКРАН_ВЫСОТА = 600

# Атрибуты игрока
РАДИУС_ИГРОКА = 25
PLAYER_SPEED = 5

# Атрибуты врага
ВРАГ_РАДИУС = 20
ВРАГ_ЗДОРОВЬЕ = 100

сортGameWindow(аркада. Окно):
деф__в этом__(собственность, ширина, высота):
super().__init__(ширина, высота)
arcade.set_background_color (arcade.color. БЕЛЫЙ)
self.player_x = ширина // 2
self.player_y = высота // 2
self.enemy_x = ширина // 2
self.enemy_y = рост - PLAYER_RADIUS
self.enemy_health = ВРАГ_ЗДОРОВЬЕ
печать (self.enemy_health)
дефon_draw(себя):
аркада.start_render()
arcade.draw_circle_filled (self.player_x,
селф.player_y,
PLAYER_RADIUS,
аркада.цвет. СИНИЙ)
если self.enemy_health > 0:
arcade.draw_circle_filled (self.enemy_x,
селф.враг_у,
ВРАГ_РАДИУС,
аркада.цвет. КРАСНЫЙ)

дефобновлять(я, дельта_время):
если self.is_collision (self.player_x, self.player_y,
self.enemy_x, self.enemy_y,
PLAYER_RADIUS, ВРАГ_RADIUS):
self.enemy_health -= 10
печать (self.enemy_health)

ВРАГ_ЗДОРОВЬЕ константа имеет значение 100, представляющее начальные очки здоровья врага. Когда игрок сталкивается с врагом, вы можете вычесть несколько очков из здоровья врага. Чтобы отобразить обновленное значение здоровья, вы можете распечатать текстовый объект self.health_text который показывает текущее здоровье врага.

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

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

Лучшие практики для создания врагов

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

Разнообразные атрибуты

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

Уникальное поведение

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

Очки здоровья (ОЗ)

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

Сделайте игры веселее с врагами

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