Zaradi naključnih premikajočih se predmetov so igre bolj razburljive in zahtevnejše. Naučite se, kako ga vključiti v svoje projekte Pygame.
Pygame, priljubljena knjižnica Python za razvoj iger, vam omogoča enostavno ustvarjanje razburljivih in interaktivnih iger. Eden od načinov za izboljšanje vaših stvaritev Pygame je dodajanje naključnih premikajočih se predmetov. Ti predmeti so lahko ovire, sovražniki, okrepitve ali karkoli, kar vašemu svetu igre doda dinamiko.
Ustvari preprosto igro
Začnite tako, da nastavite osnovno okno Pygame in dodate objekt igralca skupaj z nekaterimi platformami. Osnovno gibanje igralca lahko izvedete tudi s puščičnimi tipkami oz uporabo vnosov na dotik.
Koda, uporabljena v tem članku, je na voljo tukaj Repozitorij GitHub in je brezplačen za uporabo pod licenco MIT.
Ustvari novo datoteko z imenom simple-game.py in dodajte kodo za svojo osnovno igro.
Dodajte več premikajočih se predmetov
Zdaj, ko imate preprosto igro s predmetom igralca in platformami, v igro dodajte več naključno premikajočih se predmetov. Ti predmeti se bodo premikali vodoravno po zaslonu z različnimi hitrostmi.
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()
Spodaj je rezultat:
Izvedite algoritem naključnega gibanja
Trenutno se vaši naključno premikajoči se predmeti premikajo samo v ravni vodoravni črti. Da bo njihovo gibanje bolj nepredvidljivo, lahko dodate algoritem naključnega gibanja.
# 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()
Naj se predmeti premikajo proti igralcu
Če želite igri dodati več zapletenosti, lahko vnesete nekaj predmetov, ki se premikajo proti igralcu. To lahko dosežete tako, da izračunate kot med predmetom in igralcem ter ustrezno prilagodite položaj predmeta.
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()
Naj se predmeti premikajo le, ko igralec vstopi v okolico
Namesto da bi se vsi predmeti premikali od začetka, lahko dovolite, da se predmeti začnejo premikati šele, ko igralec vstopi v njihovo okolico.
# 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()
Zaznavanje trka in interakcija
Da bo igra še bolj privlačna, lahko dodajte zaznavanje trkov med igralcem in premikajočimi se predmeti. Na primer, lahko odstranite predmet z zaslona, ko igralec trči vanj.
# 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()
Vključno z dodatnimi funkcijami
Dodajanje naključnih premikajočih se predmetov lahko služi kot osnova za izvajanje različnih vznemirljivih funkcij v vašem Pygame. Tu je nekaj dodatnih idej, s katerimi lahko svojo igro dvignete na višjo raven:
Točkovanje in napredovanje
Predmetom dodelite različne ocene glede na njihovo težavnostno stopnjo ali redkost. Ustvarite lahko in prikazati sistem točkovanja ki nagrajuje igralce za uspešno krmarjenje skozi premikajoče se predmete ali zbiranje posebnih predmetov.
Implementirajte sledilnik napredka, ki povečuje težavnost igre, ko igralci dosegajo višje rezultate, kar jih ohranja angažirane in motivirane za izboljšave.
Okrepitve in bonusi
Ustvarite posebne predmete, ki dajejo igralcu začasne prednosti, ko jih zberete. Te okrepitve lahko vključujejo povečano hitrost, nepremagljivost ali celo zmožnost začasne zamrznitve ali uničenja drugih predmetov.
Bodite kreativni z učinki teh okrepitev, da igranju dodate strateško globino.
Sovražnikov AI in vedenje
Oblikujte bolj izpopolnjene vzorce gibanja za sovražne predmete, da se jim bodo igralci bolj izognili. Izvedite preproste algoritme AI, da bodo sovražniki inteligentno zasledovali igralca ali se premikali v usklajenih vzorcih.
Različno vedenje sovražnikov bo držalo igralce na trnih in preprečilo, da bi igra postala monotona.
Zbirateljski predmeti in nagrade
Razpršite zbirateljske predmete po svetu igre. To so lahko kovanci, dragulji ali kateri koli drugi tematski predmeti. Ko igralec zbere določeno število teh predmetov, lahko odklene nove ravni, like ali celo skrivne funkcije v igri.
Najboljše prakse za dodajanje naključno premikajočih se predmetov
Pri vključevanju naključno premikajočih se predmetov v vaš Pygame vam bo sledenje tem najboljšim praksam pomagalo ustvariti dobro uravnoteženo in izpopolnjeno igralno izkušnjo:
Težave z uravnoteženjem
Hitrost in vzorci gibanja naključno premikajočih se predmetov morajo biti skrbno uravnoteženi, da zagotovijo pošten izziv. Izogibajte se, da bi se predmeti premikali prehitro ali neenakomerno, saj lahko to frustrira igralce in se igra zdi nepoštena.
Po drugi strani pa lahko preveč počasi premikajoči se predmeti naredijo igro preveč enostavno in manj privlačno.
Optimizacija za uspešnost
Če vaša igra vključuje veliko število naključnih premikajočih se predmetov ali zapletenih algoritmov gibanja, razmislite o optimizaciji kode za izboljšanje zmogljivosti. Uporabite učinkovite podatkovne strukture in algoritme za obvladovanje trkov in izračunov gibanja.
Zmanjšajte nepotrebne izračune, da zagotovite gladko in odzivno igranje, zlasti na starejših ali manj zmogljivih napravah.
Testiranje in prilagajanje
Temeljito preizkusite svojo igro z različnimi scenariji, da zagotovite pravilno interakcijo naključnih premikajočih se predmetov z drugimi elementi igre. Preizkusite trke, interakcije z igralcem in vsa posebna gibalna vedenja.
Prilagodite hitrost, obnašanje in vzorce predmetov na podlagi povratnih informacij o testiranju igranja, da dosežete optimalno izkušnjo igranja.
Naključnost z nadzorom
Čeprav se za te premikajoče se predmete uporablja izraz "naključno", popolna naključnost morda ni vedno zaželena. Razmislite o vključitvi nadzorovane naključnosti, kjer so določeni gibi ali vzorci opredeljeni znotraj obsega ali nabora možnosti.
Nadzorovana naključnost zagotavlja, da igra ostaja zahtevna in prijetna, ne da bi postala preveč kaotična.
Naredite igre bolj privlačne z naključnimi premikajočimi se predmeti
Naključno premikajoči se predmeti vaši igri dodajo element presenečenja in nepredvidljivosti, zaradi česar je bolj dinamična in privlačna. Igralce držijo na trnih, zahtevajo hitre reflekse in strateško razmišljanje. Poleg tega raznolikost gibov in interakcij s temi predmeti zagotavlja, da nobena igralna izkušnja ni enaka.