Tegye magával ragadóbb játékélményét egy párbeszédrendszer megvalósításával.

A Pygame párbeszédrendszerének megvalósítása nagyban javíthatja a játék interaktív élményét. A párbeszédrendszer lehetővé teszi a játék számára, hogy beszélgetéseket, üzeneteket és választási lehetőségeket mutasson be a játékosnak, így magával ragadóbb és magával ragadóbb játékmenetet hoz létre.

A Pygame könyvtár biztosítja a szükséges eszközöket a grafikus felhasználói felület (GUI) létrehozásához és a felhasználói bevitel kezeléséhez, így ideális választás a párbeszédes rendszer megvalósításához.

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

Ezután kezdje el 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ó.

Az alábbi kódrészlet beállítja a játékablakot, inicializálja a játékos és az ellenség tulajdonságait, és futtatja a játékhurkot.

instagram viewer

# Importálja a szükséges könyvtárakat
import pygame
tól től pygame.locals import *

pygame.init()

# Állítsa be a játékablakot
screen_width, screen_height = 800, 600
képernyő = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption("Az én játékom")

# Határozza meg a színeket
FEKETE = (0, 0, 0)
FEHÉR = (255, 255, 255)
SZÜRKE = (128, 128, 128)

# Játékos tulajdonságai
játékos_x = 400
player_y = 500
player_speed = 5

# Ellenség tulajdonságai
ellenség_x = 400
ellenség_y = 100
enemy_speed = 3

futás = Igaz
óra = pygame.time. Óra()

míg futás:
számára esemény ban ben pygame.event.get():
ha event.type == KILÉPÉS:
futás = Hamis

keys = pygame.key.get_pressed()

# Játékos mozgás
ha gombok[K_LEFT] és játékos_x > 0:
player_x -= player_speed
ha gombok[K_RIGHT] és player_x < screen_width - player_speed:
player_x += player_speed

# Frissítse az ellenség pozícióját
ellenség_y += ellenséges_sebesség
ha enemy_y > screen_height:
ellenség_y = -50

# Ellenőrizze az ütközést
ha pygame. Rect (player_x, player_y, 50, 50).colliderect (pygame. Rect (ellenség_x, ellenség_y, 50, 50)):
# Itt valósítsa meg a párbeszédpanelt
pass

screen.fill (FEKETE)
pygame.draw.rect (képernyő, FEHÉR, (player_x, player_y, 50, 50))
pygame.draw.rect (képernyő, FEHÉR, (enemy_x, enemy_y, 50, 50))
pygame.display.flip()
clock.tick(60)

pygame.quit()

Alább látható a kimenet:

Hozzon létre párbeszédpanelt

A párbeszédpanel megvalósításához meg kell jelenítenie, amikor a játékos megérinti az ellenséget. Add hozzá a párbeszédablak változó, amely szabályozza, hogy a párbeszédpanel megjelenjen-e vagy sem.

A játékkörön belül ellenőrizze, hogy nincs-e ütközés a játékos és az ellenség között, és ha ütközés történik, állítsa be párbeszédablak nak nek Igaz. Azon a feltételen belül, ahol párbeszédablak van Igaz, rajzoljon egy szürke téglalapot a képernyőre a segítségével pygame.draw.rect() hogy képviselje a párbeszédpanelt.

Hozzon létre egy új nevű fájlt párbeszéd.py és adja hozzá a kódot az alábbi frissítésekkel:

# A párbeszédpanel tulajdonságai
dialog_box_width = 400
dialog_box_height = 200
dialog_box_x = (screen_width - dialog_box_width) // 2
dialog_box_y = (screen_height - dialog_box_height) // 2
dialog_box = Hamis
# ...
míg futás:
számára esemény ban ben pygame.event.get():
ha event.type == KILÉPÉS:
futás = Hamis
keys = pygame.key.get_pressed()
# Játékos mozgás
ha gombok[K_LEFT] és játékos_x > 0:
player_x -= player_speed
ha gombok[K_RIGHT] és player_x < screen_width - player_speed:
player_x += player_speed
# Frissítse az ellenség pozícióját
ellenség_y += ellenséges_sebesség
ha enemy_y > screen_height:
ellenség_y = -50
# Ellenőrizze az ütközést
ha pygame. Rect (player_x, player_y, 50, 50).colliderect (pygame. Rect (ellenség_x, ellenség_y, 50, 50)):
dialog_box = Igaz
screen.fill (FEKETE)
ha dialog_box:
pygame.draw.rect (képernyő, SZÜRKE, (dialogue_box_x,
dialog_box_y,
dialog_box_width,
dialog_box_height))

# Adjon hozzá párbeszédablak szövegét és gombjait
más:
pygame.draw.rect (képernyő, FEHÉR, (player_x, player_y, 50, 50))
pygame.draw.rect (képernyő, FEHÉR, (enemy_x, enemy_y, 50, 50))
pygame.display.flip()
clock.tick(60)
pygame.quit()

Alább látható a kimenet:

Most, hogy a párbeszédpanel funkcionálisabbá és interaktívabbá váljon, hozzáadhat gombokat és szöveget.

Gombok hozzáadása Python GUI használatával

Ha gombokat szeretne hozzáadni a párbeszédpanelhez, használhat Python grafikus felhasználói felület-könyvtárat, például Pygame GUI-t vagy PySimpleGUI-t.

Telepítse és importálja a pygame_gui modult, majd hozzon létre egy Pygame GUI-kezelőt a segítségével pygame_gui. UIMager. Ezután hozzon létre egy gombot a UIButton osztályt a Python GUI könyvtára biztosítja.

A játékhurok belsejében adja hozzá manager.update (pygame.time.get_ticks() / 1000.0) a GUI-kezelő frissítéséhez, és manager.draw_ui (képernyő) a grafikus felület elemeinek a képernyőre rajzolásához.

Hozzon létre egy új nevű fájlt gombok.py és adja hozzá a kódot az alábbi frissítésekkel:


import pygame_gui

# Pygame GUI menedzser
manager = pygame_gui. UIMager((képernyő_szélessége, képernyő_magassága))

# Hozzon létre egy gombot
gomb_szélessége = 100
gomb_magassága = 30
button_x = dialog_box_x + (dialogue_box_width - button_width) // 2
button_y = dialog_box_y + (dialogue_box_height - button_height) // 2
gomb = pygame_gui.elements. UIButton (relative_rect=pygame. Rect (button_x, button_y, button_width, button_height),
szöveg='Kattints ide',
menedzser=menedzser)

futás = Igaz
óra = pygame.time. Óra()

míg futás:
számára esemény ban ben pygame.event.get():
ha event.type == pygame. KILÉPÉS:
futás = Hamis

manager.process_events (esemény)

keys = pygame.key.get_pressed()

# Ellenőrizze az ütközést
ha pygame. Rect (player_x, player_y, 50, 50).colliderect (pygame. Rect (ellenség_x, ellenség_y, 50, 50)):
dialog_box = Igaz

screen.fill (FEKETE)

ha dialog_box:
pygame.draw.rect (képernyő, SZÜRKE, (dialogue_box_x,
dialog_box_y,
dialog_box_width,
dialog_box_height))
manager.update (pygame.time.get_ticks() / 1000.0)
manager.draw_ui (képernyő)
más:
pygame.draw.rect (képernyő, FEHÉR, (player_x, player_y, 50, 50))
pygame.draw.rect (képernyő, FEHÉR, (enemy_x, enemy_y, 50, 50))

pygame.display.flip()
clock.tick(60)

pygame.quit()

Alább látható a kimenet:

Ezekkel a változtatásokkal a gombnak láthatónak kell lennie a párbeszédpanelen belül, amikor megjelenik.

Szöveg hozzáadása Python GUI használatával

Egyéni szöveg megjelenítéséhez a párbeszédpanelben használhatja a Python grafikus felhasználói felület könyvtára által biztosított szövegfunkciókat.

Határozza meg a betűtípus tulajdonságait a segítségével pygame.font. Betűtípus(). Hozzon létre egy szöveg változót a kívánt tartalommal, majd a megadott betűtípus és szín használatával jelenítse meg.

Hozzon létre egy új nevű fájlt text.py és adja hozzá a kódot az alábbi frissítésekkel:


# Inicializálja a Pygame GUI-kezelőt
manager = pygame_gui. UIMager((képernyő_szélessége, képernyő_magassága))

# Adja meg a betűtípus tulajdonságait
font = pygame.font. Betűtípus(Egyik sem, 24)
text_color = FEKETE

# ...

míg futás:
# ...

ha dialog_box:
pygame.draw.rect (képernyő, SZÜRKE, (dialogue_box_x,
dialog_box_y,
dialog_box_width,
dialog_box_height))

# Szöveg hozzáadása a párbeszédpanelhez
szöveg = "Sziasztok, üdv a játékban!"
rendered_text = font.render (szöveg, Igaz, szöveg szín)
text_rect = renderelt_text.get_rect (center=(dialogue_box_x + dialog_box_width // 2,
dialog_box_y + dialog_box_height // 2))

screen.blit (renderelt_text, text_rekt)

Alább látható a kimenet:

Kiegészítő funkciókkal együtt

A gombokon és a szövegen kívül számos más funkció is megfontolható, hogy hozzáadja a Pygame párbeszédrendszerét. Íme még néhány példa:

Karakter érzelmek

Mutasson érzelmeket vagy arckifejezéseket a karakterek számára párbeszéd közben, hogy közvetítse hangulatukat vagy reakcióikat. Ezt animált sprite-ok vagy képlefedések használatával érheti el, amelyek a beszélgetés kontextusától függően változnak.

Feltételes párbeszédek

Használjon feltételes utasításokat, hogy bizonyos kritériumok, például a játékos előrehaladása, korábbi döntései vagy játékon belüli események alapján specifikus párbeszédeket indítson el. Ez mélységet és személyre szabott interakciót ad a játékos cselekedetei alapján.

Hangfelvételek

Növelje a párbeszédrendszer elmélyülését azáltal, hogy beépíti a karakteres párbeszédekbe a hangjátékot. Hangklipek lejátszása a Pygame-ben amelyek megegyeznek a párbeszédpanelben megjelenő szöveggel, hogy a karakterek külön hangot adjanak.

Ezen további funkciók beépítésével dinamikusabb és vonzóbb párbeszédrendszert hozhat létre, amely fokozza a játékos elmélyülését, és egyedülálló játékélményt biztosít.

Bevált gyakorlatok a párbeszédrendszer hozzáadásához

A Pygame párbeszédrendszerének implementálásakor fontos bizonyos bevált gyakorlatok követése a hatékonyság, a karbantarthatóság és a zökkenőmentes játékos élmény biztosítása érdekében. Íme néhány további bevált gyakorlat, amelyet figyelembe kell venni:

Használjon adatvezérelt tervezést

Tárolja a párbeszédes tartalmat, beleértve a szöveget, a beszélőinformációkat és a párbeszédbeállításokat, külső adatfájlokban (pl. JSON, XML). Ez lehetővé teszi a párbeszéd tartalmának egyszerű módosítását, lokalizálását és kezelését kódmódosítás nélkül.

Valósítson meg egy párbeszédkezelőt

Hozzon létre egy dedikált párbeszédkezelő osztályt vagy modult, amely kezeli a párbeszédes interakciók kezelésének logikáját. Ez segít a kód rendszerezésében, és könnyebb karbantartást és bővíthetőséget tesz lehetővé.

Játékteszt és egyensúlyozás

Rendszeresen tesztelje és egyensúlyozza ki a párbeszédrendszert, hogy a párbeszédek természetesen folyjanak, a választásoknak jelentős következményei legyenek, és az ütemezés igazodjon az általános játékélményhez. Gyűjtsön visszajelzéseket a játékosoktól, és ismételje meg a párbeszéd tartalmát és szerkezetét a játékosok elkötelezettségének javítása érdekében.

Lokalizációs támogatás

Tervezze meg a párbeszédrendszert kezdettől fogva a lokalizációt szem előtt tartva. Különítse el a szöveges karakterláncokat a kódból, és használjon nyelvi fájlokat vagy lokalizációs könyvtárakat több nyelv támogatásához. Ez lehetővé teszi a párbeszéd tartalmának könnyebb fordítását és lokalizálását.

Ezen bevált gyakorlatok követésével biztosíthatja, hogy párbeszédrendszere jól megtervezett, hatékony és rugalmas legyen, így könnyebb karbantartást és frissítéseket tesz lehetővé, ahogy a játék fejlődik.

Tedd vonzóbbá a játékokat a párbeszédrendszerrel

Dialógusrendszer hozzáadása a játékhoz még vonzóbbá teheti azáltal, hogy lehetővé teszi a játékosok számára, hogy interakcióba lépjenek nem játékos karakterekkel (NPC), feltárják a történetszálakat, döntéseket hozzanak, és értékes információkhoz juthassanak.

Ne felejtse el megfontoltan megtervezni a párbeszéd szerkezetét, használjon moduláris megközelítést, és fontolja meg a gyűjthető tárgyak és pályák integrálását, hogy tovább gazdagítsa a játékos élményét.