Muutke oma mängukogemus kaasahaaravamaks, rakendades dialoogisüsteemi.

Dialoogisüsteemi rakendamine Pygame'is võib mängu interaktiivset kogemust oluliselt parandada. Dialoogisüsteem võimaldab mängul esitada mängijale vestlusi, sõnumeid ja valikuid, luues kaasahaaravama ja kaasahaaravama mängu.

Pygame'i teek pakub vajalikke tööriistu graafilise kasutajaliidese (GUI) loomiseks ja kasutaja sisendi käsitlemiseks, muutes selle ideaalseks valikuks dialoogisüsteemi juurutamiseks.

Looge lihtne mäng

Enne alustamist veenduge, et teil on pip teie süsteemi installitud. Kasutage seda käsku installimiseks pygame raamatukogu:

pip install pygame

Pärast seda alustage lihtsa mängu loomisega, kus mängija saab liikuda vasakule ja paremale, vältides samal ajal vaenlast.

Selles artiklis kasutatud kood on saadaval selles GitHubi hoidla ja seda saate MIT-i litsentsi alusel tasuta kasutada.

Allolev koodilõik seadistab mänguakna, initsialiseerib mängija ja vaenlase omadused ning käivitab mängutsükli.

# Importige vajalikud raamatukogud
instagram viewer

importida pygame
alates pygame.locals importida *

pygame.init()

# Seadistage mängu aken
ekraani_laius, ekraani_kõrgus = 800, 600
ekraan = pygame.display.set_mode((ekraani_laius, ekraani_kõrgus))
pygame.display.set_caption("Minu mäng")

# Määratlege värvid
MUST = (0, 0, 0)
VALGE = (255, 255, 255)
HALL = (128, 128, 128)

# Mängija omadused
mängija_x = 400
mängija_y = 500
mängija_kiirus = 5

# Vaenlase omadused
vaenlane_x = 400
vaenlane_y = 100
vaenlase_kiirus = 3

jookseb = Tõsi
kell = pygame.time. Kell ()

samal ajal jooksmine:
jaoks sündmus sisse pygame.event.get():
kui event.type == VÄLJU:
jookseb = Vale

võtmed = pygame.key.get_pressed()

# Mängija liikumine
kui klahvid[K_LEFT] ja mängija_x > 0:
mängija_x - = mängija_kiirus
kui klahvid[K_RIGHT] ja player_x < screen_width - player_speed:
mängija_x += mängija_kiirus

# Värskendage vaenlase positsiooni
vaenlane_y += vaenlase_kiirus
kui vaenlane_y > screen_height:
vaenlane_y = -50

# Kontrollige kokkupõrget
kui pygame. Rect (mängija_x, mängija_y, 50, 50).colliderect (pygame. Rect (vaenlane_x, vaenlane_y, 50, 50)):
# Rakendage siin dialoogiboks
üle andma

screen.fill (MUST)
pygame.draw.rect (ekraan, VALGE, (mängija_x, mängija_y, 50, 50))
pygame.draw.rect (ekraan, VALGE, (vaenlase_x, vaenlase_y, 50, 50))
pygame.display.flip()
kell.tikk(60)

pygame.quit()

Allpool on väljund:

Looge dialoogiboks

Dialoogiboksi rakendamiseks peate selle kuvama alati, kui mängija puudutab vaenlast. Lisage dialoogikast muutuja, mis määrab, kas dialoogiboks kuvatakse või mitte.

Mängutsükli sees kontrollige kokkupõrget mängija ja vaenlase vahel, ja kui toimub kokkupõrge, määrake dialoogikast juurde Tõsi. Tingimuse piires, kus dialoogikast on Tõsi, joonistage ekraanile hall ristkülik kasutades pygame.draw.rect() dialoogiboksi esindamiseks.

Looge uus fail nimega dialoog.py ja lisage kood koos allolevate värskendustega:

# Dialoogikasti omadused
dialoogikasti_laius = 400
dialoogikasti_kõrgus = 200
dialog_box_x = (ekraani_laius - dialog_box_width) // 2
dialog_box_y = (ekraani_kõrgus - dialoogikasti_kõrgus) // 2
dialoogikast = Vale
# ...
samal ajal jooksmine:
jaoks sündmus sisse pygame.event.get():
kui event.type == VÄLJU:
jookseb = Vale
võtmed = pygame.key.get_pressed()
# Mängija liikumine
kui klahvid[K_LEFT] ja mängija_x > 0:
mängija_x - = mängija_kiirus
kui klahvid[K_RIGHT] ja player_x < screen_width - player_speed:
mängija_x += mängija_kiirus
# Värskendage vaenlase positsiooni
vaenlane_y += vaenlase_kiirus
kui vaenlane_y > screen_height:
vaenlane_y = -50
# Kontrollige kokkupõrget
kui pygame. Rect (mängija_x, mängija_y, 50, 50).colliderect (pygame. Rect (vaenlane_x, vaenlane_y, 50, 50)):
dialoogikast = Tõsi
screen.fill (MUST)
kui dialoogiboks:
pygame.draw.rect (ekraan, HALL, (dialogue_box_x,
dialog_box_y,
dialog_box_width,
dialoogikasti_kõrgus))

# Lisage siia dialoogi tekst ja nupud
muidu:
pygame.draw.rect (ekraan, VALGE, (mängija_x, mängija_y, 50, 50))
pygame.draw.rect (ekraan, VALGE, (vaenlase_x, vaenlase_y, 50, 50))
pygame.display.flip()
kell.tikk(60)
pygame.quit()

Allpool on väljund:

Nüüd saate dialoogiboksi funktsionaalsemaks ja interaktiivsemaks muutmiseks jätkata nuppude ja teksti lisamisega.

Lisage Pythoni GUI abil nuppe

Nuppude lisamiseks dialoogiboksi saate kasutada Pythoni GUI teeki, nagu Pygame GUI või PySimpleGUI.

Installige ja importige pygame_gui moodulit, seejärel looge kasutades Pygame'i GUI-haldur pygame_gui. UIMager. Pärast seda looge nupp, kasutades nuppu UIBupp klass, mille pakub Pythoni GUI teek.

Lisage mängutsükli sees manager.update (pygame.time.get_ticks() / 1000.0) GUI halduri värskendamiseks ja manager.draw_ui (ekraan) GUI elementide ekraanile joonistamiseks.

Looge uus fail nimega nupud.py ja lisage kood koos allolevate värskendustega:


importida pygame_gui

# Pygame GUI manager
manager = pygame_gui. UIManager((ekraani_laius, ekraani_kõrgus))

# Loo nupp
nupu_laius = 100
nupu_kõrgus = 30
nupp_x = dialog_box_x + (dialogue_box_width - button_width) // 2
nupp_y = dialog_box_y + (dialogue_box_height - button_height) // 2
nupp = pygame_gui.elements. UIBupp (relative_rect=pygame. Rect (nupp_x, nupp_y, nupu_laius, nupu_kõrgus),
tekst="Klõpsa mind",
juht = juht)

jookseb = Tõsi
kell = pygame.time. Kell ()

samal ajal jooksmine:
jaoks sündmus sisse pygame.event.get():
kui event.type == mängumäng. VÄLJA:
jookseb = Vale

manager.process_events (sündmus)

võtmed = pygame.key.get_pressed()

# Kontrollige kokkupõrget
kui pygame. Rect (mängija_x, mängija_y, 50, 50).colliderect (pygame. Rect (vaenlane_x, vaenlane_y, 50, 50)):
dialoogikast = Tõsi

screen.fill (MUST)

kui dialoogiboks:
pygame.draw.rect (ekraan, HALL, (dialogue_box_x,
dialog_box_y,
dialog_box_width,
dialoogikasti_kõrgus))
manager.update (pygame.time.get_ticks() / 1000.0)
manager.draw_ui (ekraan)
muidu:
pygame.draw.rect (ekraan, VALGE, (mängija_x, mängija_y, 50, 50))
pygame.draw.rect (ekraan, VALGE, (vaenlase_x, vaenlase_y, 50, 50))

pygame.display.flip()
kell.tikk(60)

pygame.quit()

Allpool on väljund:

Nende muudatustega peaks nupp nüüd ilmumisel dialoogiboksis nähtav olema.

Teksti lisamine Pythoni GUI abil

Kohandatud teksti kuvamiseks dialoogiboksis saate kasutada Pythoni GUI teegi pakutavaid tekstifunktsioone.

Määrake fondi atribuudid kasutades pygame.font. Font(). Loo tekst muutuja soovitud sisuga ja seejärel renderdage see määratud fondi ja värviga.

Looge uus fail nimega text.py ja lisage kood koos allolevate värskendustega:


# Käivitage Pygame GUI manager
manager = pygame_gui. UIManager((ekraani_laius, ekraani_kõrgus))

# Määratlege fondi omadused
font = pygame.font. Font(Mitte ühtegi, 24)
teksti_värv = MUST

# ...

samal ajal jooksmine:
# ...

kui dialoogiboks:
pygame.draw.rect (ekraan, HALL, (dialogue_box_x,
dialog_box_y,
dialog_box_width,
dialoogikasti_kõrgus))

# Lisage dialoogiboksi tekst
tekst = "Tere, tere tulemast mängu!"
renderdatud_tekst = font.render (tekst, Tõsi, teksti_värv)
text_rect = renderdatud_tekst.get_rect (center=(dialogue_box_x + dialog_box_width // 2,
dialog_box_y + dialog_box_height // 2))

screen.blit (renderdatud_tekst, tekst_rekt)

Allpool on väljund:

Kaasa arvatud lisafunktsioonid

Lisaks nuppudele ja tekstile on mitmeid muid funktsioone, mida võiksite Pygame'i dialoogisüsteemi lisada. Siin on veel mõned näited:

Iseloomulikud emotsioonid

Näidake tegelastele dialoogi ajal emotsioone või näoilmeid, et edastada nende meeleolu või reaktsioone. Seda saab saavutada animeeritud spraitide või pildiülekatete abil, mis muutuvad vastavalt vestluse kontekstile.

Tingimuslikud dialoogid

Kasutage tingimuslauseid, et käivitada kindlad dialoogid, mis põhinevad teatud kriteeriumidel, nagu mängija edenemine, varasemad valikud või mängusisesed sündmused. See lisab sügavust ja isikupärastatud suhtlust, mis põhineb mängija tegevusel.

Voiceovers

Suurendage dialoogisüsteemi süvenemist, lisades tegelaskujude dialoogidesse häälnäitlemise. Esitage Pygame'is heliklippe mis vastavad dialoogiboksis kuvatavale tekstile, et anda tegelastele selge hääl.

Nende lisafunktsioonide kaasamisega saate luua dünaamilisema ja kaasahaaravama dialoogisüsteemi, mis suurendab mängija keelekümblust ja pakub ainulaadset mängukogemust.

Dialoogisüsteemi lisamise parimad tavad

Dialoogisüsteemi rakendamisel Pygame'is on oluline järgida teatud parimaid tavasid, et tagada tõhusus, hooldatavus ja sujuv mängijakogemus. Siin on mõned täiendavad parimad tavad, mida kaaluda.

Kasutage andmepõhist disaini

Salvestage dialoogisisu, sh tekst, kõneleja teave ja dialoogivalikud, välistesse andmefailidesse (nt JSON, XML). See võimaldab dialoogi sisu hõlpsat muutmist, lokaliseerimist ja haldamist ilma koodi muutmiseta.

Rakendage dialoogihaldur

Looge spetsiaalne dialoogihalduri klass või moodul, mis käsitleb dialoogi interaktsioonide haldamise loogikat. See aitab hoida koodi korrastatuna ning hõlbustab hooldust ja laiendamist.

Mängu testimine ja tasakaalustamine

Testige dialoogisüsteemi regulaarselt ja tasakaalustage seda, et dialoogid kulgeksid loomulikult, valikutel oleks tähendusrikkad tagajärjed ja et tempo oleks kooskõlas üldise mängukogemusega. Koguge mängijatelt tagasisidet ja korrake dialoogi sisu ja struktuuri, et parandada mängijate kaasamist.

Lokaliseerimise tugi

Kujundage dialoogisüsteem algusest peale lokaliseerimist silmas pidades. Eraldage koodist tekstistringid ja kasutage mitme keele toetamiseks keelefaile või lokaliseerimisteeke. See võimaldab dialoogi sisu hõlpsamat tõlkimist ja lokaliseerimist.

Neid parimaid tavasid järgides saate tagada, et teie dialoogisüsteem on hästi läbimõeldud, tõhus ja paindlik, võimaldades mängu arenedes lihtsamat hooldust ja värskendamist.

Muutke mängud dialoogisüsteemiga kaasahaaravamaks

Dialoogisüsteemi lisamine mängule võib muuta selle kaasahaaravamaks, võimaldades mängijatel suhelda mitte-mängija tegelastega (NPC-dega), avastada süžeeliine, teha valikuid ja hankida väärtuslikku teavet.

Ärge unustage kujundada dialoogi struktuur läbimõeldult, kasutada modulaarset lähenemist ja kaaluda kogumisobjektide ja tasemete integreerimist, et mängijakogemust veelgi rikastada.