Učinite svoje Pygame projekte zanimljivijima integriranjem pojačanja i kolekcionarskih predmeta.

Pojačanja i kolekcionarski predmeti igraju ključnu ulogu u poboljšanju igranja i čineći igre zanimljivijima. Dodavanjem ovih elemenata svojim Pygame projektima možete stvoriti jedinstvene izazove, povećati motivaciju igrača i pružiti prilike za strateško donošenje odluka.

Srećom, Pygame nudi fleksibilne načine za implementaciju pojačanja i kolekcionarskih predmeta s relativnom lakoćom.

Stvorite jednostavnu igru

Prije početka provjerite imate li pip instaliran na vašem sustavu. Koristite ovu naredbu za instalaciju pygame knjižnica:

pip instaliraj pygame

Započnite postavljanjem jednostavne igre u kojoj se igrač može kretati lijevo i desno dok izbjegava neprijatelja.

Kôd korišten u ovom članku dostupan je u ovom GitHub spremište i besplatan je za korištenje pod MIT licencom.

Ovo će poslužiti kao temelj za dodavanje pojačanja i kolekcionarskih predmeta. Evo primjera isječka koda:

uvoz pygame
uvoz slučajan
instagram viewer

# Inicijalizirajte Pygame
pygame.init()

# Postavite prozor igre
širina_prozora = 800
visina_prozora = 600
prozor = pygame.display.set_mode((širina_prozora, visina_prozora))
pygame.display.set_caption("moja igra")

# Postavite player
player_width = 50
visina_igrača = 50
igrač_x = (širina_prozora - širina_igrača) // 2
player_y = window_height - player_height - 10
brzina_igrača = 5

# Postavite neprijatelja
širina_neprijatelja = 50
visina_neprijatelja = 50
neprijatelj_x = random.randint(0, window_width - neprijateljska_širina)
neprijatelj_y = 50
brzina_neprijatelja = 3

# Petlja igre
trčanje = Pravi
dok trčanje:
za događaj u pygame.event.get():
ako event.type == pygame. PRESTATI:
trčanje = lažno

# Kretanje igrača
tipke = pygame.key.get_pressed()
ako ključevi[pygame. K_LEFT] i igrač_x > 0:
igrač_x -= brzina_igrača
ako ključevi[pygame. K_DESNO] i player_x < window_width - player_width:
igrač_x += brzina_igrača

# Kretanje neprijatelja
neprijatelj_y += neprijateljska_brzina
ako neprijatelj_y > visina_prozora:
neprijatelj_x = random.randint(0, window_width - neprijateljska_širina)
neprijatelj_y = 0

# Otkrivanje sudara
ako (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):
trčanje = lažno

# Očistite zaslon
window.fill((0, 0, 0))

player_pos = (player_x, player_y,
širina_igrača, visina_igrača)
neprijatelj_pos = (neprijatelj_x, neprijatelj_y,
širina_neprijatelja, visina_neprijatelja)

# Igrač za izvlačenje
pygame.draw.rect (prozor, (255, 255, 255), player_pos)

# Nacrtajte neprijatelja
pygame.draw.rect (prozor, (255, 0, 0), enemy_pos)

# Ažurirajte zaslon
pygame.display.update()

# Napustite igru
pygame.quit()

Ispod je izlaz:

Stvorite kolekcionarske predmete

Za stvaranje kolekcionarskih predmeta dodajte predmet koji, nakon sudara s igračem, nestaje i dodaje 10 bodova rezultatu. Za ovo morate provjerite kolizije između igrača i kolekcionarskih predmeta. Evo ažurirane verzije koda koja uključuje kolekcionarske predmete. Stvorite novu datoteku pod nazivom kolekcionarstvo.py i dodajte kod sa sljedećim ažuriranjima:

# Postavite kolekcionarski predmet
kolekcionarska_širina = 30
kolekcionarska_visina = 30
collectible_x = random.randint(0, window_width - kolekcionarska_width)
kolekcionarski_y = 50

# Postavite rezultat
rezultat = 0
font = pygame.font. Font (Nijedan, 36)

# ...

# Otkrivanje sudara s kolekcionarskim predmetima
ako (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 - kolekcionarska_width)
kolekcionarski_y = 50
rezultat += 10
# ...

kolekcionarski_pos = (kolekcionarski_x, kolekcionarski_y)
# Kolekcionarstvo crtanja
pygame.draw.circle (prozor, (0, 255, 0), collectible_pos, collectible_width)

# Izvucite rezultat
rezultat_tekst = font.render("Rezultat: " + str (rezultat), Pravi, (255, 255, 255))
window.blit (score_text, (10, 10))

Ispod je izlaz:

Stvorite pojačanja

Sada možete uvesti pojačanja u svoju igru ​​sljedećom logikom. Kada se igrač sudari s objektom za pojačanje, pojačanje će nestati. Ako se igrač sudari s neprijateljem dok je pojačanje aktivno, neprijatelj će biti eliminiran. Stvorite novu datoteku pod nazivom pojačanja.py i dodajte kod sa sljedećim ažuriranjima:

# Postavite uključivanje
powerup_width = 40
visina_pojačanja = 40
powerup_x = random.randint(0, window_width - powerup_width)
powerup_y = 50
štit_aktivan = lažno
shield_timer = 0

# ...

# Otkrivanje sudara s uključivanjem
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)

ako pojačanje_sudara:
powerup_x = random.randint(0, window_width - powerup_width)
powerup_y = 50
štit_aktivan = Pravi
shield_timer = pygame.time.get_ticks()

# ...

# Provjerite tajmer štita
ako štit_aktivan:
trenutno_vrijeme = pygame.time.get_ticks()
ako trenutno_vrijeme - mjerač vremena štita > 5000:
štit_aktivan = lažno

# ...

# Definirajte vrhove trokuta
x1 = powerup_x + powerup_width / 2
y1 = pojačanje_y
x2 = pojačanje_x
y2 = snaga_y + snaga_visina
x3 = powerup_x + powerup_width
y3 = snaga_y + snaga_visina

# Nacrtajte trokut
pygame.draw.polygon (prozor, (255, 255, 0), [(x1, y1), (x2, y2), (x3, y3)])

# ...

# Otkrivanje sudara s aktivnim štitom
sudar_štit = štit_aktivan 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)

ako štit od sudara:
neprijatelj_x = random.randint(0, window_width - neprijateljska_širina)
neprijatelj_y = 0

Ispod je izlaz:

Postavljanje mjerača vremena za pojačanja

Kako bi napajanje nestalo nakon određenog vremena i ponovno se pojavilo na nasumičnim mjestima, možete uvesti mjerače vremena. Stvorite novu datoteku pod nazivom mjerač vremena.py i dodajte kod sa sljedećim ažuriranjima:

# Postavite mjerač vremena za ponovno pokretanje
powerup_respawn_timer = 0

# Provjerite mjerač vremena za uključivanje
akone štit_aktivan:
trenutno_vrijeme = pygame.time.get_ticks()
ako trenutno_vrijeme - powerup_respawn_timer > 3000:
powerup_x = random.randint(0, window_width - powerup_width)
powerup_y = 50
powerup_respawn_timer = pygame.time.get_ticks()

Vizualizacija Power-Up Timera

Da biste vizualno prikazali mjerač vremena za uključivanje, možete nacrtati objekt pravokutnog oblika koji se s vremenom postupno troši. Stvorite novu datoteku pod nazivom bar.py i dodajte kod sa sljedećim ažuriranjima:

# Postavite traku za uključivanje
širina_trake = 100
visina_bara = 10
traka_x = širina_prozora - širina_trake - 10
bar_y = 10

# ...

# Izračunajte napredak mjerača vremena za uključivanje
ako štit_aktivan:
trenutno_vrijeme = pygame.time.get_ticks()
proteklo_vrijeme = trenutno_vrijeme - zaštitni_timer
timer_progress = (5000 - Proteklo vrijeme) / 5000
# Nacrtajte traku za uključivanje
bar_rect = pygame. Prav (bar_x, bar_y, bar_width * timer_progress, bar_height)
pygame.draw.rect (prozor, (0, 255, 255), bar_rect)

Ispod je izlaz:

Najbolji primjeri iz prakse za dodavanje pojačanja i kolekcionarskih predmeta

Kada je riječ o uključivanju pojačanja i kolekcionarskih predmeta u vaše Pygame projekte, praćenje najboljih praksi može uvelike poboljšati cjelokupno iskustvo igranja. Razmotrite sljedeće smjernice kako biste osigurali uravnoteženu i zanimljivu implementaciju:

Vizualno razlikovanje

Bitno je stvoriti jasne vizualne razlike između pojačanja, kolekcionarskih predmeta i drugih elemenata igre. Koristite različite boje, oblike ili simbole kako bi ih igrači lako prepoznali. Ova vizualna jasnoća pomaže igračima identificirati i odrediti prioritet svojih ciljeva, čineći igru ​​intuitivnijom i ugodnijom.

Ravnoteža i izazov

Nastojte održati uravnoteženo i izazovno iskustvo igranja. Prilagodite učestalost pojačanja i pojavljivanja kolekcionarskih predmeta kako biste izbjegli preopterećenje igrača ili učinili igru ​​previše jednostavnom. Pronalaženje prave ravnoteže zahtijeva pažljivo testiranje i ponavljanje.

Uzmite u obzir povratne informacije igrača i fino podesite stope pojavljivanja kako biste stvorili zanimljivo i zadovoljavajuće iskustvo.

Povratne informacije i nagrade

Pružanje trenutačnih povratnih informacija i nagrada kada igrači skupljaju pojačanja ili kolekcionarske predmete povećavaju osjećaj postignuća i motivacije. Razmislite o dodavanju vizualnih efekata, zvučnih znakova ili animacija kako biste označili uspješne akvizicije.

Nagrađivanje igrača bodovima, dodatnim životima ili otključavanjem posebnih sposobnosti dodaje dodatno uzbuđenje i potiče igrače da aktivno traže te elemente.

Tajmeri i trajanja

Implementirajte mjerače vremena i trajanja za pojačanja kako biste održali pravednost i strateško donošenje odluka. Pojačanja bi trebala imati ograničeno trajanje kako bi se spriječilo da igrači budu nadjačani tijekom duljeg razdoblja.

Balansiranje trajanja je ključno, jer prekratko trajanje može djelovati nedovoljno, dok predugo može dovesti do neuravnoteženosti igre. Testirajte različita trajanja kako biste pronašli najbolju točku za svako pojačanje.

Testiraj i ponavljaj

Testiranje igranja vitalan je korak u procesu razvoja. Temeljito testirajte svoju igru ​​s različitim konfiguracijama i razinama težine kako biste osigurali da su pojačanja i kolekcionarski predmeti prikladno uravnoteženi i integrirani u igru.

Obratite pozornost na povratne informacije igrača i ponavljajte na temelju njihovih iskustava. Ovaj iterativni pristup omogućuje vam fino podešavanje sustava, stvarajući ugodno i zadivljujuće iskustvo igranja.

Učinite igre privlačnijim s kolekcionarskim predmetima

Dodavanje pojačanja i kolekcionarskih predmeta vašim Pygame projektima može značajno poboljšati cjelokupno iskustvo igranja. Ovi elementi uvode strateške izbore, nagrađuju igrače i povećavaju motivaciju. Kolekcionarski predmeti mogu se koristiti za otključavanje novih značajki, razina ili sposobnosti, dok pojačanja daju privremene prednosti i jedinstvenu mehaniku igranja.

Pažljivim dizajniranjem i implementacijom ovih značajki, možete kreirati igre koje su impresivnije, izazovnije i ugodnije za igrače.