Spraw, aby Twoja rozgrywka była bardziej wciągająca, wdrażając system dialogów.
Implementacja systemu dialogowego w Pygame może znacznie poprawić interaktywne wrażenia z gry. System dialogów pozwala grze przedstawiać graczowi rozmowy, wiadomości i wybory, tworząc bardziej wciągającą i wciągającą rozgrywkę.
Biblioteka Pygame zapewnia niezbędne narzędzia do tworzenia graficznego interfejsu użytkownika (GUI) i obsługi danych wprowadzanych przez użytkownika, co czyni ją idealnym wyborem do implementacji systemu dialogowego.
Stwórz prostą grę
Zanim zaczniesz, upewnij się, że masz pip zainstalowany w twoim systemie. Użyj tego polecenia, aby zainstalować pygame biblioteka:
pip zainstaluj pygame
Następnie zacznij od stworzenia prostej gry, w której gracz może poruszać się w lewo i prawo, unikając wroga.
Kod użyty w tym artykule jest dostępny w this Repozytorium GitHub i jest darmowy do użytku na licencji MIT.
Poniższy fragment kodu konfiguruje okno gry, inicjuje właściwości gracza i wroga oraz uruchamia pętlę gry.
# Importuj niezbędne biblioteki
import pygame
z pygame.locals import *pygame.init()
# Skonfiguruj okno gry
szerokość_ekranu, wysokość_ekranu = 800, 600
ekran = pygame.display.set_mode((szerokość_ekranu, wysokość_ekranu))
pygame.display.set_caption("Moja gra")# Zdefiniuj kolory
CZARNY = (0, 0, 0)
BIAŁY = (255, 255, 255)
SZARY = (128, 128, 128)# Właściwości odtwarzacza
gracz_x = 400
gracz_y = 500
prędkość_gracza = 5# Właściwości wroga
wróg_x = 400
wróg_y = 100
prędkość_wroga = 3bieganie = PRAWDA
zegar = pygame.czas. Zegar()chwila działanie:
Do wydarzenie W pygame.event.get():
Jeśli event.type == WYJDŹ:
bieganie = FAŁSZklucze = pygame.key.get_pressed()
# Ruch gracza
Jeśli klucze[K_LEFT] I gracz_x > 0:
gracz_x -= prędkość_gracza
Jeśli klucze[K_RIGHT] I gracz_x < szerokość_ekranu - prędkość_gracza:
gracz_x += prędkość_gracza# Zaktualizuj pozycję wroga
wróg_y += prędkość_wroga
Jeśli wróg_y > wysokość_ekranu:
wróg_y = -50# Sprawdź kolizję
Jeśli pygame. Prostokąt (gracz_x, gracz_y, 50, 50).colliderect (pygame. Prostokąt (wróg_x, wróg_y, 50, 50)):
# Zaimplementuj tutaj okno dialogowe
przechodzićekran.wypełnienie (CZARNY)
pygame.draw.rect (ekran, BIAŁY, (gracz_x, gracz_y, 50, 50))
pygame.draw.rect (ekran, BIAŁY, (wróg_x, wróg_y, 50, 50))
pygame.display.flip()
zegar.tik(60)
pygame.quit()
Poniżej znajduje się wyjście:
Utwórz okno dialogowe
Aby zaimplementować okno dialogowe, musisz je wyświetlać za każdym razem, gdy gracz dotknie wroga. Dodaj dialog_box zmienna, która kontroluje, czy okno dialogowe powinno być wyświetlane, czy nie.
Wewnątrz pętli gry, sprawdź kolizję między graczem a wrogiem, a jeśli jest kolizja, ustaw dialog_box Do PRAWDA. W warunkach gdzie dialog_box Jest PRAWDA, narysuj szary prostokąt na ekranie za pomocą pygame.draw.rect() do reprezentowania okna dialogowego.
Utwórz nowy plik o nazwie dialog.py i dodaj kod z poniższymi aktualizacjami:
# Właściwości okna dialogowego
szerokość_okna dialogowego = 400
wysokość_okna dialogowego = 200
dialog_box_x = (szerokość_ekranu - szerokość_pola_dialogu) // 2
dialog_box_y = (ekran_wysokość - dialog_box_height) // 2
dialog_box = FAŁSZ
# ...
chwila działanie:
Do wydarzenie W pygame.event.get():
Jeśli event.type == WYJDŹ:
bieganie = FAŁSZ
klucze = pygame.key.get_pressed()
# Ruch gracza
Jeśli klucze[K_LEFT] I gracz_x > 0:
gracz_x -= prędkość_gracza
Jeśli klucze[K_RIGHT] I gracz_x < szerokość_ekranu - prędkość_gracza:
gracz_x += prędkość_gracza
# Zaktualizuj pozycję wroga
wróg_y += prędkość_wroga
Jeśli wróg_y > wysokość_ekranu:
wróg_y = -50
# Sprawdź kolizję
Jeśli pygame. Prostokąt (gracz_x, gracz_y, 50, 50).colliderect (pygame. Prostokąt (wróg_x, wróg_y, 50, 50)):
dialog_box = PRAWDA
ekran.wypełnienie (CZARNY)
Jeśli okno dialogowe:
pygame.draw.rect (ekran, SZARY, (dialogue_box_x,
dialog_box_y,
szerokość_okna dialogowego,
dialog_box_height))
# Dodaj tekst dialogu i przyciski tutaj
w przeciwnym razie:
pygame.draw.rect (ekran, BIAŁY, (gracz_x, gracz_y, 50, 50))
pygame.draw.rect (ekran, BIAŁY, (wróg_x, wróg_y, 50, 50))
pygame.display.flip()
zegar.tik(60)
pygame.quit()
Poniżej znajduje się wyjście:
Teraz, aby okno dialogowe było bardziej funkcjonalne i interaktywne, możesz przystąpić do dodawania przycisków i tekstu.
Dodaj przyciski za pomocą GUI Pythona
Aby dodać przyciski do okna dialogowego, możesz użyć biblioteki Python GUI, takiej jak Pygame GUI lub PySimpleGUI.
Zainstaluj i zaimportuj plik pygame_gui module, a następnie utwórz menedżera GUI Pygame za pomocą pygame_gui. Menedżer UIM. Następnie utwórz przycisk za pomocą Przycisk UI klasa udostępniana przez bibliotekę GUI Pythona.
Wewnątrz pętli gry dodaj manager.update (pygame.time.get_ticks() / 1000.0) zaktualizować menedżera GUI i manager.draw_ui (ekran) aby narysować elementy GUI na ekranie.
Utwórz nowy plik o nazwie przyciski.py i dodaj kod z poniższymi aktualizacjami:
import pygame_gui# Menedżer GUI Pygame
menedżer = pygame_gui. UIManager((szerokość_ekranu, wysokość_ekranu))# Utwórz przycisk
szerokość_przycisku = 100
wysokość_przycisku = 30
button_x = dialog_box_x + (szerokość_pola_dialogu - szerokość_przycisku) // 2
button_y = dialog_box_y + (dialog_box_height - button_height) // 2
button = pygame_gui.elements. UIButton (relative_rect=pygame. Prostokąt (przycisk_x, przycisk_y, szerokość_przycisku, wysokość_przycisku),
tekst='Kliknij',
kierownik = kierownik)bieganie = PRAWDA
zegar = pygame.czas. Zegar()chwila działanie:
Do wydarzenie W pygame.event.get():
Jeśli event.type == pygame. ZREZYGNOWAĆ:
bieganie = FAŁSZmanager.process_events (zdarzenie)
klucze = pygame.key.get_pressed()
# Sprawdź kolizję
Jeśli pygame. Prostokąt (gracz_x, gracz_y, 50, 50).colliderect (pygame. Prostokąt (wróg_x, wróg_y, 50, 50)):
dialog_box = PRAWDAekran.wypełnienie (CZARNY)
Jeśli okno dialogowe:
pygame.draw.rect (ekran, SZARY, (dialogue_box_x,
dialog_box_y,
szerokość_okna dialogowego,
dialog_box_height))
manager.update (pygame.time.get_ticks() / 1000.0)
manager.draw_ui (ekran)
w przeciwnym razie:
pygame.draw.rect (ekran, BIAŁY, (gracz_x, gracz_y, 50, 50))
pygame.draw.rect (ekran, BIAŁY, (wróg_x, wróg_y, 50, 50))pygame.display.flip()
zegar.tik(60)
pygame.quit()
Poniżej znajduje się wyjście:
Po tych zmianach przycisk powinien być teraz widoczny w oknie dialogowym, gdy się pojawi.
Dodaj tekst za pomocą GUI Pythona
Aby wyświetlić niestandardowy tekst w oknie dialogowym, możesz użyć funkcji tekstowej udostępnianej przez bibliotekę Python GUI.
Zdefiniuj właściwości czcionki za pomocą pygame.font. Czcionka(). Stwórz tekst zmienną o żądanej zawartości, a następnie wyrenderuj ją przy użyciu określonej czcionki i koloru.
Utwórz nowy plik o nazwie tekst.py i dodaj kod z poniższymi aktualizacjami:
# Zainicjuj menedżera GUI Pygame
menedżer = pygame_gui. UIManager((szerokość_ekranu, wysokość_ekranu))# Zdefiniuj właściwości czcionki
czcionka = pygame.font. Czcionka(Nic, 24)
kolor_tekstu = CZARNY# ...
chwila działanie:
# ...Jeśli okno dialogowe:
pygame.draw.rect (ekran, SZARY, (dialogue_box_x,
dialog_box_y,
szerokość_okna dialogowego,
dialog_box_height))# Dodaj tekst do okna dialogowego
tekst = "Cześć, witaj w grze!"
renderowany_tekst = font.render (tekst, PRAWDA, kolor tekstu)
text_rect = rendered_text.get_rect (center=(dialog_box_x + dialog_box_width // 2,
dialog_box_y + dialog_box_height // 2))
screen.blit (wyrenderowany_tekst, tekst_rekt)
Poniżej znajduje się wyjście:
W tym dodatkowe funkcje
Oprócz przycisków i tekstu istnieje kilka innych funkcji, które możesz rozważyć dodanie do swojego systemu dialogowego w Pygame. Oto kilka innych przykładów:
Emocje postaci
Wyświetlaj emocje lub mimikę postaci podczas dialogu, aby przekazać ich nastrój lub reakcje. Można to osiągnąć za pomocą animowanych duszków lub nakładek graficznych, które zmieniają się w zależności od kontekstu rozmowy.
Dialogi warunkowe
Używaj instrukcji warunkowych, aby uruchamiać określone dialogi w oparciu o określone kryteria, takie jak postępy gracza, poprzednie wybory lub wydarzenia w grze. To dodaje głębi i spersonalizowanych interakcji opartych na działaniach gracza.
Podkłady głosowe
Zwiększ immersję systemu dialogowego, włączając aktorstwo głosowe do dialogów postaci. Odtwarzaj klipy audio w Pygame pasujące do tekstu wyświetlanego w oknie dialogowym, aby nadać postaciom wyraźny głos.
Włączając te dodatkowe funkcje, możesz stworzyć bardziej dynamiczny i wciągający system dialogowy, który zwiększa zanurzenie gracza i zapewnia wyjątkowe wrażenia z gry.
Najlepsze praktyki dodawania systemu dialogu
Podczas wdrażania systemu dialogowego w Pygame ważne jest przestrzeganie pewnych najlepszych praktyk w celu zapewnienia wydajności, łatwości konserwacji i płynnego doświadczenia gracza. Oto kilka dodatkowych najlepszych praktyk do rozważenia:
Korzystaj z projektowania opartego na danych
Przechowuj treść dialogów, w tym tekst, informacje o mówcy i opcje dialogowe, w zewnętrznych plikach danych (np. JSON, XML). Pozwala to na łatwą modyfikację, lokalizację i zarządzanie treścią dialogów bez konieczności zmiany kodu.
Zaimplementuj menedżera dialogu
Utwórz dedykowaną klasę lub moduł menedżera dialogów, który obsługuje logikę zarządzania interakcjami dialogowymi. Pomaga to utrzymać porządek w kodzie i pozwala na łatwiejszą konserwację i rozszerzalność.
Testowanie i balansowanie
Regularnie testuj i balansuj system dialogów, aby upewnić się, że dialogi toczą się naturalnie, wybory mają znaczące konsekwencje, a tempo jest zgodne z ogólnymi wrażeniami z gry. Zbieraj opinie od graczy i modyfikuj treść i strukturę dialogów, aby zwiększyć zaangażowanie graczy.
Wsparcie lokalizacji
Od początku projektuj system dialogowy z myślą o lokalizacji. Oddziel ciągi tekstowe od kodu i użyj plików językowych lub bibliotek lokalizacyjnych do obsługi wielu języków. Pozwala to na łatwiejsze tłumaczenie i lokalizację treści dialogów.
Stosując się do tych najlepszych praktyk, możesz mieć pewność, że twój system dialogowy jest dobrze zaprojektowany, wydajny i elastyczny, co pozwala na łatwiejsze utrzymanie i aktualizacje w miarę rozwoju gry.
Spraw, aby gry były bardziej wciągające dzięki systemowi dialogów
Dodanie systemu dialogowego do gry może uczynić ją bardziej wciągającą, umożliwiając graczom interakcję z postaciami niezależnymi (NPC), odkrywanie wątków fabularnych, dokonywanie wyborów i zdobywanie cennych informacji.
Pamiętaj o przemyślanym zaprojektowaniu struktury dialogów, zastosowaniu podejścia modułowego i rozważeniu integracji elementów kolekcjonerskich i poziomów, aby jeszcze bardziej wzbogacić wrażenia gracza.