Náhodné pohybujúce sa objekty robia hry vzrušujúcejšími a náročnejšími. Naučte sa, ako ho začleniť do svojich projektov Pygame.
Pygame, populárna knižnica Python pre vývoj hier, vám umožňuje ľahko vytvárať vzrušujúce a interaktívne hry. Jedným zo spôsobov, ako vylepšiť svoje výtvory Pygame, je pridať náhodne sa pohybujúce objekty. Týmito predmetmi môžu byť prekážky, nepriatelia, vylepšenia alebo čokoľvek, čo dodáva vášmu hernému svetu dynamiku.
Vytvorte jednoduchú hru
Začnite nastavením základného okna Pygame a pridaním objektu hráča spolu s niektorými platformami. Základný pohyb hráča môžete realizovať aj pomocou kláves so šípkami resp pomocou dotykových vstupov.
Kód použitý v tomto článku je dostupný v tomto úložisko GitHub a môžete ho bezplatne používať na základe licencie MIT.
Vytvorte nový súbor s názvom jednoduchá hra.py a pridajte kód svojej základnej hry.
Pridať viacero pohybujúcich sa objektov
Teraz, keď máte jednoduchú hru s objektom hráča a platformami, pridajte do hry viacero náhodne sa pohybujúcich objektov. Tieto objekty sa budú horizontálne pohybovať po obrazovke rôznymi rýchlosťami.
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_widthdraw_object(obj)
pygame.display.update()
clock.tick(60)
pygame.quit()
Nižšie je výstup:
Implementujte algoritmus náhodného pohybu
V súčasnosti sa vaše náhodne sa pohybujúce objekty pohybujú iba v priamej horizontálnej línii. Aby bol ich pohyb nepredvídateľnejší, môžete pridať algoritmus náhodného pohybu.
# 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_widthupdate_random_movement(obj)
draw_object(obj)pygame.display.update()
clock.tick(60)
pygame.quit()
Pohybujte objekty smerom k prehrávaču
Ak chcete pridať viac zložitosti do hry, môžete predstaviť niektoré objekty, ktoré sa pohybujú smerom k hráčovi. Môžete to dosiahnuť tak, že vypočítate uhol medzi objektom a prehrávačom a podľa toho upravíte polohu objektu.
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 // 2angle1 = player_center_y - object_center_y
angle2 = player_center_x - object_center_xangle = 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_widthmove_towards_player(obj)
draw_object(obj)pygame.display.update()
clock.tick(60)
pygame.quit()
Pohybujte objekty iba vtedy, keď hráč vstúpi do okolia
Namiesto toho, aby sa všetky predmety hýbali od začiatku, môžete povoliť, aby sa predmety začali pohybovať len vtedy, keď hráč vstúpi do ich okolia.
# Objects Start to Move When Player Enters Surroundings
surrounding_distance = 150defshould_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_widthupdate_random_movement(obj)
move_towards_player(obj)draw_object(obj)
pygame.display.update()
clock.tick(60)
pygame.quit()
Detekcia a interakcia kolízie
Aby bola hra ešte pútavejšia, môžete pridať detekciu kolízie medzi prehrávačom a pohybujúcimi sa objektmi. Môžete napríklad odstrániť predmet z obrazovky, keď sa s ním prehrávač zrazí.
# 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_widthupdate_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()
Vrátane ďalších funkcií
Pridanie náhodne sa pohybujúcich objektov môže slúžiť ako základ pre implementáciu rôznych zaujímavých funkcií vo vašej hre Pygame. Tu je niekoľko ďalších nápadov, ako posunúť vašu hru na vyššiu úroveň:
Bodovanie a postup
Objektom priraďte rôzne skóre na základe ich náročnosti alebo vzácnosti. Môžete vytvoriť a zobraziť systém bodovania ktorý odmeňuje hráčov za úspešnú navigáciu cez pohyblivé objekty alebo zbieranie špeciálnych predmetov.
Implementujte nástroj na sledovanie pokroku, ktorý zvyšuje náročnosť hry, keď hráči dosahujú vyššie skóre, čím ich udrží zapojených a motivovaných zlepšovať sa.
Power-ups a bonusy
Vytvorte špeciálne predmety, ktoré hráčovi po zozbieraní poskytnú dočasné výhody. Tieto vylepšenia môžu zahŕňať zvýšenú rýchlosť, neporaziteľnosť alebo dokonca schopnosť dočasne zmraziť alebo zničiť iné objekty.
Buďte kreatívni s efektmi týchto vylepšení, aby ste do hry pridali strategickú hĺbku.
Umelá inteligencia nepriateľa a správanie
Navrhnite prepracovanejšie vzory pohybu pre nepriateľské objekty, aby boli pre hráčov náročnejšie, aby sa im vyhýbali. Implementujte jednoduché algoritmy AI, aby nepriatelia prenasledovali hráča inteligentne alebo sa pohybovali v koordinovaných vzoroch.
Rôzne správanie nepriateľov udrží hráčov v strehu a zabráni tomu, aby sa hra stala monotónnou.
Zberateľské predmety a odmeny
Rozhadzujte zberateľské predmety po celom hernom svete. Môžu to byť mince, drahokamy alebo iné tematické predmety. Keď hráč nazbiera určitý počet týchto predmetov, môže odomknúť nové úrovne, postavy alebo dokonca tajné funkcie v hre.
Osvedčené postupy na pridávanie náhodne sa pohybujúcich objektov
Pri začleňovaní náhodne sa pohybujúcich objektov do vašej hry Pygame vám dodržiavanie týchto osvedčených postupov pomôže vytvoriť vyvážený a uhladený herný zážitok:
Ťažkosti s vyvažovaním
Rýchlosť a pohybové vzorce náhodne sa pohybujúcich objektov by mali byť starostlivo vyvážené, aby poskytli primeranú výzvu. Vyhnite sa tomu, aby sa predmety pohybovali príliš rýchlo alebo nepravidelne, pretože by to mohlo hráčov frustrovať a hra bude pôsobiť nespravodlivo.
Na druhej strane príliš pomaly sa pohybujúce objekty môžu hru príliš zjednodušiť a menej pútavo.
Optimalizácia pre výkon
Ak vaša hra obsahuje veľké množstvo náhodne sa pohybujúcich objektov alebo zložitých pohybových algoritmov, zvážte optimalizáciu kódu na zlepšenie výkonu. Používajte efektívne dátové štruktúry a algoritmy na zvládanie kolízií a výpočtov pohybu.
Minimalizujte zbytočné výpočty, aby ste zabezpečili plynulé a citlivé hranie, najmä na starších alebo menej výkonných zariadeniach.
Testovanie a ladenie
Dôkladne otestujte svoju hru s rôznymi scenármi, aby ste sa uistili, že náhodne sa pohybujúce objekty správne interagujú s ostatnými hernými prvkami. Testujte kolízie, interakcie s hráčom a akékoľvek špeciálne pohybové správanie.
Upravte rýchlosť, správanie a vzory objektov na základe spätnej väzby z testovania hry, aby ste dosiahli optimálny herný zážitok.
Náhodnosť s ovládaním
Hoci sa pre tieto pohybujúce sa objekty používa výraz „náhodný“, úplná náhodnosť nemusí byť vždy žiaduca. Zvážte začlenenie riadenej náhodnosti, kde sú určité pohyby alebo vzory definované v rámci rozsahu alebo súboru možností.
Riadená náhodnosť zaisťuje, že hra zostane náročná a zábavná bez toho, aby bola príliš chaotická.
Vďaka náhodne sa pohybujúcim objektom budú hry pútavejšie
Náhodne sa pohybujúce objekty dodávajú vašej hre prvok prekvapenia a nepredvídateľnosti, vďaka čomu je dynamickejšia a pútavejšia. Udržujú hráčov v strehu, vyžadujú rýchle reflexy a strategické myslenie. Rôznorodosť pohybov a interakcií s týmito objektmi navyše zaisťuje, že žiadne dva herné zážitky nebudú rovnaké.