Насумични покретни објекти чине игре узбудљивијим и изазовнијим. Научите како да га уградите у своје Пигаме пројекте.

Пигаме, популарна Питхон библиотека за развој игара, омогућава вам да креирате узбудљиве и интерактивне игре са лакоћом. Један од начина да побољшате своје Пигаме креације је додавањем насумичних покретних објеката. Ови објекти могу бити препреке, непријатељи, појачања или било шта што додаје динамику вашем свету игре.

Направите једноставну игру

Почните тако што ћете поставити основни Пигаме прозор и додати објекат играча заједно са неким платформама. Такође можете имплементирати основно кретање играча помоћу тастера са стрелицама или користећи додирне улазе.

Код који се користи у овом чланку доступан је у овом ГитХуб спремиште и бесплатан је за коришћење под МИТ лиценцом.

Креирајте нову датотеку под називом симпле-гаме.пи и додајте код за своју основну игру.

Додајте више покретних објеката

Сада када имате једноставну игру са објектом играча и платформама, додајте више насумичних покретних објеката у игру. Ови објекти ће се кретати хоризонтално по екрану различитим брзинама.

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()

Укључујући додатне функције

Додавање насумичних покретних објеката може послужити као основа за имплементацију различитих узбудљивих функција у вашу Пигаме. Ево неколико додатних идеја да своју игру подигнете на следећи ниво:

Бодовање и напредовање

Доделите различите резултате објектима на основу њиховог нивоа тежине или реткости. Можете креирати и приказати систем бодовања која награђује играче за успешно кретање кроз покретне објекте или прикупљање посебних предмета.

Имплементирајте праћење напретка који повећава потешкоћу игре док играчи постижу веће резултате, одржавајући их ангажованим и мотивисаним да се побољшају.

Појачања и бонуси

Креирајте посебне објекте који играчу дају привремене предности када се сакупе. Ова појачања могу укључивати повећану брзину, непобедивост или чак способност да се привремено замрзну или униште други објекти.

Будите креативни са ефектима ових појачања да бисте додали стратешку дубину игри.

Непријатељска вештачка интелигенција и понашање

Дизајнирајте софистицираније обрасце покрета за непријатељске објекте како бисте их играчима учинили изазовнијим да их избегавају. Примените једноставне АИ алгоритме да бисте натерали непријатеље да интелигентно прогоне играча или да се крећу у координисаним обрасцима.

Различита понашања непријатеља ће држати играче на ногама и спречити да игра постане монотона.

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

Расипајте колекционарске предмете широм света игре. То могу бити новчићи, драгуљи или било који други тематски предмети. Када играч прикупи одређени број ових предмета, може откључати нове нивое, ликове или чак тајне функције у игри.

Најбоље праксе за додавање насумичних покретних објеката

Када уграђујете насумично покретне објекте у свој Пигаме, праћење ових најбољих пракси ће вам помоћи да створите добро избалансирано и углађено искуство играња:

Потешкоће са балансирањем

Брзина и обрасци кретања насумичних покретних објеката треба да буду пажљиво избалансирани да би се пружио прави изазов. Избегавајте да се објекти крећу пребрзо или нередовито, јер то може фрустрирати играче и учинити да се игра осећа неправедно.

С друге стране, превише спори објекти могу учинити игру превише лаком и мање занимљивом.

Оптимизација за перформансе

Ако ваша игра укључује велики број насумичних покретних објеката или сложених алгоритама кретања, размислите о оптимизацији кода да бисте побољшали перформансе. Користите ефикасне структуре података и алгоритме за управљање колизијама и прорачуне кретања.

Смањите непотребна израчунавања да бисте обезбедили глатку и брзу игру, посебно на старијим или мање моћним уређајима.

Тестирање и подешавање

Темељно тестирајте своју игру са различитим сценаријима како бисте били сигурни да случајни покретни објекти правилно ступају у интеракцију са другим елементима игре. Тестирајте сударе, интеракције са играчем и било каква посебна понашања у кретању.

Прилагодите брзину, понашање и обрасце објеката на основу повратних информација о тестирању како бисте постигли оптимално искуство играња.

Случајност са контролом

Иако се за ове покретне објекте користи израз „насумично“, потпуна насумична немогућност можда није увек пожељна. Размислите о уграђивању контролисане насумице, где су одређени покрети или обрасци дефинисани унутар опсега или скупа могућности.

Контролисана случајност осигурава да игра остане изазовна и угодна, а да не постане превише хаотична.

Учините игре занимљивијим са насумичним покретним објектима

Насумични покретни објекти додају елемент изненађења и непредвидивости вашој игри, чинећи је динамичнијом и привлачнијом. Они држе играче на ногама, захтевајући брзе рефлексе и стратешко размишљање. Поред тога, разноврсност покрета и интеракција са овим објектима осигурава да нема два иста искуства играња.