Urobte svoj herný zážitok pohlcujúcim implementáciou dialógového systému.

Implementácia dialógového systému v Pygame môže výrazne zlepšiť interaktívny zážitok z hry. Dialógový systém umožňuje hre prezentovať konverzácie, správy a možnosti hráčovi, čím vytvára pohlcujúcejšie a pútavejšie hranie.

Knižnica Pygame poskytuje potrebné nástroje na vytvorenie grafického používateľského rozhrania (GUI) a spracovanie používateľských vstupov, čo z nej robí ideálnu voľbu pre implementáciu dialógového systému.

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

Potom začnite vytvorení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.

Útržok kódu nižšie nastaví herné okno, inicializuje vlastnosti hráča a nepriateľa a spustí hernú slučku.

instagram viewer
# Importujte potrebné knižnice
importovať pygame
od pygame.miestni obyvatelia importovať *

pygame.init()

# Nastavte herné okno
screen_width, screen_height = 800, 600
obrazovka = pygame.display.set_mode((šírka_obrazovky, výška_obrazovky))
pygame.display.set_caption("Moja hra")

# Definujte farby
ČIERNA = (0, 0, 0)
BIELA ​​= (255, 255, 255)
ŠEDÁ = (128, 128, 128)

# Vlastnosti prehrávača
hráč_x = 400
hráč_y = 500
player_speed = 5

# Vlastnosti nepriateľa
nepriateľ_x = 400
nepriateľ_y = 100
rýchlosť nepriateľa = 3

beh = Pravda
hodiny = pygame.time. hodiny()

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

keys = pygame.key.get_pressed()

# Pohyb hráča
ak klávesy[K_LEFT] a player_x > 0:
player_x -= player_speed
ak kľúče[K_RIGHT] a player_x < screen_width - player_speed:
player_x += player_speed

# Aktualizujte pozíciu nepriateľa
nepriateľ_y += rýchlosť_priateľa
ak nepriateľ_y > výška_obrazovky:
nepriateľ_y = -50

# Skontrolujte kolíziu
ak pygame. Rect (player_x, player_y, 50, 50).kolidovať (pygame. Rect (nepriateľ_x, nepriateľ_y, 50, 50)):
# Tu implementujte dialógové okno
prejsť

screen.fill (ČIERNA)
pygame.draw.rect (obrazovka, BIELA, (hráč_x, hráč_y, 50, 50))
pygame.draw.rect (obrazovka, BIELA, (nepriateľ_x, nepriateľ_y, 50, 50))
pygame.display.flip()
clock.tick(60)

pygame.quit()

Nižšie je výstup:

Vytvoriť dialógové okno

Ak chcete implementovať dialógové okno, musíte ho zobraziť vždy, keď sa hráč dotkne nepriateľa. Pridajte dialógové okno premenná, ktorá určuje, či sa má dialógové okno zobraziť alebo nie.

Vo vnútri hernej slučky, skontrolujte, či nedošlo ku kolízii medzi hráčom a nepriateľom, a ak dôjde ku kolízii, nastavte dialógové okno do Pravda. V rámci podmienky, kde dialógové okno je Pravda, nakreslite sivý obdĺžnik na obrazovku pomocou pygame.draw.rect() reprezentovať dialógové okno.

Vytvorte nový súbor s názvom dialóg.py a pridajte kód s nižšie uvedenými aktualizáciami:

# Vlastnosti dialógového okna
šírka_dialogového_boxu = 400
výška_dialógového_boxu = 200
dialog_box_x = (šírka_obrazovky - šírka_dialogového_boxu) // 2
dialog_box_y = (výška_obrazovky - výška_dialógového_boxu) // 2
dialógové okno = Nepravdivé
# ...
zatiaľ čo beh:
pre udalosť v pygame.event.get():
ak event.type == UKONČIŤ:
beh = Nepravdivé
keys = pygame.key.get_pressed()
# Pohyb hráča
ak klávesy[K_LEFT] a player_x > 0:
player_x -= player_speed
ak kľúče[K_RIGHT] a player_x < screen_width - player_speed:
player_x += player_speed
# Aktualizujte pozíciu nepriateľa
nepriateľ_y += rýchlosť_priateľa
ak nepriateľ_y > výška_obrazovky:
nepriateľ_y = -50
# Skontrolujte kolíziu
ak pygame. Rect (player_x, player_y, 50, 50).kolidovať (pygame. Rect (nepriateľ_x, nepriateľ_y, 50, 50)):
dialógové okno = Pravda
screen.fill (ČIERNA)
ak dialógové okno:
pygame.draw.rect (obrazovka, ŠEDÁ, (dialogue_box_x,
dialog_box_y,
šírka_dialogového_boxu,
výška_dialógového_boxu))

# Tu pridajte text dialógu a tlačidlá
inak:
pygame.draw.rect (obrazovka, BIELA, (hráč_x, hráč_y, 50, 50))
pygame.draw.rect (obrazovka, BIELA, (nepriateľ_x, nepriateľ_y, 50, 50))
pygame.display.flip()
clock.tick(60)
pygame.quit()

Nižšie je výstup:

Teraz, aby bolo dialógové okno funkčnejšie a interaktívnejšie, môžete pristúpiť k pridávaniu tlačidiel a textu.

Pridať tlačidlá pomocou Python GUI

Na pridanie tlačidiel do dialógového okna môžete použiť knižnicu GUI Python, ako je Pygame GUI alebo PySimpleGUI.

Nainštalujte a importujte pygame_gui modul, potom vytvorte pomocou Pygame GUI manažéra pygame_gui. UIManager. Potom vytvorte tlačidlo pomocou UIButton triedy poskytovanej knižnicou GUI Pythonu.

Vo vnútri hernej slučky pridajte manager.update (pygame.time.get_ticks() / 1000,0) na aktualizáciu správcu GUI a manager.draw_ui (obrazovka) na kreslenie prvkov GUI na obrazovku.

Vytvorte nový súbor s názvom buttony.py a pridajte kód s nižšie uvedenými aktualizáciami:


importovať pygame_gui

# Pygame GUI manažér
manažér = pygame_gui. UIManager((šírka_obrazovky, výška_obrazovky))

# Vytvorte tlačidlo
button_width = 100
button_height = 30
button_x =dial_box_x + (dialogue_box_width - button_width) // 2
button_y = dialog_box_y + (dialogue_box_height - button_height) // 2
button = pygame_gui.elements. UIButton (relative_rect=pygame. Obdĺžnik (button_x, button_y, button_width, button_height),
text='Klikni na mňa',
manažér = manažér)

beh = Pravda
hodiny = pygame.time. hodiny()

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

manager.process_events (udalosť)

keys = pygame.key.get_pressed()

# Skontrolujte kolíziu
ak pygame. Rect (player_x, player_y, 50, 50).kolidovať (pygame. Rect (nepriateľ_x, nepriateľ_y, 50, 50)):
dialógové okno = Pravda

screen.fill (ČIERNA)

ak dialógové okno:
pygame.draw.rect (obrazovka, ŠEDÁ, (dialogue_box_x,
dialog_box_y,
šírka_dialogového_boxu,
výška_dialógového_boxu))
manager.update (pygame.time.get_ticks() / 1000.0)
manager.draw_ui (obrazovka)
inak:
pygame.draw.rect (obrazovka, BIELA, (hráč_x, hráč_y, 50, 50))
pygame.draw.rect (obrazovka, BIELA, (nepriateľ_x, nepriateľ_y, 50, 50))

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

pygame.quit()

Nižšie je výstup:

Po týchto zmenách by teraz tlačidlo malo byť viditeľné v dialógovom okne, keď sa objaví.

Pridajte text pomocou Python GUI

Ak chcete zobraziť vlastný text v dialógovom okne, môžete použiť textovú funkčnosť, ktorú poskytuje knižnica GUI Python.

Definujte vlastnosti písma pomocou pygame.font. písmo(). Vytvor text premennú s požadovaným obsahom a potom ju vykreslite pomocou špecifikovaného písma a farby.

Vytvorte nový súbor s názvom text.py a pridajte kód s nižšie uvedenými aktualizáciami:


# Inicializujte Pygame GUI manažéra
manažér = pygame_gui. UIManager((šírka_obrazovky, výška_obrazovky))

# Definujte vlastnosti písma
font = pygame.font. Font(žiadne, 24)
farba_textu = ČIERNA

# ...

zatiaľ čo beh:
# ...

ak dialógové okno:
pygame.draw.rect (obrazovka, ŠEDÁ, (dialogue_box_x,
dialog_box_y,
šírka_dialogového_boxu,
výška_dialógového_boxu))

# Pridajte text do dialógového okna
text = "Ahoj, vitajte v hre!"
rendered_text = font.render (text, Pravda, farba_textu)
text_rect = rendered_text.get_rect (center=(dialogue_box_x +dial_box_width // 2,
dialogový_box_y + výška_dialogového_boxu // 2))

screen.blit (rendered_text, text_rect)

Nižšie je výstup:

Vrátane ďalších funkcií

Okrem tlačidiel a textu existuje niekoľko ďalších funkcií, ktoré môžete pridať do svojho dialógového systému v Pygame. Tu je niekoľko ďalších príkladov:

Emócie postavy

Zobrazte emócie alebo výrazy tváre postavám počas dialógu, aby ste vyjadrili ich náladu alebo reakcie. Dá sa to dosiahnuť použitím animovaných spritov alebo prekryvných obrázkov, ktoré sa menia v závislosti od kontextu konverzácie.

Podmienené dialógy

Použite podmienené príkazy na spustenie konkrétnych dialógov na základe určitých kritérií, ako je postup hráča, predchádzajúce voľby alebo udalosti v hre. To pridáva hĺbku a personalizované interakcie založené na hráčových akciách.

Hlasové prejavy

Vylepšite ponorenie do dialógového systému začlenením hlasového prejavu do dialógov postáv. Prehrávajte zvukové klipy v Pygame ktoré sa zhodujú s textom zobrazeným v dialógovom okne, aby postavy získali zreteľný hlas.

Začlenením týchto dodatočných funkcií môžete vytvoriť dynamickejší a pútavejší systém dialógov, ktorý zlepší ponorenie hráča a poskytne jedinečný herný zážitok.

Osvedčené postupy na pridanie systému dialógu

Pri implementácii dialógového systému v Pygame je dôležité dodržiavať určité osvedčené postupy, aby ste zaistili efektivitu, udržiavateľnosť a bezproblémový zážitok z hry. Tu je niekoľko ďalších osvedčených postupov, ktoré je potrebné zvážiť:

Použite dizajn založený na údajoch

Uložte obsah dialógov vrátane textu, informácií o reproduktoroch a možností dialógu do externých dátových súborov (napr. JSON, XML). To umožňuje jednoduchú modifikáciu, lokalizáciu a správu obsahu dialógu bez potreby zmien kódu.

Implementujte správcu dialógov

Vytvorte vyhradenú triedu alebo modul správcu dialógov, ktorý spracováva logiku riadenia dialógových interakcií. To pomáha udržiavať kód organizovaný a umožňuje jednoduchšiu údržbu a rozšíriteľnosť.

Playtesting a Balancing

Pravidelne testujte a vyvažujte systém dialógov, aby ste zaistili, že dialógy budú prirodzene plynúť, že voľby budú mať zmysluplné dôsledky a že tempo bude v súlade s celkovým zážitkom z hry. Zbierajte spätnú väzbu od hráčov a opakujte obsah a štruktúru dialógu, aby ste zlepšili zapojenie hráčov.

Podpora lokalizácie

Navrhujte systém dialógov s ohľadom na lokalizáciu od začiatku. Oddeľte textové reťazce od kódu a použite jazykové súbory alebo lokalizačné knižnice na podporu viacerých jazykov. To umožňuje jednoduchší preklad a lokalizáciu obsahu dialógu.

Dodržiavaním týchto osvedčených postupov môžete zabezpečiť, aby bol váš dialógový systém dobre navrhnutý, efektívny a flexibilný, čo umožňuje jednoduchšiu údržbu a aktualizácie pri vývoji vašej hry.

Urobte hry pútavejšími vďaka systému dialógu

Pridaním dialógového systému do vašej hry môže byť hra pútavejšia, pretože umožňuje hráčom komunikovať s nehráčskymi postavami (NPC), odhaľovať dejové línie, robiť rozhodnutia a získavať cenné informácie.

Nezabudnite navrhnúť štruktúru dialógov premyslene, použite modulárny prístup a zvážte integráciu zberateľských predmetov a úrovní, aby ste ešte viac obohatili hráčsky zážitok.