Zajistěte, aby váš herní zážitek byl pohlcující implementací systému dialogů.
Implementace dialogového systému v Pygame může výrazně zlepšit interaktivní zážitek ze hry. Dialogový systém umožňuje hře prezentovat konverzace, zprávy a volby hráči, čímž vytváří pohlcující a poutavější hru.
Knihovna Pygame poskytuje potřebné nástroje pro vytvoření grafického uživatelského rozhraní (GUI) a zpracování uživatelského vstupu, což z ní činí ideální volbu pro implementaci dialogového systému.
Vytvořte jednoduchou hru
Než začnete, ujistěte se, že máte pip nainstalovaný ve vašem systému. Tento příkaz použijte k instalaci pygame knihovna:
pip nainstalovat pygame
Poté začněte vytvořením jednoduché hry, kde se hráč může pohybovat doleva a doprava a přitom se vyhýbat nepříteli.
Kód použitý v tomto článku je k dispozici v tomto úložiště GitHub a můžete jej používat zdarma pod licencí MIT.
Fragment kódu níže nastaví okno hry, inicializuje vlastnosti hráče a nepřítele a spustí herní smyčku.
# Importujte potřebné knihovny
import pygame
z pygame.místní import *pygame.init()
# Nastavte herní okno
screen_width, screen_height = 800, 600
obrazovka = pygame.display.set_mode((šířka_obrazovky, výška_obrazovky))
pygame.display.set_caption("Moje hra")# Definujte barvy
ČERNÁ = (0, 0, 0)
BÍLÁ = (255, 255, 255)
ŠEDÁ = (128, 128, 128)# Vlastnosti přehrávače
hráč_x = 400
player_y = 500
player_speed = 5# Vlastnosti nepřátel
nepřítel_x = 400
nepřítel_y = 100
rychlost nepřítele = 3běh = Skutečný
hodiny = pygame.time. Hodiny()zatímco běh:
pro událost v pygame.event.get():
-li event.type == UKONČIT:
běh = Nepravdivékeys = pygame.key.get_pressed()
# Pohyb hráče
-li klíče[K_LEFT] a player_x > 0:
player_x -= player_speed
-li klíče[K_RIGHT] a player_x < screen_width - player_speed:
player_x += player_speed# Aktualizujte nepřátelskou pozici
nepřítel_y += rychlost_ nepřítele
-li nepřítel_y > výška_obrazovky:
nepřítel_y = -50# Zkontrolujte kolizi
-li pygame. Rect (player_x, player_y, 50, 50).kolidující (pygame. Rect (nepřítel_x, nepřítel_y, 50, 50)):
# Zde implementujte dialogové okno
složitscreen.fill (ČERNÁ)
pygame.draw.rect (obrazovka, BÍLÁ, (hráč_x, hráč_y, 50, 50))
pygame.draw.rect (obrazovka, BÍLÁ, (nepřítel_x, nepřítel_y, 50, 50))
pygame.display.flip()
hodiny.tikat(60)
pygame.quit()
Níže je výstup:
Vytvořit dialogové okno
Chcete-li implementovat dialogové okno, musíte jej zobrazit vždy, když se hráč dotkne nepřítele. Přidat dialog_box proměnná, která určuje, zda se má dialogové okno zobrazit či nikoli.
Uvnitř herní smyčky, zkontrolujte, zda nedošlo ke kolizi mezi hráčem a nepřítelem, a pokud dojde ke kolizi, nastavte dialog_box na Skutečný. V rámci podmínky, kde dialog_box je Skutečný, nakreslete na obrazovku šedý obdélník pomocí pygame.draw.rect() reprezentovat dialogové okno.
Vytvořte nový soubor s názvem dialog.py a přidejte kód s níže uvedenými aktualizacemi:
# Vlastnosti dialogového okna
dialog_box_width = 400
výška_dialogového_boxu = 200
dialog_box_x = (šířka_obrazovky - šířka_dialogového_boxu) // 2
dialog_box_y = (výška_obrazovky - výška_dialogového_boxu) // 2
dialog_box = Nepravdivé
# ...
zatímco běh:
pro událost v pygame.event.get():
-li event.type == UKONČIT:
běh = Nepravdivé
keys = pygame.key.get_pressed()
# Pohyb hráče
-li klíče[K_LEFT] a player_x > 0:
player_x -= player_speed
-li klíče[K_RIGHT] a player_x < screen_width - player_speed:
player_x += player_speed
# Aktualizujte nepřátelskou pozici
nepřítel_y += rychlost_ nepřítele
-li nepřítel_y > výška_obrazovky:
nepřítel_y = -50
# Zkontrolujte kolizi
-li pygame. Rect (player_x, player_y, 50, 50).kolidující (pygame. Rect (nepřítel_x, nepřítel_y, 50, 50)):
dialog_box = Skutečný
screen.fill (ČERNÁ)
-li dialog_box:
pygame.draw.rect (obrazovka, ŠEDÁ, (dialogue_box_x,
dialog_box_y,
dialogová_šířka_boxu,
výška_dialogového_boxu))
# Zde přidejte text dialogu a tlačítka
jiný:
pygame.draw.rect (obrazovka, BÍLÁ, (hráč_x, hráč_y, 50, 50))
pygame.draw.rect (obrazovka, BÍLÁ, (nepřítel_x, nepřítel_y, 50, 50))
pygame.display.flip()
hodiny.tikat(60)
pygame.quit()
Níže je výstup:
Nyní, aby bylo dialogové okno funkčnější a interaktivnější, můžete přistoupit k přidávání tlačítek a textu.
Přidat tlačítka pomocí Python GUI
Chcete-li přidat tlačítka do dialogového okna, můžete použít knihovnu Python GUI, jako je Pygame GUI nebo PySimpleGUI.
Nainstalujte a importujte pygame_gui modulu a poté vytvořte správce GUI Pygame pomocí pygame_gui. UIManager. Poté vytvořte tlačítko pomocí UIButton třídy poskytované knihovnou GUI Pythonu.
Uvnitř herní smyčky přidejte manager.update (pygame.time.get_ticks() / 1000.0) pro aktualizaci správce GUI a manager.draw_ui (obrazovka) pro kreslení prvků GUI na obrazovku.
Vytvořte nový soubor s názvem tlačítka.py a přidejte kód s níže uvedenými aktualizacemi:
import pygame_gui# Pygame GUI manažer
manažer = pygame_gui. UIManager((screen_width, screen_height))# Vytvořte tlačítko
button_width = 100
button_height = 30
button_x = dialog_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élník (button_x, button_y, button_width, button_height),
text='Klikni na mě',
manažer = manažer)běh = Skutečný
hodiny = pygame.time. Hodiny()zatímco běh:
pro událost v pygame.event.get():
-li event.type == pygame. PŘESTAT:
běh = Nepravdivémanager.process_events (událost)
keys = pygame.key.get_pressed()
# Zkontrolujte kolizi
-li pygame. Rect (player_x, player_y, 50, 50).kolidující (pygame. Rect (nepřítel_x, nepřítel_y, 50, 50)):
dialog_box = Skutečnýscreen.fill (ČERNÁ)
-li dialog_box:
pygame.draw.rect (obrazovka, ŠEDÁ, (dialogue_box_x,
dialog_box_y,
dialogová_šířka_boxu,
výška_dialogového_boxu))
manager.update (pygame.time.get_ticks() / 1000.0)
manager.draw_ui (obrazovka)
jiný:
pygame.draw.rect (obrazovka, BÍLÁ, (hráč_x, hráč_y, 50, 50))
pygame.draw.rect (obrazovka, BÍLÁ, (nepřítel_x, nepřítel_y, 50, 50))pygame.display.flip()
hodiny.tikat(60)
pygame.quit()
Níže je výstup:
S těmito změnami by nyní tlačítko mělo být viditelné v dialogovém okně, když se objeví.
Přidejte text pomocí GUI Pythonu
Chcete-li zobrazit vlastní text v dialogovém okně, můžete použít textovou funkci poskytovanou knihovnou GUI Pythonu.
Definujte vlastnosti písma pomocí pygame.font. písmo(). Vytvořit text proměnnou s požadovaným obsahem a poté ji vykreslete pomocí zadaného písma a barvy.
Vytvořte nový soubor s názvem text.py a přidejte kód s níže uvedenými aktualizacemi:
# Inicializujte správce GUI Pygame
manažer = pygame_gui. UIManager((screen_width, screen_height))# Definujte vlastnosti písma
font = pygame.font. Písmo(Žádný, 24)
barva_textu = ČERNÁ# ...
zatímco běh:
# ...-li dialog_box:
pygame.draw.rect (obrazovka, ŠEDÁ, (dialogue_box_x,
dialog_box_y,
dialogová_šířka_boxu,
výška_dialogového_boxu))# Přidejte text do dialogového okna
text = "Dobrý den, vítejte ve hře!"
rendered_text = font.render (text, Skutečný, barva_textu)
text_rect = rendered_text.get_rect (center=(dialogue_box_x + dialog_box_width // 2,
dialog_box_y + výška_dialogového_boxu // 2))
screen.blit (rendered_text, text_rect)
Níže je výstup:
Včetně dalších funkcí
Kromě tlačítek a textu existuje několik dalších funkcí, které můžete přidat do svého dialogového systému v Pygame. Zde je několik dalších příkladů:
Emoce postav
Během dialogu zobrazujte postavám emoce nebo výrazy obličeje, abyste vyjádřili jejich náladu nebo reakce. Toho lze dosáhnout použitím animovaných skřítků nebo překryvných obrázků, které se mění v závislosti na kontextu konverzace.
Podmíněné dialogy
Použijte podmíněné příkazy ke spuštění konkrétních dialogů na základě určitých kritérií, jako je postup hráče, předchozí volby nebo události ve hře. To přidává hloubku a personalizované interakce založené na hráčových akcích.
Hlasové komentáře
Vylepšete ponoření do systému dialogů začleněním hlasového hraní do dialogů postav. Přehrávejte zvukové klipy v Pygame které se shodují s textem zobrazeným v dialogovém okně a dávají postavám odlišný hlas.
Začleněním těchto dalších funkcí můžete vytvořit dynamičtější a poutavější systém dialogů, který posílí ponoření hráče a poskytne jedinečný herní zážitek.
Nejlepší postupy pro přidání systému dialogu
Při implementaci dialogového systému v Pygame je důležité dodržovat určité osvědčené postupy, aby byla zajištěna efektivita, udržovatelnost a hladký hráčský zážitek. Zde je několik dalších doporučených postupů, které je třeba zvážit:
Použijte Data-Driven Design
Ukládejte obsah dialogů, včetně textu, informací o mluvčích a možností dialogu, do externích datových souborů (např. JSON, XML). To umožňuje snadnou modifikaci, lokalizaci a správu obsahu dialogu bez nutnosti změn kódu.
Implementujte Dialogue Manager
Vytvořte vyhrazenou třídu nebo modul správce dialogů, který zpracovává logiku pro správu dialogových interakcí. To pomáhá udržovat kód organizovaný a umožňuje snadnější údržbu a rozšiřitelnost.
Playtesting a balancování
Pravidelně testujte a vyvažujte systém dialogů, abyste zajistili, že dialogy budou přirozeně plynout, volby budou mít smysluplné důsledky a tempo bude v souladu s celkovým herním zážitkem. Sbírejte zpětnou vazbu od hráčů a opakujte obsah a strukturu dialogu, abyste zlepšili zapojení hráčů.
Podpora lokalizace
Navrhujte systém dialogů s ohledem na lokalizaci od začátku. Oddělte textové řetězce od kódu a použijte jazykové soubory nebo lokalizační knihovny pro podporu více jazyků. To umožňuje snadnější překlad a lokalizaci obsahu dialogu.
Dodržováním těchto osvědčených postupů můžete zajistit, že váš dialogový systém bude dobře navržený, efektivní a flexibilní, což umožní snadnější údržbu a aktualizace, jak se vaše hra vyvíjí.
Udělejte hry zajímavějšími díky systému dialogu
Přidáním systému dialogů do vaší hry může být ještě poutavější, protože umožňuje hráčům komunikovat s nehráčskými postavami (NPC), odhalovat příběhové linie, rozhodovat se a získávat cenné informace.
Nezapomeňte navrhnout strukturu dialogů promyšleně, použít modulární přístup a zvážit integraci sběratelských předmětů a úrovní, abyste dále obohatili hráčský zážitek.