Направете проектите си в Pygame по-интересни, като интегрирате бонуси и колекционерски предмети.
Усилванията и колекционерските предмети играят решаваща роля за подобряване на геймплея и правенето на игрите по-ангажиращи. Като добавите тези елементи към вашите проекти в Pygame, можете да създадете уникални предизвикателства, да увеличите мотивацията на играчите и да предоставите възможности за вземане на стратегически решения.
За щастие, Pygame предоставя гъвкави начини за внедряване на бонуси и колекционерски предмети с относителна лекота.
Създайте проста игра
Преди да започнете, уверете се, че имате pip, инсталиран на вашата система. Използвайте тази команда, за да инсталирате pygame библиотека:
pip инсталирайте pygame
Започнете, като настроите проста игра, в която играчът може да се движи наляво и надясно, като избягва враг.
Кодът, използван в тази статия, е достъпен в това GitHub хранилище и е безплатен за използване под лиценза на MIT.
Това ще служи като основа за добавяне на бонуси и колекционерски предмети. Ето примерен кодов фрагмент:
импортиране pygame
импортиране случаен# Инициализирайте Pygame
pygame.init()# Настройте прозореца на играта
window_width = 800
прозорец_височина = 600
прозорец = pygame.display.set_mode((window_width, window_height))
pygame.display.set_caption("Моята игра")# Настройте плейър
player_width = 50
играч_височина = 50
player_x = (window_width - player_width) // 2
player_y = window_height - player_height - 10
играч_скорост = 5# Настройте врага
enemy_width = 50
enemy_height = 50
enemy_x = random.randint(0, window_width - enemy_width)
враг_у = 50
вражеска_скорост = 3# Цикъл на играта
бягане = Вярно
докато работи:
за събитие в pygame.event.get():
ако event.type == pygame. ИЗХОД:
бягане = Невярно# Движение на играча
ключове = pygame.key.get_pressed()
ако ключове [pygame. K_LEFT] и player_x > 0:
player_x -= играч_скорост
ако ключове [pygame. K_RIGHT] и player_x < window_width - player_width:
player_x += player_speed# Движение на врага
враг_y += враг_скорост
ако enemy_y > window_height:
enemy_x = random.randint(0, window_width - enemy_width)
враг_у = 0# Откриване на сблъсък
ако (player_x < enemy_x + enemy_width) и \
(player_x + player_width > enemy_x) и \
(player_y < enemy_y + enemy_height) и \
(player_y + player_height > enemy_y):
бягане = Невярно# Изчистете екрана
window.fill((0, 0, 0))player_pos = (player_x, player_y,
player_width, player_height)
enemy_pos = ( enemy_x, enemy_y,
enemy_width, enemy_height)# Draw играч
pygame.draw.rect (прозорец, (255, 255, 255), player_pos)# Нарисувайте враг
pygame.draw.rect (прозорец, (255, 0, 0), enemy_pos)# Актуализирайте дисплея
pygame.display.update()
# Излезте от играта
pygame.quit()
По-долу е резултатът:
Създавайте колекционерски предмети
За да създадете колекционерска стойност, добавете обект, който при сблъсък с играча изчезва и добавя 10 точки към резултата. За това трябва проверете сблъсъците между играча и колекционерските предмети. Ето актуализирана версия на кода, която включва колекционерски предмети. Създайте нов файл с име колекционерски предмети.py и добавете кода със следните актуализации:
# Настройте колекционерска стойност
колекционерска_ширина = 30
колекционерска_височина = 30
collectible_x = random.randint(0, window_width - колекционерска_width)
колекционерски_y = 50# Настройте резултат
резултат = 0
шрифт = pygame.font. шрифт (Нито един, 36)# ...
# Откриване на сблъсък с колекционерска стойност
ако (player_x < collectible_x + collectible_width) и \
(player_x + player_width > collectible_x) и \
(player_y < collectible_y + collectible_height) и \
(player_y + player_height > collectible_y):
collectible_x = random.randint(0, window_width - колекционерска_width)
колекционерски_y = 50
резултат += 10
# ...collectible_pos = (collectible_x, collectible_y)
# Рисувайте колекционерски
pygame.draw.circle (прозорец, (0, 255, 0), collectible_pos, collectible_width)
# Равен резултат
score_text = font.render(„Резултат:“ + str (резултат), Вярно, (255, 255, 255))
window.blit (score_text, (10, 10))
По-долу е резултатът:
Създавайте бонуси
Сега можете да въведете бонуси в играта си със следната логика. Когато играчът се сблъска с активиран обект, захранването ще изчезне. Ако играчът се сблъска с врага, докато захранването е активно, врагът ще бъде елиминиран. Създайте нов файл с име powerups.py и добавете кода със следните актуализации:
# Настройте включване
powerup_width = 40
powerup_height = 40
powerup_x = random.randint(0, window_width - powerup_width)
powerup_y = 50
щит_активен = Невярно
shield_timer = 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)ако collision_powerup:
powerup_x = random.randint(0, window_width - powerup_width)
powerup_y = 50
щит_активен = Вярно
shield_timer = pygame.time.get_ticks()# ...
# Проверете таймера на щита
ако активен_щит:
current_time = 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 = мощност_y + мощност_височина# Начертайте триъгълника
pygame.draw.polygon (прозорец, (255, 255, 0), [(x1, y1), (x2, y2), (x3, y3)])# ...
# Откриване на сблъсък с активен щит
щит_сблъсък = щит_активен и \
(player_x < enemy_x + enemy_width) и \
(player_x + player_width > enemy_x) и \
(player_y < enemy_y + enemy_height) и \
(player_y + player_height > enemy_y)
ако collision_shield:
enemy_x = random.randint(0, window_width - enemy_width)
враг_у = 0
По-долу е резултатът:
Настройване на таймер за захранване
За да накарате захранването да изчезне след определено време и да се появи отново на произволно място, можете да въведете таймери. Създайте нов файл с име timer.py и добавете кода със следните актуализации:
# Настройте таймер за повторно засилване
powerup_respawn_timer = 0# Проверете таймера за включване
аконе активен_щит:
current_time = pygame.time.get_ticks()
ако текущо_време - powerup_respawn_timer > 3000:
powerup_x = random.randint(0, window_width - powerup_width)
powerup_y = 50
powerup_respawn_timer = pygame.time.get_ticks()
Визуализация на таймера за включване
За да осигурите визуално представяне на таймера за включване, можете да нарисувате обект с правоъгълна форма, който постепенно се изтощава с течение на времето. Създайте нов файл с име bar.py и добавете кода със следните актуализации:
# Настройте лентата за включване
bar_width = 100
бар_височина = 10
bar_x = window_width - bar_width - 10
bar_y = 10# ...
# Изчислете напредъка на таймера за включване
ако активен_щит:
current_time = pygame.time.get_ticks()
изминало_време = текущо_време - щит_таймер
timer_progress = (5000 - изминалото време) / 5000
# Начертайте лента за включване
bar_rect = pygame. Rect (bar_x, bar_y, bar_width * timer_progress, bar_height)
pygame.draw.rect (прозорец, (0, 255, 255), bar_right)
По-долу е резултатът:
Най-добри практики за добавяне на бонуси и колекционерски предмети
Когато става въпрос за включване на бонуси и колекционерски предмети във вашите проекти на Pygame, следването на най-добрите практики може значително да подобри цялостното игрово изживяване. Обърнете внимание на следните насоки, за да осигурите балансирано и ангажиращо изпълнение:
Визуално разграничение
От съществено значение е да създадете ясни визуални разграничения между бонуси, колекционерски предмети и други елементи на играта. Използвайте различни цветове, форми или символи, за да ги направите лесно разпознаваеми от играчите. Тази визуална яснота помага на играчите да идентифицират и приоритизират своите цели, което прави играта по-интуитивна и приятна.
Баланс и предизвикателство
Стремете се да поддържате балансирано и предизвикателно игрово изживяване. Регулирайте честотата на бонусите и събирането на хайвера, за да избегнете претоварването на играчите или да направите играта твърде лесна. Намирането на правилния баланс изисква внимателно тестване и повторение.
Вземете под внимание отзивите на играчите и настройте фино честотата на хвърляне на хайвера, за да създадете ангажиращо и удовлетворяващо изживяване.
Обратна връзка и награди
Предоставянето на незабавна обратна връзка и награди, когато играчите събират бонуси или колекционерски предмети, повишава чувството за постижение и мотивация. Помислете за добавяне на визуални ефекти, звукови сигнали или анимации, за да посочите успешни придобивания.
Награждаването на играчите с точки, допълнителни животи или отключване на специални способности добавя допълнително вълнение и насърчава играчите активно да търсят тези елементи.
Таймери и времетраене
Внедрете таймери и времетраене за усилвания, за да поддържате справедливост и вземане на стратегически решения. Усилванията трябва да имат ограничена продължителност, за да се предотврати преодоляване на играчите за продължителни периоди.
Балансирането на продължителността е от решаващо значение, тъй като твърде кратката продължителност може да се стори недостатъчна, докато твърде дългата може да дисбалансира играта. Тествайте различни продължителности, за да намерите най-доброто място за всяко включване.
Тествайте и итерирайте
Тестването на играта е жизненоважна стъпка в процеса на развитие. Тествайте старателно играта си с различни конфигурации и нива на трудност, за да сте сигурни, че бонусите и колекционерските предмети са подходящо балансирани и интегрирани в играта.
Обърнете внимание на отзивите на играчите и повторете въз основа на техния опит. Този итеративен подход ви позволява да прецизирате системата, създавайки приятно и завладяващо геймплей изживяване.
Направете игрите по-ангажиращи с колекционерски предмети
Добавянето на бонуси и колекционерски предмети към вашите проекти в Pygame може значително да подобри цялостното игрово изживяване. Тези елементи въвеждат стратегически избори, възнаграждават играчите и повишават мотивацията. Колекционерските предмети могат да се използват за отключване на нови функции, нива или способности, докато бонусите осигуряват временни предимства и уникална механика на играта.
Чрез внимателно проектиране и внедряване на тези функции можете да създавате игри, които са по-завладяващи, предизвикателни и приятни за играчите.