Učinite svoje iskustvo igranja impresivnijim implementacijom sustava dijaloga.
Implementacija sustava dijaloga u Pygameu može uvelike poboljšati interaktivno iskustvo igre. Sustav dijaloga omogućuje igri da predstavi razgovore, poruke i izbore igraču, stvarajući impresivniju i zanimljiviju igru.
Knjižnica Pygame pruža potrebne alate za stvaranje grafičkog korisničkog sučelja (GUI) i rukovanje korisničkim unosom, što je čini idealnim izborom za implementaciju sustava dijaloga.
Stvorite jednostavnu igru
Prije početka provjerite imate li pip instaliran na vašem sustavu. Koristite ovu naredbu za instalaciju pygame knjižnica:
pip instaliraj pygame
Nakon toga, počnite kreirati jednostavnu igru u kojoj se igrač može pomicati lijevo i desno dok izbjegava neprijatelja.
Kôd korišten u ovom članku dostupan je u ovom GitHub spremište i besplatan je za korištenje pod MIT licencom.
Isječak koda u nastavku postavlja prozor igre, inicijalizira svojstva igrača i neprijatelja i pokreće petlju igre.
# Uvezite potrebne biblioteke
uvoz pygame
iz pygame.mještani uvoz *pygame.init()
# Postavite prozor igre
širina_zaslona, visina_zaslona = 800, 600
ekran = pygame.display.set_mode((širina_zaslona, visina_zaslona))
pygame.display.set_caption("moja igra")# Definirajte boje
CRNO = (0, 0, 0)
BIJELO = (255, 255, 255)
SIVO = (128, 128, 128)# Svojstva igrača
igrač_x = 400
igrač_y = 500
brzina_igrača = 5# Svojstva neprijatelja
neprijatelj_x = 400
neprijatelj_y = 100
brzina_neprijatelja = 3trčanje = Pravi
sat = pygame.vrijeme. Sat()dok trčanje:
za događaj u pygame.event.get():
ako event.type == ODUSTANI:
trčanje = lažnotipke = pygame.key.get_pressed()
# Kretanje igrača
ako tipke[K_LEFT] i igrač_x > 0:
igrač_x -= brzina_igrača
ako tipke[K_RIGHT] i player_x < screen_width - player_speed:
igrač_x += brzina_igrača# Ažurirajte položaj neprijatelja
neprijatelj_y += neprijateljska_brzina
ako enemy_y > screen_height:
neprijatelj_y = -50# Provjerite koliziju
ako pygame. Rect (player_x, player_y, 50, 50).colliderect (pygame. Pravo (neprijatelj_x, neprijatelj_y, 50, 50)):
# Ovdje implementirajte dijaloški okvir
proćiscreen.fill (CRNO)
pygame.draw.rect (zaslon, BIJELI, (player_x, player_y, 50, 50))
pygame.draw.rect (ekran, BIJELI, (neprijatelj_x, neprijatelj_y, 50, 50))
pygame.display.flip()
clock.tick(60)
pygame.quit()
Ispod je izlaz:
Stvorite dijaloški okvir
Da biste implementirali dijaloški okvir, morate ga prikazati kad god igrač dodirne neprijatelja. Dodajte dijaloški okvir varijabla, koja kontrolira hoće li dijaloški okvir biti prikazan ili ne.
Unutar petlje igre, provjerite postoji li kolizija između igrača i neprijatelja, a ako dođe do sudara, postavite dijaloški okvir do Pravi. Unutar uvjeta gdje dijaloški okvir je Pravi, nacrtajte sivi pravokutnik na zaslonu pomoću pygame.draw.rect() predstavljati okvir za dijalog.
Stvorite novu datoteku pod nazivom dijalog.py i dodajte kod sa sljedećim ažuriranjima:
# Svojstva dijaloškog okvira
dijaloška_kutija_širina = 400
visina_okvira za dijalog = 200
dialogue_box_x = (screen_width - dialogue_box_width) // 2
dialog_box_y = (screen_height - dialogue_box_height) // 2
dijaloški okvir = lažno
# ...
dok trčanje:
za događaj u pygame.event.get():
ako event.type == ODUSTANI:
trčanje = lažno
tipke = pygame.key.get_pressed()
# Kretanje igrača
ako tipke[K_LEFT] i igrač_x > 0:
igrač_x -= brzina_igrača
ako tipke[K_RIGHT] i player_x < screen_width - player_speed:
igrač_x += brzina_igrača
# Ažurirajte položaj neprijatelja
neprijatelj_y += neprijateljska_brzina
ako enemy_y > screen_height:
neprijatelj_y = -50
# Provjerite koliziju
ako pygame. Rect (player_x, player_y, 50, 50).colliderect (pygame. Pravo (neprijatelj_x, neprijatelj_y, 50, 50)):
dijaloški okvir = Pravi
screen.fill (CRNO)
ako dijaloški okvir:
pygame.draw.rect (zaslon, SIVI, (dijaloški okvir_x,
dialogue_box_y,
dijaloška_kutija_širina,
visina_okvira za dijalog))
# Ovdje dodajte tekst dijaloga i gumbe
drugo:
pygame.draw.rect (zaslon, BIJELI, (player_x, player_y, 50, 50))
pygame.draw.rect (ekran, BIJELI, (neprijatelj_x, neprijatelj_y, 50, 50))
pygame.display.flip()
clock.tick(60)
pygame.quit()
Ispod je izlaz:
Sada, kako biste dijaloški okvir učinili funkcionalnijim i interaktivnijim, možete nastaviti s dodavanjem gumba i teksta.
Dodajte gumbe pomoću Python GUI
Za dodavanje gumba dijaloškom okviru možete upotrijebiti biblioteku Python GUI kao što je Pygame GUI ili PySimpleGUI.
Instalirajte i uvezite pygame_gui modula, zatim izradite Pygame GUI upravitelj pomoću pygame_gui. UIManager. Nakon toga izradite gumb pomoću UIButton klasa koju pruža Python GUI biblioteka.
Unutar petlje igre dodajte manager.update (pygame.time.get_ticks() / 1000.0) za ažuriranje GUI upravitelja i manager.draw_ui (zaslon) za crtanje GUI elemenata na ekranu.
Stvorite novu datoteku pod nazivom gumbi.py i dodajte kod sa sljedećim ažuriranjima:
uvoz pygame_gui# Pygame GUI upravitelj
upravitelj = pygame_gui. UIManager((širina_zaslona, visina_zaslona))# Napravite gumb
širina_gumba = 100
visina_gumba = 30
button_x = dialog_box_x + (dialogue_box_width - button_width) // 2
button_y = dialog_box_y + (dialogue_box_height - button_height) // 2
gumb = pygame_gui.elements. UIButton (relative_rect=pygame. Prav (button_x, button_y, button_width, button_height),
tekst='Klikni me',
menadžer=menadžer)trčanje = Pravi
sat = pygame.vrijeme. Sat()dok trčanje:
za događaj u pygame.event.get():
ako event.type == pygame. PRESTATI:
trčanje = lažnomanager.process_events (događaj)
tipke = pygame.key.get_pressed()
# Provjerite koliziju
ako pygame. Rect (player_x, player_y, 50, 50).colliderect (pygame. Pravo (neprijatelj_x, neprijatelj_y, 50, 50)):
dijaloški okvir = Praviscreen.fill (CRNO)
ako dijaloški okvir:
pygame.draw.rect (zaslon, SIVI, (dijaloški okvir_x,
dialogue_box_y,
dijaloška_kutija_širina,
visina_okvira za dijalog))
manager.update (pygame.time.get_ticks() / 1000.0)
manager.draw_ui (zaslon)
drugo:
pygame.draw.rect (zaslon, BIJELI, (player_x, player_y, 50, 50))
pygame.draw.rect (ekran, BIJELI, (neprijatelj_x, neprijatelj_y, 50, 50))pygame.display.flip()
clock.tick(60)
pygame.quit()
Ispod je izlaz:
S ovim promjenama, gumb bi sada trebao biti vidljiv unutar dijaloškog okvira kada se pojavi.
Dodajte tekst koristeći Python GUI
Da biste prikazali prilagođeni tekst u dijaloškom okviru, možete koristiti tekstualnu funkcionalnost koju pruža Python GUI biblioteka.
Definirajte svojstva fonta pomoću pygame.font. Font(). Stvoriti tekst varijablu sa željenim sadržajem, a zatim je renderirajte pomoću navedenog fonta i boje.
Stvorite novu datoteku pod nazivom tekst.py i dodajte kod sa sljedećim ažuriranjima:
# Inicijalizirajte Pygame GUI upravitelj
upravitelj = pygame_gui. UIManager((širina_zaslona, visina_zaslona))# Definirajte svojstva fonta
font = pygame.font. Font (Nijedan, 24)
boja_teksta = CRNA# ...
dok trčanje:
# ...ako dijaloški okvir:
pygame.draw.rect (zaslon, SIVI, (dijaloški okvir_x,
dialogue_box_y,
dijaloška_kutija_širina,
visina_okvira za dijalog))# Dodajte tekst dijaloškom okviru
tekst = "Zdravo, dobrodošli u igru!"
rendered_text = font.render (tekst, Pravi, boja_teksta)
text_rect = rendered_text.get_rect (center=(dialogue_box_x + dialogue_box_width // 2,
dialog_box_y + dialogue_box_height // 2))
screen.blit (rendered_text, text_rect)
Ispod je izlaz:
Uključujući dodatne značajke
Osim gumba i teksta, postoji nekoliko drugih značajki koje možete dodati svom sustavu dijaloga u Pygameu. Evo još nekoliko primjera:
Karakter Emocije
Prikažite emocije ili izraze lica likova tijekom dijaloga kako biste prenijeli njihovo raspoloženje ili reakcije. To se može postići korištenjem animiranih spriteova ili slojeva slika koji se mijenjaju ovisno o kontekstu razgovora.
Uvjetni dijalozi
Upotrijebite uvjetne naredbe za pokretanje određenih dijaloga na temelju određenih kriterija, poput napretka igrača, prethodnih izbora ili događaja u igri. Ovo dodaje dubinu i personalizirane interakcije na temelju radnji igrača.
Voiceovers
Poboljšajte uživljavanje u sustav dijaloga uključivanjem glasovne glume za dijalog likova. Reproducirajte audio zapise u Pygameu koji se podudaraju s tekstom prikazanim u dijaloškom okviru kako bi znakovi dobili poseban glas.
Uključivanjem ovih dodatnih značajki, možete stvoriti dinamičniji i privlačniji sustav dijaloga koji poboljšava igračevo uživljavanje i pruža jedinstveno iskustvo igranja.
Najbolji primjeri iz prakse za dodavanje sustava dijaloga
Kada implementirate sustav dijaloga u Pygameu, važno je slijediti određene najbolje prakse kako biste osigurali učinkovitost, mogućnost održavanja i glatko iskustvo igrača. Evo nekoliko dodatnih najboljih praksi koje treba razmotriti:
Koristite dizajn vođen podacima
Pohranite sadržaj dijaloga, uključujući tekst, podatke o govorniku i opcije dijaloga, u vanjske podatkovne datoteke (npr. JSON, XML). To omogućuje jednostavnu izmjenu, lokalizaciju i upravljanje sadržajem dijaloga bez potrebe za promjenama koda.
Implementirajte Dialogue Manager
Stvorite namjensku klasu ili modul upravitelja dijaloga koji upravlja logikom za upravljanje interakcijama dijaloga. To pomaže da kod bude organiziran i omogućuje lakše održavanje i proširivanje.
Testiranje igre i balansiranje
Redovito testirajte i uravnotežite sustav dijaloga kako biste osigurali da dijalozi teku prirodno, izbori imaju značajne posljedice, a tempo usklađen s cjelokupnim iskustvom igranja. Prikupite povratne informacije od igrača i ponavljajte sadržaj i strukturu dijaloga kako biste poboljšali angažman igrača.
Podrška za lokalizaciju
Dizajnirajte sustav dijaloga imajući na umu lokalizaciju od samog početka. Odvojite tekstualne nizove od koda i koristite jezične datoteke ili lokalizacijske biblioteke za podršku više jezika. To omogućuje lakši prijevod i lokalizaciju sadržaja dijaloga.
Slijedeći ove najbolje prakse, možete osigurati da je vaš sustav dijaloga dobro dizajniran, učinkovit i fleksibilan, omogućavajući lakše održavanje i ažuriranja kako se vaša igra razvija.
Učinite igre privlačnijim uz sustav dijaloga
Dodavanje sustava dijaloga vašoj igri može je učiniti zanimljivijom dopuštajući igračima interakciju s likovima koji nisu igrači (NPC), otkrivanje priča, donošenje odluka i dobivanje vrijednih informacija.
Ne zaboravite promišljeno dizajnirati strukturu dijaloga, koristiti modularni pristup i razmisliti o integriranju kolekcionarskih predmeta i razina kako biste dodatno obogatili iskustvo igrača.