Faceți proiectele dvs. Pygame mai interesante integrând power-up-uri și obiecte de colecție.

Power-up-urile și obiectele de colecție joacă un rol crucial în îmbunătățirea gameplay-ului și pentru a face jocurile mai captivante. Adăugând aceste elemente la proiectele dvs. Pygame, puteți crea provocări unice, puteți crește motivația jucătorilor și puteți oferi oportunități de luare a deciziilor strategice.

Din fericire, Pygame oferă modalități flexibile de implementare a power-up-urilor și a obiectelor de colecție cu relativă ușurință.

Creați un joc simplu

Înainte de a începe, asigurați-vă că aveți pip instalat pe sistemul dumneavoastră. Utilizați această comandă pentru a instala pygame bibliotecă:

pip install pygame

Începeți prin a configura un joc simplu în care jucătorul se poate mișca la stânga și la dreapta evitând în același timp un inamic.

Codul folosit în acest articol este disponibil în acest articol Depozitul GitHub și este gratuit pentru utilizare sub licența MIT.

Aceasta va servi drept bază pentru adăugarea de power-up-uri și obiecte de colecție. Iată un exemplu de fragment de cod:

instagram viewer

import pygame
import Aleatoriu

# Inițializați Pygame
pygame.init()

# Configurați fereastra jocului
window_width = 800
window_height = 600
fereastră = pygame.display.set_mode((lățimea_ferestrei, înălțimea_ferestrei))
pygame.display.set_caption("Jocul meu")

# Configurați playerul
player_width = 50
player_height = 50
player_x = (lățime_fereastră - lățime_player) // 2
player_y = window_height - player_height - 10
player_speed = 5

# Stabiliți inamicul
enemy_width = 50
enemy_height = 50
enemy_x = random.randint(0, window_width - enemy_width)
enemy_y = 50
enemy_speed = 3

# Buclă de joc
alergare = Adevărat
in timp ce alergare:
pentru eveniment în pygame.event.get():
dacă event.type == pygame. PĂRĂSI:
alergare = Fals

# Mișcarea jucătorului
taste = pygame.key.get_pressed()
dacă chei[pygame. K_LEFT] și player_x > 0:
player_x -= player_speed
dacă chei[pygame. K_DREPTA] și player_x < window_width - player_width:
player_x += player_speed

# Mișcarea inamicului
enemy_y += enemy_speed
dacă enemy_y > window_height:
enemy_x = random.randint(0, window_width - enemy_width)
enemy_y = 0

# Detectarea coliziunii
dacă (player_x < enemy_x + enemy_width) și \
(player_x + player_width > enemy_x) și \
(player_y < enemy_y + enemy_height) și \
(player_y + player_height > enemy_y):
alergare = Fals

# Ștergeți ecranul
window.fill((0, 0, 0))

player_pos = (player_x, player_y,
player_width, player_height)
enemy_pos = (enemy_x, enemy_y,
enemy_width, enemy_height)

# Desenează jucătorul
pygame.draw.rect (fereastră, (255, 255, 255), player_pos)

# Desenați inamicul
pygame.draw.rect (fereastră, (255, 0, 0), enemy_pos)

# Actualizați afișajul
pygame.display.update()

# Închide jocul
pygame.quit()

Mai jos este rezultatul:

Creați obiecte de colecție

Pentru a crea obiecte de colecție, adăugați un obiect care, la ciocnirea cu jucătorul, dispare și adaugă 10 puncte la scor. Pentru asta, trebuie verificați coliziunile dintre jucător și obiectele de colecție. Iată o versiune actualizată a codului care include obiecte de colecție. Creați un fișier nou numit obiecte de colecţie.py și adăugați codul cu actualizările de mai jos:

# Configurați obiectul de colecție
lățime_de_colecție = 30
colectible_height = 30
collectible_x = random.randint(0, window_width - collectible_width)
collectible_y = 50

# Configurați scorul
scor = 0
font = pygame.font. Font(Nici unul, 36)

# ...

# Detectarea coliziunilor cu obiect de colecție
dacă (player_x < collectible_x + collectible_width) și \
(player_x + player_width > collectible_x) și \
(player_y < collectible_y + collectible_height) și \
(player_y + player_height > collectible_y):
collectible_x = random.randint(0, window_width - collectible_width)
collectible_y = 50
scor += 10
# ...

colectible_pos = (collectible_x, collectible_y)
# Desenați de colecție
pygame.draw.cercle (fereastră, (0, 255, 0), collectible_pos, collectible_width)

# Remiză scor
scor_text = font.render("Scor: " + str (scor), Adevărat, (255, 255, 255))
window.blit (text_score, (10, 10))

Mai jos este rezultatul:

Creați power-up-uri

Acum, puteți introduce power-up-uri în jocul dvs. cu următoarea logică. Când jucătorul se ciocnește de un obiect de pornire, pornirea va dispărea. Dacă jucătorul se ciocnește de inamicul în timp ce pornirea este activă, inamicul va fi eliminat. Creați un fișier nou numit powerups.py și adăugați codul cu actualizările de mai jos:

# Configurați pornirea
powerup_width = 40
powerup_height = 40
powerup_x = random.randint(0, window_width - powerup_width)
powerup_y = 50
scut_activ = Fals
shield_timer = 0

# ...

# Detectarea coliziunilor cu pornire
collision_powerup = (player_x < powerup_x + powerup_width) și \
(player_x + player_width > powerup_x) și \
(player_y < powerup_y + powerup_height) și \
(player_y + player_height > powerup_y)

dacă colision_powerup:
powerup_x = random.randint(0, window_width - powerup_width)
powerup_y = 50
scut_activ = Adevărat
shield_timer = pygame.time.get_ticks()

# ...

# Verificați cronometrul scutului
dacă shield_active:
current_time = pygame.time.get_ticks()
dacă current_time - shield_timer > 5000:
scut_activ = Fals

# ...

# Definiți vârfurile triunghiului
x1 = powerup_x + powerup_width / 2
y1 = powerup_y
x2 = powerup_x
y2 = powerup_y + powerup_height
x3 = powerup_x + powerup_width
y3 = powerup_y + powerup_height

# Desenați triunghiul
pygame.draw.polygon (fereastră, (255, 255, 0), [(x1, y1), (x2, y2), (x3, y3)])

# ...

# Detectarea coliziunilor cu scutul activ
collision_shield = scut_activ și \
(player_x < enemy_x + enemy_width) și \
(player_x + player_width > enemy_x) și \
(player_y < enemy_y + enemy_height) și \
(player_y + player_height > enemy_y)

dacă collision_shield:
enemy_x = random.randint(0, window_width - enemy_width)
enemy_y = 0

Mai jos este rezultatul:

Setarea temporizatorului pentru porniri

Pentru a face ca pornirea să dispară după un anumit timp și să reapare într-o locație aleatorie, puteți introduce cronometre. Creați un fișier nou numit timer.py și adăugați codul cu actualizările de mai jos:

# Configurați temporizatorul pentru reapariția la pornire
powerup_respawn_timer = 0

# Verificați temporizatorul de pornire
dacănu shield_active:
current_time = pygame.time.get_ticks()
dacă current_time - powerup_respawn_timer > 3000:
powerup_x = random.randint(0, window_width - powerup_width)
powerup_y = 50
powerup_respawn_timer = pygame.time.get_ticks()

Vizualizarea temporizatorului de pornire

Pentru a oferi o reprezentare vizuală a temporizatorului de pornire, puteți desena un obiect de formă dreptunghiulară care se epuizează treptat în timp. Creați un fișier nou numit bar.py și adăugați codul cu actualizările de mai jos:

# Configurați bara de pornire
bar_width = 100
bar_height = 10
bar_x = window_width - bar_width - 10
bar_y = 10

# ...

# Calculați progresul temporizatorului de pornire
dacă shield_active:
current_time = pygame.time.get_ticks()
elapsed_time = current_time - shield_timer
timer_progress = (5000 - timpul scurs) / 5000
# Desenați bara de pornire
bar_rect = pygame. Rect (bar_x, bar_y, bar_width * timer_progress, bar_height)
pygame.draw.rect (fereastră, (0, 255, 255), bar_rect)

Mai jos este rezultatul:

Cele mai bune practici pentru adăugarea de power-up-uri și obiecte de colecție

Când vine vorba de încorporarea power-up-urilor și a obiectelor de colecție în proiectele tale Pygame, respectarea celor mai bune practici poate îmbunătăți considerabil experiența generală de joc. Luați în considerare următoarele linii directoare pentru a asigura o implementare echilibrată și antrenantă:

Distincție vizuală

Este esențial să creați distincții vizuale clare între power-up-uri, obiecte de colecție și alte elemente de joc. Folosiți diferite culori, forme sau simboluri pentru a le face ușor de recunoscut pentru jucători. Această claritate vizuală îi ajută pe jucători să-și identifice și să-și prioritizeze țintele, făcând jocul mai intuitiv și mai plăcut.

Echilibru și provocare

Străduiți-vă să mențineți o experiență de joc echilibrată și provocatoare. Reglați frecvența power-up-urilor și aparițiilor de colecție pentru a evita copleșirea jucătorilor sau pentru a face jocul prea ușor. Găsirea echilibrului potrivit necesită testare și iterare atentă.

Luați în considerare feedbackul jucătorului și ajustați ratele de apariție pentru a crea o experiență captivantă și satisfăcătoare.

Feedback și recompense

Oferirea de feedback imediat și recompense atunci când jucătorii colectează power-up-uri sau obiecte de colecție sporește sentimentul de realizare și motivație. Luați în considerare adăugarea de efecte vizuale, semnale sonore sau animații pentru a indica achizițiile reușite.

Recompensarea jucătorilor cu puncte, vieți suplimentare sau deblocarea abilităților speciale adaugă și mai mult entuziasm și îi încurajează pe jucători să caute în mod activ aceste elemente.

Cronometre și durate

Implementați cronometre și durate pentru porniri pentru a menține corectitudinea și luarea deciziilor strategice. Power-up-urile ar trebui să aibă o durată limitată pentru a împiedica jucătorii să devină copleșiți pentru perioade lungi.

Echilibrarea duratei este crucială, deoarece o durată prea scurtă poate fi dezamăgitoare, în timp ce prea lungă poate dezechilibra jocul. Testați diferite durate pentru a găsi punctul ideal pentru fiecare pornire.

Testați și repetați

Testarea jocului este un pas vital în procesul de dezvoltare. Testați-vă jocul temeinic cu diferite configurații și niveluri de dificultate pentru a vă asigura că power-up-urile și obiectele de colecție sunt echilibrate și integrate în mod corespunzător în joc.

Acordați atenție feedback-ului jucătorilor și repetați în funcție de experiențele lor. Această abordare iterativă vă permite să reglați fin sistemul, creând o experiență de joc plăcută și captivantă.

Faceți jocurile mai atractive cu obiectele de colecție

Adăugarea de power-up-uri și obiecte de colecție la proiectele dvs. Pygame poate îmbunătăți semnificativ experiența generală de joc. Aceste elemente introduc alegeri strategice, recompensează jucătorii și măresc motivația. Elementele de colecție pot fi folosite pentru a debloca noi funcții, niveluri sau abilități, în timp ce power-up-urile oferă avantaje temporare și mecanisme de joc unice.

Prin proiectarea și implementarea cu atenție a acestor funcții, puteți crea jocuri mai captivante, mai provocatoare și mai plăcute pentru jucători.