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.

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

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_width

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

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

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

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.