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

Pygame, популярная библиотека Python для разработки игр, позволяет с легкостью создавать захватывающие и интерактивные игры. Один из способов улучшить ваши творения Pygame — добавить случайные движущиеся объекты. Этими объектами могут быть препятствия, враги, бонусы или что-то еще, что добавляет динамичности вашему игровому миру.

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

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

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

Создайте новый файл с именем простая-game.py и добавьте код для своей основной игры.

Добавить несколько движущихся объектов

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

instagram viewer

object_width, object_height = 30, 30
object_speed_range = (2, 7)
objects = []

defcreate_random_object():
return {
'x': random.randint(0, screen_width - object_width),
'y': random.randint(0, screen_height - object_height),
'speed': random.randint(*object_speed_range)
}

for _ in range(5):
objects.append(create_random_object())

defdraw_object(obj):
obj_dim = (obj['x'], obj['y'], object_width, object_height)
pygame.draw.rect(screen, WHITE, obj_dim)

# Game loop
while running:
screen.fill((0, 0, 0))

#... (previous code)

for obj in objects:
obj['x'] += obj['speed']
if obj['x'] > screen_width:
obj['x'] = -object_width

draw_object(obj)

pygame.display.update()
clock.tick(60)

pygame.quit()

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

Реализуйте алгоритм случайного движения

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

# Random Movement Algorithm
defupdate_random_movement(obj):
# Change the direction randomly
if random.random() < 0.01:
obj['speed'] = -obj['speed']

# Game loop
while running:
#... (previous code)

for obj in objects:
obj['x'] += obj['speed']
if obj['x'] > screen_width:
obj['x'] = -object_width

update_random_movement(obj)
draw_object(obj)

pygame.display.update()
clock.tick(60)

pygame.quit()

Заставьте объекты двигаться к игроку

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

import math

# Objects Moving Towards Player
defmove_towards_player(obj):
player_center_x = player_x + player_width // 2
player_center_y = player_y + player_height // 2
object_center_x = obj['x'] + object_width // 2
object_center_y = obj['y'] + object_height // 2

angle1 = player_center_y - object_center_y
angle2 = player_center_x - object_center_x

angle = math.atan2(angle1, angle2)
obj['x'] += obj['speed'] * math.cos(angle)
obj['y'] += obj['speed'] * math.sin(angle)

# Game loop
while running:
#... (previous code)

for obj in objects:
obj['x'] += obj['speed']
if obj['x'] > screen_width:
obj['x'] = -object_width

move_towards_player(obj)
draw_object(obj)

pygame.display.update()
clock.tick(60)

pygame.quit()

Заставьте объекты двигаться только тогда, когда игрок входит в окружение

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

# Objects Start to Move When Player Enters Surroundings
surrounding_distance = 150

defshould_start_moving(obj):
surrounded1 = abs(obj['x'] - player_x) < surrounding_distance
surrounded2 = abs(obj['y'] - player_y) < surrounding_distance
return surrounded1 or surrounded2

# Game loop
while running:
#... (previous code)

for obj in objects:
if should_start_moving(obj):
obj['x'] += obj['speed']
if obj['x'] > screen_width:
obj['x'] = -object_width

update_random_movement(obj)
move_towards_player(obj)

draw_object(obj)

pygame.display.update()
clock.tick(60)

pygame.quit()

Обнаружение столкновений и взаимодействие

Чтобы сделать игру еще более увлекательной, вы можете добавить обнаружение столкновений между игроком и движущимися объектами. Например, вы можете удалить объект с экрана, когда игрок сталкивается с ним.

# Collision Detection and Interaction
defis_collision(obj):

condition1 = player_x + player_width > obj['x']
condition2 = player_x < obj['x'] + object_width
condition3 = player_y + player_height > obj['y']
condition4 = player_y < obj['y'] + object_height
return ( condition1 and condition2 and condition3 and condition4)

# Game loop
while running:
#... (previous code)

for obj in objects:
if should_start_moving(obj):
obj['x'] += obj['speed']
if obj['x'] > screen_width:
obj['x'] = -object_width

update_random_movement(obj)
move_towards_player(obj)

if is_collision(obj):
objects.remove(obj)

draw_object(obj)

pygame.display.update()
clock.tick(60)

pygame.quit()

Включая дополнительные функции

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

Подсчет очков и прогресс

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

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

Усиления и бонусы

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

Будьте изобретательны с эффектами этих бонусов, чтобы добавить стратегическую глубину игровому процессу.

Вражеский ИИ и поведение

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

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

Коллекционные предметы и награды

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

Рекомендации по добавлению случайных движущихся объектов

При включении случайных движущихся объектов в вашу Pygame следование этим рекомендациям поможет вам создать хорошо сбалансированный и отточенный игровой процесс:

Балансировка трудности

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

С другой стороны, слишком медленно движущиеся объекты могут сделать игру слишком легкой и менее увлекательной.

Оптимизация производительности

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

Минимизируйте ненужные вычисления, чтобы обеспечить плавный и отзывчивый игровой процесс, особенно на старых или менее мощных устройствах.

Тестирование и настройка

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

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

Случайность с контролем

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

Контролируемая случайность гарантирует, что игра останется сложной и приятной, но не станет слишком хаотичной.

Делаем игры более увлекательными благодаря случайным движущимся объектам

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