Naredite svojo izkušnjo igranja bolj poglobljeno z implementacijo sistema dialogov.

Implementacija sistema dialogov v Pygame lahko močno izboljša interaktivno izkušnjo igre. Dialoški sistem omogoča, da igra igralcu predstavi pogovore, sporočila in izbire, kar ustvari bolj poglobljeno in privlačno igranje.

Knjižnica Pygame ponuja potrebna orodja za ustvarjanje grafičnega uporabniškega vmesnika (GUI) in obdelavo uporabniškega vnosa, zaradi česar je idealna izbira za implementacijo sistema dialogov.

Ustvari preprosto igro

Preden začnete, se prepričajte, da imate pip nameščen v vašem sistemu. S tem ukazom namestite pygame knjižnica:

pip namestite pygame

Nato začnite z ustvarjanjem preproste igre, v kateri se lahko igralec premika levo in desno, medtem ko se izogiba sovražniku.

Koda, uporabljena v tem članku, je na voljo tukaj Repozitorij GitHub in je brezplačen za uporabo pod licenco MIT.

Spodnji delček kode nastavi okno igre, inicializira lastnosti igralca in sovražnika ter zažene zanko igre.

# Uvoz potrebnih knjižnic
instagram viewer

uvoz pygame
od pygame.locals uvoz *

pygame.init()

# Nastavite okno igre
širina_zaslona, ​​višina_zaslona = 800, 600
zaslon = pygame.display.set_mode((širina_zaslona, ​​višina_zaslona))
pygame.display.set_caption("Moja igra")

# Določite barve
ČRNA = (0, 0, 0)
BELA = (255, 255, 255)
SIVA = (128, 128, 128)

# Lastnosti igralca
igralec_x = 400
igralec_y = 500
hitrost_igralca = 5

# Lastnosti sovražnika
sovražnik_x = 400
sovražnik_y = 100
sovražnik_hitrost = 3

tek = Prav
ura = pygame.time. ura()

medtem teče:
za dogodek v pygame.event.get():
če event.type == IZHOD:
tek = False

tipke = pygame.key.get_pressed()

# Gibanje igralca
če tipke [K_LEFT] in igralec_x > 0:
igralec_x -= hitrost_igralca
če tipke[K_RIGHT] in player_x < screen_width - player_speed:
igralec_x += hitrost_igralca

# Posodobite sovražnikov položaj
sovražnik_y += sovražnikova hitrost
če enemy_y > screen_height:
sovražnik_y = -50

# Preverite trk
če pygame. Rect (player_x, player_y, 50, 50).colliderect (pygame. Rect (sovražnik_x, sovražnik_y, 50, 50)):
# Tukaj implementirajte pogovorno okno
prehod

screen.fill (ČRNA)
pygame.draw.rect (zaslon, BEL, (player_x, player_y, 50, 50))
pygame.draw.rect (zaslon, BEL, (sovražnik_x, sovražnik_y, 50, 50))
pygame.display.flip()
clock.tick(60)

pygame.quit()

Spodaj je rezultat:

Ustvari pogovorno okno

Če želite implementirati pogovorno okno, ga morate prikazati vsakič, ko se igralec dotakne sovražnika. Dodajte dialog_box spremenljivka, ki nadzoruje, ali naj bo pogovorno okno prikazano ali ne.

Znotraj igralne zanke, preveri trk med igralcem in sovražnikom, in če pride do trka, nastavite dialog_box do Prav. V okviru pogoja, kjer dialog_box je Prav, narišite siv pravokotnik na zaslon z uporabo pygame.draw.rect() za predstavitev pogovornega okna.

Ustvari novo datoteko z imenom dialog.py in dodajte kodo s spodnjimi posodobitvami:

# Lastnosti pogovornega okna
dialog_box_width = 400
dialog_box_height = 200
dialogue_box_x = (screen_width - dialogue_box_width) // 2
dialogue_box_y = (screen_height - dialogue_box_height) // 2
dialog_box = False
# ...
medtem teče:
za dogodek v pygame.event.get():
če event.type == IZHOD:
tek = False
tipke = pygame.key.get_pressed()
# Gibanje igralca
če tipke [K_LEFT] in igralec_x > 0:
igralec_x -= hitrost_igralca
če tipke[K_RIGHT] in player_x < screen_width - player_speed:
igralec_x += hitrost_igralca
# Posodobite sovražnikov položaj
sovražnik_y += sovražnikova hitrost
če enemy_y > screen_height:
sovražnik_y = -50
# Preverite trk
če pygame. Rect (player_x, player_y, 50, 50).colliderect (pygame. Rect (sovražnik_x, sovražnik_y, 50, 50)):
dialog_box = Prav
screen.fill (ČRNA)
če dialog_box:
pygame.draw.rect (zaslon, SIVA, (dialogue_box_x,
dialog_box_y,
dialog_box_width,
dialog_box_height))

# Tukaj dodajte besedilo dialoga in gumbe
drugače:
pygame.draw.rect (zaslon, BEL, (player_x, player_y, 50, 50))
pygame.draw.rect (zaslon, BEL, (sovražnik_x, sovražnik_y, 50, 50))
pygame.display.flip()
clock.tick(60)
pygame.quit()

Spodaj je rezultat:

Če želite narediti pogovorno okno bolj funkcionalno in interaktivno, lahko nadaljujete z dodajanjem gumbov in besedila.

Dodajte gumbe z uporabo Python GUI

Če želite dodati gumbe v pogovorno okno, lahko uporabite knjižnico GUI Python, kot je Pygame GUI ali PySimpleGUI.

Namestite in uvozite pygame_gui modul, nato ustvarite upravitelja GUI Pygame z uporabo pygame_gui. UIManager. Nato ustvarite gumb z uporabo UIButton razreda, ki ga ponuja knjižnica GUI Python.

Znotraj igralne zanke dodajte manager.update (pygame.time.get_ticks() / 1000.0) za posodobitev upravitelja GUI in manager.draw_ui (zaslon) za risanje elementov GUI na zaslonu.

Ustvari novo datoteko z imenom gumbi.py in dodajte kodo s spodnjimi posodobitvami:


uvoz pygame_gui

# Upravitelj GUI Pygame
manager = pygame_gui. UIManager((širina_zaslona, ​​višina_zaslona))

# Ustvarite gumb
širina_gumba = 100
višina_gumba = 30
gumb_x = dialog_box_x + (širina_pogovornega_polja - širina_gumba) // 2
button_y = dialog_box_y + (dialogue_box_height - button_height) // 2
gumb = pygame_gui.elements. UIButton (relative_rect=pygame. Rect (button_x, button_y, button_width, button_height),
besedilo='Klikni me',
manager=vodja)

tek = Prav
ura = pygame.time. ura()

medtem teče:
za dogodek v pygame.event.get():
če event.type == pygame. PRENEHATI:
tek = False

manager.process_events (dogodek)

tipke = pygame.key.get_pressed()

# Preverite trk
če pygame. Rect (player_x, player_y, 50, 50).colliderect (pygame. Rect (sovražnik_x, sovražnik_y, 50, 50)):
dialog_box = Prav

screen.fill (ČRNA)

če dialog_box:
pygame.draw.rect (zaslon, SIVA, (dialogue_box_x,
dialog_box_y,
dialog_box_width,
dialog_box_height))
manager.update (pygame.time.get_ticks() / 1000.0)
manager.draw_ui (zaslon)
drugače:
pygame.draw.rect (zaslon, BEL, (player_x, player_y, 50, 50))
pygame.draw.rect (zaslon, BEL, (sovražnik_x, sovražnik_y, 50, 50))

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

pygame.quit()

Spodaj je rezultat:

S temi spremembami bi moral biti gumb zdaj viden znotraj pogovornega okna, ko se prikaže.

Dodajte besedilo z uporabo Python GUI

Za prikaz besedila po meri v pogovornem oknu lahko uporabite funkcijo besedila, ki jo ponuja knjižnica GUI Python.

Določite lastnosti pisave z uporabo pygame.font. Pisava(). Ustvariti besedilo spremenljivko z želeno vsebino in jo nato upodobite s podano pisavo in barvo.

Ustvari novo datoteko z imenom text.py in dodajte kodo s spodnjimi posodobitvami:


# Inicializirajte upravitelja GUI Pygame
manager = pygame_gui. UIManager((širina_zaslona, ​​višina_zaslona))

# Določite lastnosti pisave
pisava = pygame.font. Pisava (Noben, 24)
barva_besedila = ČRNA

# ...

medtem teče:
# ...

če dialog_box:
pygame.draw.rect (zaslon, SIVA, (dialogue_box_x,
dialog_box_y,
dialog_box_width,
dialog_box_height))

# Dodajte besedilo v pogovorno okno
besedilo = "Pozdravljeni, dobrodošli v igri!"
rendered_text = font.render (besedilo, Prav, barva_besedila)
text_rect = rendered_text.get_rect (center=(dialogue_box_x + dialog_box_width // 2,
dialog_box_y + dialog_box_height // 2))

screen.blit (rendered_text, text_rect)

Spodaj je rezultat:

Vključno z dodatnimi funkcijami

Poleg gumbov in besedila obstaja več drugih funkcij, ki jih lahko dodate v sistem dialogov v Pygame. Tu je še nekaj primerov:

Znak Čustva

Prikažite čustva ali obrazne izraze likov med dialogom, da prenesete njihovo razpoloženje ali reakcije. To je mogoče doseči z uporabo animiranih spritov ali prekrivnih slik, ki se spreminjajo glede na kontekst pogovora.

Pogojni dialogi

Uporabite pogojne stavke za sprožitev določenih dialogov na podlagi določenih meril, kot so igralčev napredek, prejšnje izbire ali dogodki v igri. To doda globino in prilagojene interakcije glede na dejanja igralca.

Voiceovers

Izboljšajte poglobitev sistema dialogov z vključitvijo glasovne igre za dialoge likov. Predvajanje zvočnih posnetkov v Pygame ki se ujemajo z besedilom, prikazanim v pogovornem oknu, da znaki dobijo drugačen glas.

Z vključitvijo teh dodatnih funkcij lahko ustvarite bolj dinamičen in privlačen sistem dialogov, ki poveča igralčevo potopitev in zagotavlja edinstveno izkušnjo igranja.

Najboljše prakse za dodajanje sistema dialoga

Pri izvajanju sistema dialoga v Pygame je pomembno, da sledite nekaterim najboljšim praksam, da zagotovite učinkovitost, vzdržljivost in nemoteno izkušnjo igralca. Tukaj je nekaj dodatnih najboljših praks, ki jih je treba upoštevati:

Uporabite Data-Driven Design

Shranjujte vsebino dialoga, vključno z besedilom, informacijami o govorcu in možnostmi dialoga, v zunanjih podatkovnih datotekah (npr. JSON, XML). To omogoča preprosto spreminjanje, lokalizacijo in upravljanje vsebine dialoga, ne da bi bilo treba spremeniti kodo.

Izvedite upravitelja dialoga

Ustvarite namenski razred ali modul upravitelja dialogov, ki obravnava logiko za upravljanje interakcij dialogov. To pomaga ohranjati kodo organizirano in omogoča lažje vzdrževanje in razširljivost.

Testiranje igranja in uravnoteženje

Redno testirajte in uravnovešajte sistem dialogov, da zagotovite, da dialogi tečejo naravno, da imajo izbire pomembne posledice in da je tempo usklajen s celotno izkušnjo igranja. Zberite povratne informacije igralcev in ponovite vsebino in strukturo dialoga, da izboljšate sodelovanje igralcev.

Podpora za lokalizacijo

Oblikujte sistem dialoga z mislijo na lokalizacijo že od začetka. Ločite besedilne nize od kode in uporabite jezikovne datoteke ali lokalizacijske knjižnice za podporo več jezikov. To omogoča lažje prevajanje in lokalizacijo vsebine dialoga.

Z upoštevanjem teh najboljših praks lahko zagotovite, da je vaš sistem dialogov dobro zasnovan, učinkovit in prilagodljiv ter omogoča lažje vzdrževanje in posodabljanje, ko se vaša igra razvija.

Naredite igre bolj zanimive s sistemom dialoga

Če svoji igri dodate sistem dialoga, jo lahko naredite bolj privlačno, saj igralcem omogočite interakcijo z liki, ki niso igralci (NPC), odkrivanje zgodb, sprejemanje odločitev in pridobivanje dragocenih informacij.

Ne pozabite premišljeno oblikovati strukture dialoga, uporabiti modularni pristop in razmisliti o vključevanju zbirateljskih predmetov in stopenj za nadaljnjo obogatitev igralčeve izkušnje.