Această bibliotecă de jocuri Python este plină de caracteristici, inclusiv câteva instrumente simple pe care le puteți folosi pentru a crea o defilare fluidă, paralaxă.

Derularea fundalurilor poate spori considerabil atractivitatea vizuală și profunzimea unui joc. Ele pot crea iluzia de mișcare, oferind jocului o senzație dinamică și captivantă. Puteți implementa fundalurile de defilare în doar câțiva pași simpli folosind Pygame.

Pygame este o bibliotecă populară Python pe care o puteți folosi pentru a dezvolta jocuri. Adăugarea de fundaluri de defilare la proiectele dvs. Pygame le va aduce la viață și va oferi o experiență mai captivantă pentru jucători.

Creați un joc simplu

Pentru a înțelege conceptul de defilare a fundalurilor în Pygame, începeți prin a crea un joc simplu în care jucătorul se poate deplasa la stânga și la dreapta. De asemenea, puteți include două platforme, reprezentate prin dreptunghiuri, care să servească drept mediu de joc. Creați un fișier nou numit joc simplu.py.

Codul folosit în acest articol este disponibil în acest articol

Depozitul GitHub și este gratuit pentru utilizare sub licența MIT.

Mai întâi, importați modulul pygame și inițializați-l. Apoi definiți poziția de pornire a jucătorului și viteza de mișcare. Creați platforme folosind pygame. Rect obiecte și definiți pozițiile și dimensiunile acestora.

În bucla de joc, gestionați evenimente precum părăsirea jocului. De asemenea, te poți descurca mișcarea jucătorului pe baza intrărilor tactile sau de la tastatură.

Iată rezultatul jocului simplu:

Creați straturi diferite

Pentru a obține efectul de defilare, puteți crea mai multe straturi de fundal cu culori diferite. Fiecare strat se va mișca cu o viteză diferită, creând un efect de paralaxă. Acest efect dă iluzia de profunzime și îmbunătățește sentimentul de mișcare în joc.

Definiți două straturi de fundal, fiecare acoperind întreaga fereastră de joc, folosind pygame. Rectificarea obiectelor. Definiți, de asemenea, culorile fiecărui strat din fundal_culori listă. The background_speeds listă determină viteza cu care se va mișca fiecare strat.

# Adăugați acest cod sub secțiunea anterioară

background_layers = [
pygame. Rect(0, 0, screen_width, screen_height),
pygame. Rect(0, 0, screen_width, screen_height)
]

culorile_fond = [(30, 30, 30), (60, 60, 60)]
background_speeds = [0.1, 1.0]

Pentru a crea efectul de defilare de fundal, trebuie să actualizați pozițiile straturilor de fundal în bucla de joc. Veți muta fiecare strat orizontal în funcție de viteza atribuită.

Creați un fișier nou numit scrolling-bg.py și adăugați codul cu actualizările de mai jos:

pentru i în interval (len (background_layers)):
straturi de fundal[i].x -= viteze_de_fond[i]

dacă straturi_fond[i].x <= -lățime_ecran:
straturi de fundal[i].x = 0

pygame.draw.rect (ecran, background_culos[i], background_layers[i])

Iterați prin fiecare strat de fundal. Scădeți viteza corespunzătoare din coordonatele x a stratului, făcându-l să se miște la stânga. Dacă un strat ajunge la marginea din stânga a ecranului, resetați-i poziția la dreapta, creând un efect de defilare continuă.

In cele din urma, desenați fiecare strat de fundal dreptunghiular pe ecran folosind pygame.draw.rect() și trecând culoarea și jocul corespunzătoare. Rect obiect.

Adăugarea unui efect de paralaxă în timpul mișcării

Pentru a spori efectul de paralaxă, puteți modifica mișcarea platformei pentru a avea loc atunci când jucătorul se mișcă. Acest lucru va crea un sentiment puternic de profunzime și mișcare dinamică. Creați un fișier nou numit paralaxă.py și adăugați codul cu actualizările de mai jos:

# Definiți pozițiile și vitezele platformei
rect1 = pygame. Rect(50, screen_height - 100, 200, 10)
rect2 = pygame. Rect (screen_width - 250, screen_height - 200, 200, 10)

platforme = [
{"rect": rect1, "viteză": 3},
{"rect": rect2, "viteză": 1}
]

# Adăugați acest cod în bucla de joc

# Mișcarea jucătorului
taste = pygame.key.get_pressed()

dacă chei[pygame. K_LEFT] și player_x > 0:
player_x -= player_speed

pentru platformă în platforme:
platformă["rect"].x -= platforma["viteză"]

dacă chei[pygame. K_DREPTA] și player_x < screen_width:
player_x += player_speed

pentru platformă în platforme:
platformă["rect"].x += platformă["viteză"]

pentru platformă în platforme:
pygame.draw.rect (ecran, (0, 255, 0), platformă["rect"])

Reprezentați platformele ca dicționare care conțin atât obiectul dreptunghi (rect) cât și viteza cu care platforma ar trebui să se miște (viteza). Platformele se actualizează în bucla de joc în funcție de mișcarea jucătorului.

Prin implementarea acestei modificări, efectul de defilare va fi activ numai atunci când jucătorul se mișcă activ, sporind și mai mult iluzia de adâncime și mișcare.

Inclusiv caracteristici suplimentare

Puteți implementa mai multe funcții suplimentare pentru a îmbunătăți fundalurile de defilare în jocul dvs. Aici sunt cateva exemple.

Randomizați culorile de fundal

Pentru a adăuga variații la straturile de fundal, puteți să le alegeți aleatoriu culorile. Puteți face acest lucru modificând fundal_culori listă:

import Aleatoriu

# Adăugați acest cod înainte de bucla de joc

fundal_culori = [
(random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)),
(random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)),
(random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))
]

Adăugați mai multe straturi de fundal

Puteți experimenta adăugarea mai multor straturi de fundal pentru a crea un efect de paralaxă mai bogat. Pur și simplu definiți suplimentar pygame. Rect obiecte, culori și viteze:

# Adăugați acest cod înainte de bucla de joc

background_layers = [
pygame. Rect(0, 0, screen_width, screen_height),
pygame. Rect(0, 0, screen_width, screen_height),
pygame. Rect(0, 0, screen_width, screen_height),
pygame. Rect(0, 0, screen_width, screen_height)
]

fundal_culori = [
(30, 30, 30),
(60, 60, 60),
(90, 90, 90),
(120, 120, 120)
]

background_speeds = [1, 2, 3, 4]

Utilizați imagini pentru fundal

În loc de culori solide, puteți utiliza fișiere imagine ca fundal. Pygame oferă funcții pentru a încărca și a reda imagini.

Încărcați fișierele imagine background_0.png, fundal_1.png, și fundal_2.png folosind pygame.image.load(). Utilizați metoda convert() pentru a îmbunătăți performanța și a scala imaginile pentru a se potrivi cu dimensiunile ecranului pygame.transform.scale().

# Adăugați acest cod înainte de bucla de joc

imagini_de fundal = [
pygame.image.load(„background_0.png”).convertit(),
pygame.image.load(„background_1.png”).convertit(),
pygame.image.load(„background_2.png”).convertit()
]

background_speeds = [1, 2, 3]

pentru i în interval (len (imagini de fundal)):
dimensiune = (screen_width, screen_height)
imagini_de fundal[i] = pygame.transform.scale (imagini de fundal[i], dimensiune)

În cele din urmă, actualizați bucla în care desenați straturile de fundal pentru a utiliza imaginile:

# Actualizați acest cod în bucla de joc

pentru i în interval (len (background_layers)):
straturi de fundal[i].x -= viteze_de_fond[i]

dacă straturi_fond[i].x <= -lățime_ecran:
straturi de fundal[i].x = 0

screen.blit (imagini de fundal[i], straturi de fundal[i])

Iată câteva dintre cele mai bune practici de luat în considerare atunci când implementați fundalurile de defilare în proiectele dvs. Pygame.

Optimizați performanța

Derularea fundalurilor implică randarea și actualizarea continuă. Pentru a asigura un joc fără probleme, luați în considerare optimizarea codului și reducerea la minimum a calculelor inutile.

Experimentați cu vitezele straturilor

Ajustarea vitezei straturilor de fundal poate crea efecte diferite. Joacă-te cu diferite valori pentru a găsi echilibrul potrivit și a obține impactul vizual dorit.

Testați pe diferite dimensiuni de ecran

Asigurați-vă că fundalurile dvs. de defilare funcționează bine pe diferite rezoluții de ecran. Luați în considerare implementarea scalarii dinamice sau utilizarea diferitelor imagini de fundal pentru diferite raporturi de aspect.

Utilizați formate de imagine adecvate

Dacă decideți să utilizați imagini pentru fundal, alegeți formatul de imagine adecvat (de exemplu, PNG, JPEG) pentru a echilibra dimensiunea fișierului și calitatea imaginii. De asemenea, puteți reduce timpii de încărcare prin comprimarea și optimizarea imaginilor.

Luați în considerare utilizarea memoriei

Dacă intenționați să utilizați multe imagini de înaltă rezoluție pentru fundal, fiți atenți la cerințele de memorie. Imaginile mari pot consuma o cantitate semnificativă de memorie, afectând potențial performanța și capacitatea de răspuns a jocului.

Încorporând fundaluri de defilare, puteți crea diferite medii, cum ar fi peisaje în mișcare, peisaje urbane futuriste sau lumi subacvatice. Efectul de paralaxă adaugă o notă dinamică, făcând lumea jocului să se simtă vie și interactivă.

Nu uitați să experimentați, să repetați și să explorați posibilitățile creative cu fundaluri de defilare pentru a vă face jocurile mai distractive și mai captivante pentru jucători.