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:

instagram viewer
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.