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.

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

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_width

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

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

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

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é.