Сделайте свои проекты Pygame более интересными, интегрируя бонусы и коллекционные предметы.

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

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

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

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

pip установить pygame

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

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

Это послужит основой для добавления бонусов и предметов коллекционирования. Вот пример фрагмента кода:

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

# Инициализировать Pygame
pygame.init()

# Настраиваем окно игры
ширина_окна = 800
высота_окна = 600
окно = pygame.display.set_mode((window_width, window_height))
pygame.display.set_caption("Моя игра")

# Настроить плеер
ширина_плеера = 50
игрок_высота = 50
player_x = (window_width - player_width) // 2
player_y = высота_окна - высота_игрока - 10
player_speed = 5

# Установить врага
ширина врага = 50
высота_противника = 50
вражеский_x = случайный.randint(0, window_width - ширина_врага)
враг_у = 50
вражеская_скорость = 3

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

# Движение игрока
ключи = pygame.key.get_pressed()
если ключи[pygame. K_LEFT] и игрок_х > 0:
player_x -= скорость_игрока
если ключи[pygame. K_RIGHT] и player_x < ширина окна - player_width:
player_x += player_speed

# Движение врага
вражеский_y += вражеская_скорость
если вражеский_у > высота_окна:
вражеский_x = случайный.randint(0, window_width - ширина_врага)
враг_у = 0

# Обнаружение столкновений
если (player_x < вражеский_x + вражеский_ширина) и \
(player_x + player_width > враг_x) и \
(player_y < вражеский_y + вражеский_высота) и \
(player_y + player_height > вражеский_y):
работает = ЛОЖЬ

# Очистить экран
окно.заполнить((0, 0, 0))

player_pos = (player_x, player_y,
player_width, player_height)
вражеский_пос = (враг_х, враг_у,
вражеская_ширина, вражеская_высота)

# Нарисовать игрока
pygame.draw.rect (окно, (255, 255, 255), player_pos)

# Рисуем врага
pygame.draw.rect (окно, (255, 0, 0), вражеский_пос)

# Обновить дисплей
pygame.display.update()

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

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

Создавайте предметы коллекционирования

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

# Настроить коллекционный
коллекционная_ширина = 30
коллекционная_высота = 30
collectible_x = случайный.randint(0, window_width - коллекционная_ширина)
коллекционный_у = 50

# Установить счет
оценка = 0
шрифт = pygame.font. Шрифт(Никто, 36)

# ...

# Обнаружение столкновений с коллекционными предметами
если (player_x < collectible_x + collectible_width) и \
(player_x + player_width > collectible_x) и \
(игрок_у < коллекционный_у + коллекционный_высота) и \
(player_y + player_height > collectible_y):
collectible_x = случайный.randint(0, window_width - коллекционная_ширина)
коллекционный_у = 50
оценка += 10
# ...

коллекционный_поз = (коллекционный_x, коллекционный_y)
# Нарисуй предмет коллекционирования
pygame.draw.circle (окно, (0, 255, 0), коллекционная_позиция, коллекционная_ширина)

# Оценка розыгрыша
score_text = шрифт.рендер("Счет: " + ул (счет), Истинный, (255, 255, 255))
window.blit(score_text,(10, 10))

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

Создание бонусов

Теперь вы можете добавить бонусы в свою игру, следуя следующей логике. Когда игрок сталкивается с объектом усиления, усиление исчезает. Если игрок столкнется с врагом во время действия усиления, враг будет уничтожен. Создайте новый файл с именем powerups.py и добавьте код со следующими обновлениями:

# Настраиваем включение
мощность_ширина = 40
powerup_height = 40
powerup_x = случайный.randint(0, ширина_окна - ширина_включения)
powerup_y = 50
щит_активный = ЛОЖЬ
щит_таймер = 0

# ...

# Обнаружение столкновений с включением питания
Collision_powerup = (player_x < powerup_x + powerup_width) и \
(player_x + player_width > powerup_x) и \
(player_y < powerup_y + powerup_height) и \
(player_y + player_height > powerup_y)

если столкновение_powerup:
powerup_x = случайный.randint(0, ширина_окна - ширина_включения)
powerup_y = 50
щит_активный = Истинный
Shield_timer = pygame.time.get_ticks()

# ...

# Проверить таймер щита
если щит_активный:
текущее_время = pygame.time.get_ticks()
если текущее_время - щит_таймер > 5000:
щит_активный = ЛОЖЬ

# ...

# Определяем вершины треугольника
x1 = powerup_x + powerup_width / 2
y1 = powerup_y
x2 = powerup_x
y2 = powerup_y + powerup_height
x3 = powerup_x + powerup_width
y3 = powerup_y + powerup_height

# Рисуем треугольник
pygame.draw.polygon (окно, (255, 255, 0), [(x1, y1), (x2, y2), (x3, y3)])

# ...

# Обнаружение столкновения с активным щитом
коллизия_щит = щит_активный и \
(player_x < вражеский_x + вражеский_ширина) и \
(player_x + player_width > враг_x) и \
(player_y < вражеский_y + вражеский_высота) и \
(player_y + player_height > враг_y)

если коллизия_щит:
вражеский_x = случайный.randint(0, window_width - ширина_врага)
враг_у = 0

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

Установка таймера для бонусов

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

# Установите таймер для возрождения при включении питания
powerup_respawn_timer = 0

# Проверить таймер включения
еслинет щит_активный:
текущее_время = pygame.time.get_ticks()
если current_time - powerup_respawn_timer > 3000:
powerup_x = случайный.randint(0, ширина_окна - ширина_включения)
powerup_y = 50
powerup_respawn_timer = pygame.time.get_ticks()

Визуализация таймера включения

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

# Настроить панель включения
ширина_бара = 100
бар_высота = 10
bar_x = ширина_окна - ширина_бара - 10
бар_у = 10

# ...

# Рассчитать прогресс таймера включения питания
если щит_активный:
текущее_время = pygame.time.get_ticks()
прошедшее_время = текущее_время - щит_таймер
таймер_прогресс = (5000 - пройденное время) / 5000
# Нарисуйте полосу усиления
bar_rect = pygame. Прямоугольник (bar_x, bar_y, bar_width * timer_progress, bar_height)
pygame.draw.rect (окно, (0, 255, 255), bar_rect)

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

Рекомендации по добавлению бонусов и предметов коллекционирования

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

Визуальное отличие

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

Баланс и вызов

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

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

Обратная связь и вознаграждения

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

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

Таймеры и продолжительность

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

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

Тестируйте и повторяйте

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

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

Сделайте игры более увлекательными с помощью коллекционных предметов

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

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