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

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 = 3

bě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žit

screen.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.