Tegye érdekesebbé Pygame-projektjeit power-up és gyűjthető tárgyak integrálásával.
A teljesítménynövelők és a gyűjthető tárgyak döntő szerepet játszanak a játékmenet javításában és a játékok vonzóbbá tételében. Ha ezeket az elemeket hozzáadja Pygame projektjeihez, egyedi kihívásokat teremthet, növelheti a játékosok motivációját, és lehetőséget biztosíthat a stratégiai döntéshozatalhoz.
Szerencsére a Pygame rugalmas módokat kínál a teljesítménynövelések és a gyűjthető tárgyak viszonylag egyszerű megvalósítására.
Hozzon létre egy egyszerű játékot
Mielőtt elkezdené, győződjön meg arról, hogy rendelkezik pip telepítve van a rendszerére. Ezzel a paranccsal telepítheti a pygame könyvtár:
pip install pygame
Kezdje egy egyszerű játék létrehozásával, amelyben a játékos balra és jobbra mozoghat, miközben elkerüli az ellenséget.
A cikkben használt kód itt érhető el GitHub adattár és az MIT licence alapján ingyenesen használható.
Ez szolgál majd az alapjául a power-upok és a gyűjthető tárgyak hozzáadásához. Íme egy példa kódrészlet:
import pygame
import véletlen# Inicializálja a Pygame-et
pygame.init()# Állítsa be a játékablakot
ablak_szélessége = 800
ablak_magassága = 600
ablak = pygame.display.set_mode((ablak_szélessége, ablak_magassága))
pygame.display.set_caption("Az én játékom")# A lejátszó beállítása
player_width = 50
játékos_magasság = 50
player_x = (window_width - player_width) // 2
játékos_y = ablak_magassága - játékos_magassága - 10
player_speed = 5# Állítsa be az ellenséget
ellenség_szélesség = 50
ellenség_magasság = 50
ellenség_x = random.randint(0, ablak_szélessége - ellenség_szélessége)
ellenség_y = 50
enemy_speed = 3# Játékhurok
futás = Igaz
míg futás:
számára esemény ban ben pygame.event.get():
ha event.type == pygame. KILÉPÉS:
futás = Hamis# Játékos mozgás
keys = pygame.key.get_pressed()
ha kulcsok[pygame. K_LEFT] és játékos_x > 0:
player_x -= player_speed
ha kulcsok[pygame. K_JOBBRA] és player_x < window_width - player_width:
player_x += player_speed# Ellenséges mozgalom
ellenség_y += ellenséges_sebesség
ha ellenség_y > ablak_magassága:
ellenség_x = random.randint(0, ablak_szélessége - ellenség_szélessége)
ellenség_y = 0# Ütközésészlelés
ha (player_x < enemy_x + enemy_width) és \
(player_x + player_width > enemy_x) és \
(játékos_y < ellenséges_y + ellenséges_magasság) és \
(player_y + player_height > enemy_y):
futás = Hamis# Törölje a képernyőt
window.fill((0, 0, 0))player_pos = (player_x, player_y,
player_width, player_height)
enemy_pos = (ellenség_x, ellenség_y,
ellenséges_szélesség, ellenséges_magasság)# Draw player
pygame.draw.rect (ablak, (255, 255, 255), player_pos)# Rajzolj ellenséget
pygame.draw.rect (ablak, (255, 0, 0), enemy_pos)# Frissítse a kijelzőt
pygame.display.update()
# Lépjen ki a játékból
pygame.quit()
Alább látható a kimenet:
Hozzon létre gyűjteményt
Gyűjtőtárgyak létrehozásához adj hozzá egy tárgyat, amely a játékossal való ütközéskor eltűnik, és 10 pontot ad a pontszámhoz. Ehhez muszáj ellenőrizze a játékos és a gyűjthető tárgyak ütközését. Íme a kód frissített verziója, amely gyűjthető tárgyakat is tartalmaz. Hozzon létre egy új nevű fájlt gyűjthetőek.py és adja hozzá a kódot az alábbi frissítésekkel:
# Gyűjtemény beállítása
gyűjthető_szélesség = 30
gyűjthető_magasság = 30
gyűjthető_x = random.randint(0, ablak_szélessége – gyűjthető_szélesség)
gyűjthető_y = 50# Állítsa be a pontszámot
pontszám = 0
font = pygame.font. Betűtípus(Egyik sem, 36)# ...
# Ütközésérzékelés gyűjthető
ha (lejátszó_x < gyűjthető_x + gyűjthető_szélesség) és \
(player_x + player_width > gyűjthető_x) és \
(játékos_y < gyűjthető_y + gyűjthető_magasság) és \
(player_y + player_height > collectionible_y):
gyűjthető_x = random.randint(0, ablak_szélessége – gyűjthető_szélesség)
gyűjthető_y = 50
pontszám += 10
# ...gyűjthető_pozíció = (gyűjthető_x, gyűjthető_y)
# Rajzolj gyűjthető
pygame.draw.circle (ablak, (0, 255, 0), gyűjthető_pozíció, gyűjthető_szélesség)
# Döntetlen pontszám
score_text = font.render("Pontszám: " + str (pontszám), Igaz, (255, 255, 255))
window.blit (score_text, (10, 10))
Alább látható a kimenet:
Hozzon létre Power-Upokat
Most a következő logikával bevezetheti a játékba a teljesítménynövelést. Amikor a játékos ütközik egy bekapcsoló tárggyal, a bekapcsolás eltűnik. Ha a játékos ütközik az ellenséggel, miközben a bekapcsolás aktív, az ellenség kiesik. Hozzon létre egy új nevű fájlt powerups.py és adja hozzá a kódot az alábbi frissítésekkel:
# Állítsa be a bekapcsolást
powerup_width = 40
powerup_height = 40
powerup_x = random.randint(0, window_width - powerup_width)
powerup_y = 50
shield_active = Hamis
shield_timer = 0# ...
# Ütközésérzékelés bekapcsolással
collision_powerup = (player_x < powerup_x + powerup_width) és \
(player_x + player_width > powerup_x) és \
(player_y < powerup_y + powerup_height) és \
(player_y + player_height > powerup_y)ha collision_powerup:
powerup_x = random.randint(0, window_width - powerup_width)
powerup_y = 50
shield_active = Igaz
shield_timer = pygame.time.get_ticks()# ...
# Ellenőrizze a pajzs időzítőjét
ha shield_active:
aktuális_idő = pygame.time.get_ticks()
ha aktuális_idő - shield_timer > 5000:
shield_active = Hamis# ...
# Határozza meg a háromszög csúcsait
x1 = powerup_x + powerup_width / 2
y1 = powerup_y
x2 = powerup_x
y2 = teljesítmény_y + teljesítmény_magasság
x3 = powerup_x + powerup_width
y3 = teljesítmény_y + teljesítmény_magasság# Rajzolja meg a háromszöget
pygame.draw.polygon (ablak, (255, 255, 0), [(x1, y1), (x2, y2), (x3, y3)])# ...
# Ütközésérzékelés aktív pajzs mellett
collision_shield = pajzs_aktív és \
(player_x < enemy_x + enemy_width) és \
(player_x + player_width > enemy_x) és \
(játékos_y < ellenséges_y + ellenséges_magasság) és \
(y player_y + player_height > enemy_y)
ha collision_shield:
ellenség_x = random.randint(0, ablak_szélessége - ellenség_szélessége)
ellenség_y = 0
Alább látható a kimenet:
Bekapcsolási időzítő beállítása
Ha azt szeretné, hogy a bekapcsolás egy bizonyos idő elteltével eltűnjön, és egy véletlenszerű helyen újra megjelenjen, bevezethet időzítőket. Hozzon létre egy új nevű fájlt timer.py és adja hozzá a kódot az alábbi frissítésekkel:
# Állítsa be az időzítőt az újraindításhoz
powerup_respawn_timer = 0# Ellenőrizze a bekapcsolási időzítőt
hanem shield_active:
aktuális_idő = pygame.time.get_ticks()
ha aktuális_idő - powerup_respawn_timer > 3000:
powerup_x = random.randint(0, window_width - powerup_width)
powerup_y = 50
powerup_respawn_timer = pygame.time.get_ticks()
A bekapcsolási időzítő megjelenítése
A bekapcsolási időzítő vizuális megjelenítéséhez téglalap alakú objektumot rajzolhat, amely idővel fokozatosan kimerül. Hozzon létre egy új nevű fájlt bar.py és adja hozzá a kódot az alábbi frissítésekkel:
# Állítsa be a bekapcsolósávot
bar_width = 100
bar_height = 10
bar_x = ablak_szélessége - sáv_szélessége - 10
bar_y = 10# ...
# Számolja ki a bekapcsolási időzítő előrehaladását
ha shield_active:
aktuális_idő = pygame.time.get_ticks()
eltelt_idő = aktuális_idő – shield_timer
timer_progress = (5000 - eltelt idő) / 5000
# Rajzolj bekapcsolósávot
bar_rect = pygame. Rect (bar_x, bar_y, bar_width * timer_progress, bar_height)
pygame.draw.rect (ablak, (0, 255, 255), bar_rect)
Alább látható a kimenet:
Bevált gyakorlatok a teljesítménynövelők és a gyűjthető tárgyak hozzáadásához
Amikor a teljesítménynövelők és a gyűjthető tárgyak beépítéséről van szó a Pygame-projektekbe, a bevált gyakorlatok követése nagymértékben javíthatja az általános játékélményt. Vegye figyelembe a következő irányelveket a kiegyensúlyozott és vonzó végrehajtás érdekében:
Vizuális megkülönböztetés
Alapvető fontosságú, hogy világos vizuális különbségeket tegyünk a teljesítménynövelők, a gyűjthető tárgyak és más játékelemek között. Használj különböző színeket, formákat vagy szimbólumokat, hogy könnyen felismerhetők legyenek a játékosok számára. Ez a vizuális tisztaság segít a játékosoknak azonosítani és rangsorolni célpontjaikat, így a játék intuitívabb és élvezetesebb.
Egyensúly és kihívás
Törekedj a kiegyensúlyozott és kihívásokkal teli játékélmény fenntartására. Állítsd be az erőkifejtések és a gyűjthető spawnok gyakoriságát, hogy elkerüld a játékosok túlnyomását vagy a játék túl könnyűvé tételét. A megfelelő egyensúly megtalálása alapos tesztelést és iterációt igényel.
Vegye figyelembe a játékosok visszajelzéseit, és finomítsa a spawn arányát, hogy megnyerő és kielégítő élményt nyújtson.
Visszajelzés és jutalmak
Azonnali visszajelzés és jutalmak nyújtása, amikor a játékosok teljesítményt vagy gyűjthető tárgyakat gyűjtenek, fokozza a sikerélményt és a motivációt. Fontolja meg vizuális effektusok, hangjelzések vagy animációk hozzáadását a sikeres beszerzések jelzésére.
A játékosok jutalmazása pontokkal, extra életekkel vagy különleges képességek felszabadítása további izgalmat ad, és arra ösztönzi a játékosokat, hogy aktívan keressék ezeket az elemeket.
Időzítők és időtartamok
A méltányosság és a stratégiai döntéshozatal fenntartása érdekében alkalmazzon időzítőket és időtartamokat a bekapcsolásokhoz. A bekapcsolásoknak korlátozott időtartamúaknak kell lenniük, nehogy a játékosok hosszabb ideig túlerősödjenek.
Az időtartam kiegyensúlyozása kulcsfontosságú, mivel a túl rövid időtartam túlságosan kimerítőnek tűnhet, míg a túl hosszú időtartam kiegyensúlyozhatja a játékot. Tesztelje a különböző időtartamokat, hogy megtalálja a megfelelő helyet minden egyes bekapcsoláshoz.
Teszteld és iteráld
A játékteszt a fejlesztési folyamat létfontosságú lépése. Teszteld alaposan a játékodat különböző konfigurációkkal és nehézségi szintekkel, hogy megbizonyosodj arról, hogy a kiegészítők és a gyűjthető tárgyak megfelelően kiegyensúlyozottak és integrálódnak a játékmenetbe.
Ügyeljen a játékosok visszajelzéseire, és iteráljon tapasztalataik alapján. Ez az iteratív megközelítés lehetővé teszi a rendszer finomhangolását, élvezetes és magával ragadó játékélményt teremtve.
Tedd vonzóbbá a játékokat a gyűjteményekkel
Ha erősítőket és gyűjteményeket ad hozzá Pygame-projektjeihez, jelentősen javíthatja az általános játékélményt. Ezek az elemek stratégiai döntéseket vezetnek be, jutalmazzák a játékosokat és növelik a motivációt. A gyűjtemények felhasználhatók új funkciók, szintek vagy képességek feloldására, míg a teljesítménynövelések átmeneti előnyöket és egyedi játékmechanizmust biztosítanak.
E funkciók gondos megtervezésével és megvalósításával olyan játékokat hozhat létre, amelyek magával ragadóbbak, nagyobb kihívást jelentenek és élvezetesebbek a játékosok számára.