Nasumični pokretni objekti čine igre uzbudljivijima i izazovnijima. Naučite kako ga ugraditi u svoje Pygame projekte.
Pygame, popularna Python biblioteka za razvoj igara, omogućuje vam stvaranje uzbudljivih i interaktivnih igara s lakoćom. Jedan od načina da poboljšate svoje Pygame kreacije je dodavanje nasumičnih pokretnih objekata. Ti objekti mogu biti prepreke, neprijatelji, pojačanja ili bilo što što dodaje dinamiku vašem svijetu igre.
Stvorite jednostavnu igru
Započnite postavljanjem osnovnog Pygame prozora i dodavanjem objekta igrača zajedno s nekim platformama. Također možete implementirati osnovno kretanje igrača pomoću tipki sa strelicama ili koristeći dodirne unose.
Kôd korišten u ovom članku dostupan je u ovom GitHub spremište i besplatan je za korištenje pod MIT licencom.
Stvorite novu datoteku pod nazivom jednostavna igra.py i dodajte kôd za svoju osnovnu igru.
Dodajte više pokretnih objekata
Sada kada imate jednostavnu igru s objektom igrača i platformama, igri dodajte više nasumičnih pokretnih objekata. Ti će se objekti kretati vodoravno preko zaslona različitim brzinama.
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()
Ispod je izlaz:
Implementirati algoritam nasumičnog kretanja
Trenutačno se vaši nasumični pokretni objekti kreću samo u ravnoj vodoravnoj liniji. Kako bi njihovo kretanje bilo nepredvidljivije, možete dodati algoritam nasumičnog kretanja.
# 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()
Neka se predmeti pomiču prema igraču
Da biste igri dodali više složenosti, možete uvesti neke objekte koji se kreću prema igraču. To možete postići izračunavanjem kuta između objekta i igrača i prilagođavanjem položaja objekta u skladu s tim.
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()
Neka se objekti pomiču samo kada igrač uđe u okolinu
Umjesto da se svi objekti pokreću od početka, možete dopustiti da se objekti počnu pomicati tek kada igrač uđe u svoje okruženje.
# 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()
Otkrivanje sudara i interakcija
Kako bi igra bila još privlačnija, možete dodajte detekciju sudara između igrača i pokretnih objekata. Na primjer, možete ukloniti objekt sa zaslona kada se igrač sudari s njim.
# 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()
Uključujući dodatne značajke
Dodavanje nasumičnih pokretnih objekata može poslužiti kao temelj za implementaciju raznih uzbudljivih značajki u vašem Pygameu. Evo nekoliko dodatnih ideja za podizanje vaše igre na višu razinu:
Bodovanje i napredovanje
Dodijelite različite bodove objektima na temelju njihove razine težine ili rijetkosti. Možete stvoriti i prikazati sustav bodovanja koji nagrađuje igrače za uspješno kretanje kroz pokretne objekte ili skupljanje posebnih predmeta.
Implementirajte alat za praćenje napretka koji povećava težinu igre kako igrači postižu veće rezultate, držeći ih angažiranima i motiviranima za poboljšanje.
Pojačanja i bonusi
Stvorite posebne objekte koji igraču daju privremene prednosti kada ih skupite. Ta pojačanja mogu uključivati povećanu brzinu, nepobjedivost ili čak mogućnost privremenog zamrzavanja ili uništavanja drugih objekata.
Budite kreativni s učincima ovih pojačanja kako biste igranju dodali stratešku dubinu.
AI i ponašanje neprijatelja
Osmislite sofisticiranije obrasce kretanja za neprijateljske objekte kako bi igrači bili izazovniji za izbjegavanje. Implementirajte jednostavne algoritme umjetne inteligencije kako biste natjerali neprijatelje da inteligentno progone igrača ili se kreću u koordiniranim obrascima.
Različito ponašanje neprijatelja držat će igrače na oprezu i spriječiti da igra postane monotona.
Kolekcionarstvo i nagrade
Raspršite kolekcionarske predmete po cijelom svijetu igre. To mogu biti novčići, dragulji ili bilo koji drugi tematski predmeti. Kada igrač prikupi određeni broj ovih predmeta, može otključati nove razine, likove ili čak tajne značajke u igri.
Najbolji postupci za dodavanje nasumičnih pokretnih objekata
Prilikom uključivanja nasumičnih pokretnih objekata u vaš Pygame, slijedeći ove najbolje prakse pomoći će vam da stvorite dobro uravnoteženo i uglađeno iskustvo igranja:
Poteškoće u balansiranju
Brzina i obrasci kretanja nasumičnih pokretnih objekata trebaju biti pažljivo uravnoteženi kako bi se pružio pošten izazov. Izbjegavajte prebrzo ili nepravilno kretanje predmeta jer bi to moglo frustrirati igrače i učiniti igru nepoštenom.
S druge strane, pretjerano spori objekti mogu igru učiniti previše jednostavnom i manje privlačnom.
Optimizacija za izvedbu
Ako vaša igra uključuje velik broj nasumičnih pokretnih objekata ili složenih algoritama kretanja, razmislite o optimizaciji koda kako biste poboljšali performanse. Koristite učinkovite strukture podataka i algoritme za rukovanje sudarima i izračunima kretanja.
Smanjite nepotrebna izračunavanja kako biste osigurali glatku i brzu igru, posebno na starijim ili manje moćnim uređajima.
Testiranje i podešavanje
Temeljito testirajte svoju igru s različitim scenarijima kako biste bili sigurni da nasumični pokretni objekti ispravno komuniciraju s drugim elementima igre. Testirajte sudare, interakcije s igračem i sva posebna ponašanja pri kretanju.
Prilagodite brzinu, ponašanje i uzorke objekata na temelju povratnih informacija testiranja igre kako biste postigli optimalno iskustvo igranja.
Slučajnost s kontrolom
Iako se izraz "slučajni" koristi za ove pokretne objekte, potpuna slučajnost možda nije uvijek poželjna. Razmislite o uključivanju kontrolirane slučajnosti, gdje su određeni pokreti ili uzorci definirani unutar raspona ili skupa mogućnosti.
Kontrolirana slučajnost osigurava da igra ostane izazovna i ugodna, a da ne postane previše kaotična.
Učinite igre zanimljivijima s nasumičnim pokretnim objektima
Nasumični pokretni objekti dodaju element iznenađenja i nepredvidljivosti vašoj igri, čineći je dinamičnijom i privlačnijom. Drže igrače na nogama, zahtijevaju brze reflekse i strateško razmišljanje. Dodatno, raznolikost pokreta i interakcija s tim objektima osigurava da ne postoje dva ista iskustva igranja.