Urobte svoje projekty Pygame zaujímavejšie integrovaním vylepšení a zberateľských predmetov.

Vylepšenia a zberateľské predmety zohrávajú kľúčovú úlohu pri zlepšovaní hrateľnosti a pri zvyšovaní pútavosti hier. Pridaním týchto prvkov do svojich projektov Pygame môžete vytvárať jedinečné výzvy, zvyšovať motiváciu hráčov a poskytovať príležitosti na strategické rozhodovanie.

Našťastie Pygame poskytuje flexibilné spôsoby implementácie vylepšení a zberateľských predmetov s relatívnou ľahkosťou.

Vytvorte jednoduchú hru

Pred začatím sa uistite, že máte pip nainštalovaný vo vašom systéme. Tento príkaz použite na inštaláciu pygame knižnica:

pip install pygame

Začnite nastavením jednoduchej hry, v ktorej sa hráč môže pohybovať doľava a doprava a zároveň sa vyhýbať nepriateľovi.

Kód použitý v tomto článku je dostupný v tomto úložisko GitHub a môžete ho bezplatne používať na základe licencie MIT.

To bude slúžiť ako základ pre pridávanie vylepšení a zberateľských predmetov. Tu je príklad útržku kódu:

importovať
instagram viewer
pygame
importovať náhodný

# Inicializujte Pygame
pygame.init()

# Nastavte herné okno
šírka_okna = 800
výška_okna = 600
okno = pygame.display.set_mode((šírka_okna, výška_okna))
pygame.display.set_caption("Moja hra")

# Nastavte prehrávač
player_width = 50
player_height = 50
player_x = (šírka_okna - šírka_prehrávača) // 2
player_y = window_height - player_height - 10
player_speed = 5

# Nastaviť nepriateľa
nepriateľ_šírka = 50
výška_priateľa = 50
nepriateľ_x = random.randint(0, šírka_okna - šírka_nepriateľa)
nepriateľ_y = 50
rýchlosť nepriateľa = 3

# Herná slučka
beh = Pravda
zatiaľ čo beh:
pre udalosť v pygame.event.get():
ak event.type == pygame. UKONČIŤ:
beh = Nepravdivé

# Pohyb hráča
keys = pygame.key.get_pressed()
ak kľúče [pygame. K_LEFT] a player_x > 0:
player_x -= player_speed
ak kľúče [pygame. K_RIGHT] a player_x < window_width - player_width:
player_x += player_speed

# Hnutie nepriateľa
nepriateľ_y += rýchlosť_priateľa
ak nepriateľ_y > výška_okna:
nepriateľ_x = random.randint(0, šírka_okna - šírka_nepriateľa)
nepriateľ_y = 0

# Detekcia kolízie
ak (hráč_x < nepriateľ_x + šírka_priateľa) a \
(player_x + player_width > nepriateľ_x) a \
(hráč_y < nepriateľ_y + výška_nepriateľa) a \
(hráč_y + výška_hráča > nepriateľ_y):
beh = Nepravdivé

# Vyčistite obrazovku
window.fill((0, 0, 0))

player_pos = (player_x, player_y,
player_width, player_height)
nepriateľ_pos = (nepriateľ_x, nepriateľ_y,
nepriateľ_šírka, nepriateľ_výška)

# Prehrávač kreslenia
pygame.draw.rect (okno, (255, 255, 255), player_pos)

# Nakreslite nepriateľa
pygame.draw.rect (okno, (255, 0, 0), nepriateľ_pos)

# Aktualizujte displej
pygame.display.update()

# Ukončite hru
pygame.quit()

Nižšie je výstup:

Vytvorte zberateľské predmety

Ak chcete vytvoriť zberateľské predmety, pridajte predmet, ktorý po kolízii s hráčom zmizne a pridá 10 bodov do skóre. Na to musíte skontrolujte kolízie medzi prehrávačom a zberateľskými predmetmi. Tu je aktualizovaná verzia kódu, ktorý obsahuje zberateľské predmety. Vytvorte nový súbor s názvom zberateľské predmety.py a pridajte kód s nižšie uvedenými aktualizáciami:

# Nastavte zberateľskú položku
zberateľská_šírka = 30
zberateľská_výška = 30
zberateľský_x = random.randint(0, šírka_okna - šírka_zberateľskej_šírky)
zberateľská_y = 50

# Nastavte skóre
skóre = 0
font = pygame.font. Font(žiadne, 36)

# ...

# Detekcia kolízie so zberateľským predmetom
ak (player_x < collectible_x + collectible_width) a \
(player_x + player_width > collectible_x) a \
(player_y < collectible_y + collectible_height) a \
(player_y + player_height > collectible_y):
zberateľský_x = random.randint(0, šírka_okna - šírka_zberateľskej_šírky)
zberateľská_y = 50
skóre += 10
# ...

zberateľský_pos = (zberateľský_x, zberateľský_y)
# Draw zberateľstvo
pygame.draw.circle (okno, (0, 255, 0), collectible_pos, collectible_width)

# Remíza skóre
score_text = font.render("Skóre: " + str (skóre), Pravda, (255, 255, 255))
window.blit (score_text, (10, 10))

Nižšie je výstup:

Vytvorte vylepšenia

Teraz môžete do svojej hry zaviesť vylepšenia pomocou nasledujúcej logiky. Keď sa prehrávač zrazí so zapnutým predmetom, zapnutie zmizne. Ak sa hráč zrazí s nepriateľom počas aktívneho zapnutia, nepriateľ bude zlikvidovaný. Vytvorte nový súbor s názvom powerups.py a pridajte kód s nižšie uvedenými aktualizáciami:

# Nastavte zapnutie
powerup_width = 40
powerup_height = 40
powerup_x = random.randint(0, window_width - powerup_width)
powerup_y = 50
štít_aktívny = Nepravdivé
shield_timer = 0

# ...

# Detekcia kolízie so zapnutím
crash_powerup = (player_x < powerup_x + powerup_width) a \
(player_x + player_width > powerup_x) a \
(player_y < powerup_y + powerup_height) a \
(player_y + player_height > powerup_y)

ak crash_powerup:
powerup_x = random.randint(0, window_width - powerup_width)
powerup_y = 50
štít_aktívny = Pravda
shield_timer = pygame.time.get_ticks()

# ...

# Skontrolujte časovač štítu
ak shield_active:
current_time = pygame.time.get_ticks()
ak current_time - shield_timer > 5000:
štít_aktívny = Nepravdivé

# ...

# Definujte vrcholy trojuholníka
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

# Nakreslite trojuholník
pygame.draw.polygon (okno, (255, 255, 0), [(x1, y1), (x2, y2), (x3, y3)])

# ...

# Detekcia kolízie s aktívnym štítom
crash_shield = štít_aktívny a \
(hráč_x < nepriateľ_x + šírka_priateľa) a \
(player_x + player_width > nepriateľ_x) a \
(hráč_y < nepriateľ_y + výška_nepriateľa) a \
(hráč_y + výška_hráča > nepriateľ_y)

ak crash_shield:
nepriateľ_x = random.randint(0, šírka_okna - šírka_nepriateľa)
nepriateľ_y = 0

Nižšie je výstup:

Nastavenie časovača pre zapnutie

Ak chcete, aby zapnutie po určitom čase zmizlo a znovu sa objavilo na náhodnom mieste, môžete zaviesť časovače. Vytvorte nový súbor s názvom timer.py a pridajte kód s nižšie uvedenými aktualizáciami:

# Nastavte časovač pre respawn pri zapnutí
powerup_respawn_timer = 0

# Skontrolujte časovač zapnutia
aknie shield_active:
current_time = pygame.time.get_ticks()
ak 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()

Vizualizácia časovača zapnutia

Ak chcete poskytnúť vizuálnu reprezentáciu časovača zapnutia, môžete nakresliť objekt obdĺžnikového tvaru, ktorý sa časom postupne vyčerpáva. Vytvorte nový súbor s názvom bar.py a pridajte kód s nižšie uvedenými aktualizáciami:

# Nastavte lištu zapnutia
bar_width = 100
bar_height = 10
bar_x = šírka_okna - šírka_baru - 10
bar_y = 10

# ...

# Vypočítajte priebeh časovača zapnutia
ak shield_active:
current_time = pygame.time.get_ticks()
elapsed_time = current_time - shield_timer
timer_progress = (5000 - uplynutý čas) / 5000
# Nakreslite lištu pri zapnutí
bar_rect = pygame. Obdĺžnik (bar_x, bar_y, bar_width * timer_progress, bar_height)
pygame.draw.rect (okno, (0, 255, 255), bar_rect)

Nižšie je výstup:

Osvedčené postupy pri pridávaní vylepšení a zberateľských predmetov

Pokiaľ ide o začlenenie vylepšení a zberateľských predmetov do vašich projektov Pygame, dodržiavanie osvedčených postupov môže výrazne zlepšiť celkový zážitok z hry. Zvážte nasledujúce pokyny, aby ste zabezpečili vyváženú a pútavú implementáciu:

Vizuálne rozlíšenie

Je nevyhnutné vytvoriť jasné vizuálne rozdiely medzi vylepšeniami, zberateľskými predmetmi a inými hernými prvkami. Použite rôzne farby, tvary alebo symboly, aby boli hráčom ľahko rozpoznateľné. Táto vizuálna čistota pomáha hráčom identifikovať a uprednostňovať svoje ciele, vďaka čomu je hra intuitívnejšia a zábavnejšia.

Rovnováha a výzva

Snažte sa zachovať vyvážený a náročný herný zážitok. Upravte frekvenciu vylepšení a zberateľských spawnov, aby ste predišli preťaženiu hráčov alebo príliš zjednodušili hru. Nájdenie správnej rovnováhy si vyžaduje starostlivé testovanie a opakovanie.

Berte do úvahy spätnú väzbu od hráčov a dolaďte frekvenciu výskytu, aby ste vytvorili pútavý a uspokojujúci zážitok.

Spätná väzba a odmeny

Poskytovanie okamžitej spätnej väzby a odmien, keď hráči zbierajú vylepšenia alebo zberateľské predmety, zvyšuje pocit úspechu a motiváciu. Zvážte pridanie vizuálnych efektov, zvukových podnetov alebo animácií na označenie úspešných akvizícií.

Odmeňovanie hráčov bodmi, extra životmi alebo odomykaním špeciálnych schopností pridáva ďalšie vzrušenie a povzbudzuje hráčov, aby tieto prvky aktívne vyhľadávali.

Časovače a trvanie

Implementujte časovače a trvanie pre vylepšenia, aby ste zachovali spravodlivosť a strategické rozhodovanie. Power-upy by mali mať obmedzené trvanie, aby sa predišlo tomu, že hráči budú prehnaní na dlhší čas.

Vyváženie trvania je rozhodujúce, pretože príliš krátke trvanie môže pôsobiť neuspokojivo, zatiaľ čo príliš dlhé môže hru narušiť. Otestujte rôzne trvanie, aby ste našli sladké miesto pre každé zapnutie.

Testujte a opakujte

Playtesting je dôležitým krokom v procese vývoja. Dôkladne otestujte svoju hru s rôznymi konfiguráciami a úrovňami obtiažnosti, aby ste sa uistili, že vylepšenia a zberateľské predmety sú vhodne vyvážené a integrované do hry.

Venujte pozornosť spätnej väzbe hráčov a opakujte ich na základe ich skúseností. Tento iteratívny prístup vám umožňuje vyladiť systém a vytvoriť tak príjemný a podmanivý herný zážitok.

Urobte hry pútavejšími so zberateľskými predmetmi

Pridanie vylepšení a zberateľských predmetov do vašich projektov Pygame môže výrazne zlepšiť celkový herný zážitok. Tieto prvky prinášajú strategické rozhodnutia, odmeňujú hráčov a zvyšujú motiváciu. Zberateľské predmety možno použiť na odomknutie nových funkcií, úrovní alebo schopností, zatiaľ čo vylepšenia poskytujú dočasné výhody a jedinečné herné mechanizmy.

Starostlivým navrhovaním a implementáciou týchto funkcií môžete vytvárať hry, ktoré sú pre hráčov pôsobivejšie, náročnejšie a zábavnejšie.