Padariet savu spēles pieredzi aizraujošāku, ieviešot dialoga sistēmu.

Dialoga sistēmas ieviešana Pygame var ievērojami uzlabot spēles interaktīvo pieredzi. Dialogu sistēma ļauj spēlētājam parādīt sarunas, ziņojumus un izvēles iespējas, radot aizraujošāku un saistošāku spēli.

Pygame bibliotēka nodrošina nepieciešamos rīkus, lai izveidotu grafisko lietotāja interfeisu (GUI) un apstrādātu lietotāja ievadi, padarot to par ideālu izvēli dialoga sistēmas ieviešanai.

Izveidojiet vienkāršu spēli

Pirms sākat, pārliecinieties, ka jums ir pip ir instalēts jūsu sistēmā. Izmantojiet šo komandu, lai instalētu pygame bibliotēka:

pip instalēt pygame

Pēc tam sāciet, izveidojot vienkāršu spēli, kurā spēlētājs var pārvietoties pa kreisi un pa labi, vienlaikus izvairoties no ienaidnieka.

Šajā rakstā izmantotais kods ir pieejams šajā GitHub repozitorijs un to varat izmantot bez maksas saskaņā ar MIT licenci.

Tālāk norādītais koda fragments iestata spēles logu, inicializē spēlētāja un ienaidnieka rekvizītus un palaiž spēles cilpu.

instagram viewer
# Importējiet nepieciešamās bibliotēkas
imports pygame
no pygame.locals imports *

pygame.init()

# Iestatiet spēles logu
screen_width, screen_height = 800, 600
ekrāns = pygame.display.set_mode((ekrāna_platums, ekrāna_augstums))
pygame.display.set_caption("Mana spēle")

# Definējiet krāsas
MELNS = (0, 0, 0)
BALTS = (255, 255, 255)
PELĒKS = (128, 128, 128)

# Spēlētāja īpašības
spēlētājs_x = 400
spēlētājs_y = 500
player_speed = 5

# Ienaidnieka īpašības
ienaidnieks_x = 400
ienaidnieks_y = 100
ienaidnieka_ātrums = 3

skriešana = Taisnība
pulkstenis = pygame.time. Pulkstenis ()

kamēr darbojas:
priekš notikumu iekšā pygame.event.get():
ja event.type == IZBEIGT:
skriešana = Nepatiesi

taustiņi = pygame.key.get_pressed()

# Spēlētāja kustība
ja taustiņi[K_LEFT] un player_x > 0:
player_x -= spēlētāja_ātrums
ja taustiņi[K_RIGHT] un player_x < screen_width — player_speed:
player_x += player_speed

# Atjauniniet ienaidnieka pozīciju
ienaidnieks_y += ienaidnieka_ātrums
ja ienaidnieks_y > screen_height:
ienaidnieks_y = -50

# Pārbaudiet sadursmi
ja pygame. Rect (player_x, player_y, 50, 50).colliderect (pygame. Rect (ienaidnieks_x, ienaidnieks_y, 50, 50)):
# Ieviesiet dialoglodziņu šeit
caurlaide

screen.fill (MELNS)
pygame.draw.rect (ekrāns, BALTS, (player_x, player_y, 50, 50))
pygame.draw.rect (ekrāns, BALTS, (ienaidnieks_x, ienaidnieks_y, 50, 50))
pygame.display.flip()
pulkstenis.tick(60)

pygame.quit()

Zemāk ir izvade:

Izveidojiet dialoglodziņu

Lai ieviestu dialoglodziņu, tas jāparāda ikreiz, kad spēlētājs pieskaras ienaidniekam. Pievienojiet dialoglodziņš mainīgais, kas nosaka, vai dialoglodziņš ir jāparāda vai nē.

Spēles cilpas iekšpusē pārbaudiet, vai nav sadursmes starp spēlētāju un ienaidnieku, un, ja notiek sadursme, iestatīt dialoglodziņš uz Taisnība. Nosacījuma ietvaros, kur dialoglodziņš ir Taisnība, uzzīmējiet ekrānā pelēku taisnstūri, izmantojot pygame.draw.rect() lai attēlotu dialoglodziņu.

Izveidojiet jaunu failu ar nosaukumu dialogs.py un pievienojiet kodu ar tālāk norādītajiem atjauninājumiem:

# Dialoglodziņa rekvizīti
dialog_box_width = 400
dialog_box_height = 200
dialog_box_x = (screen_width - dialog_box_width) // 2
dialog_box_y = (screen_height - dialog_box_height) // 2
dialoglodziņš = Nepatiesi
# ...
kamēr darbojas:
priekš notikumu iekšā pygame.event.get():
ja event.type == IZBEIGT:
skriešana = Nepatiesi
taustiņi = pygame.key.get_pressed()
# Spēlētāja kustība
ja taustiņi[K_LEFT] un player_x > 0:
player_x -= spēlētāja_ātrums
ja taustiņi[K_RIGHT] un player_x < screen_width — player_speed:
player_x += player_speed
# Atjauniniet ienaidnieka pozīciju
ienaidnieks_y += ienaidnieka_ātrums
ja ienaidnieks_y > screen_height:
ienaidnieks_y = -50
# Pārbaudiet sadursmi
ja pygame. Rect (player_x, player_y, 50, 50).colliderect (pygame. Rect (ienaidnieks_x, ienaidnieks_y, 50, 50)):
dialoglodziņš = Taisnība
screen.fill (MELNS)
ja dialog_box:
pygame.draw.rect (ekrāns, PELĒKS, (dialogue_box_x,
dialog_box_y,
dialog_box_width,
dialog_box_height))

# Šeit pievienojiet dialoga tekstu un pogas
cits:
pygame.draw.rect (ekrāns, BALTS, (player_x, player_y, 50, 50))
pygame.draw.rect (ekrāns, BALTS, (ienaidnieks_x, ienaidnieks_y, 50, 50))
pygame.display.flip()
pulkstenis.tick(60)
pygame.quit()

Zemāk ir izvade:

Tagad, lai padarītu dialoglodziņu funkcionālāku un interaktīvāku, varat turpināt pievienot pogas un tekstu.

Pievienojiet pogas, izmantojot Python GUI

Lai dialoglodziņā pievienotu pogas, varat izmantot Python GUI bibliotēku, piemēram, Pygame GUI vai PySimpleGUI.

Instalējiet un importējiet pygame_gui moduli, pēc tam izveidojiet Pygame GUI pārvaldnieku, izmantojot pygame_gui. UIMager. Pēc tam izveidojiet pogu, izmantojot UIBpoga klase, ko nodrošina Python GUI bibliotēka.

Spēles cilpas iekšpusē pievienojiet manager.update (pygame.time.get_ticks() / 1000.0) lai atjauninātu GUI pārvaldnieku un manager.draw_ui (ekrāns) lai uzzīmētu ekrānā GUI elementus.

Izveidojiet jaunu failu ar nosaukumu pogas.py un pievienojiet kodu ar tālāk norādītajiem atjauninājumiem:


imports pygame_gui

# Pygame GUI pārvaldnieks
vadītājs = pygame_gui. UIMager((ekrāna_platums, ekrāna_augstums))

# Izveidojiet pogu
pogas_platums = 100
pogas_augstums = 30
button_x = dialog_box_x + (dialogue_box_width - button_width) // 2
button_y = dialog_box_y + (dialogu_box_height - button_height) // 2
poga = pygame_gui.elements. UIBbutton (relative_rect=pygame. Taisnā (poga_x, poga_y, pogas_platums, pogas_augstums),
teksts="Noklikšķiniet uz mani",
menedžeris = vadītājs)

skriešana = Taisnība
pulkstenis = pygame.time. Pulkstenis ()

kamēr darbojas:
priekš notikumu iekšā pygame.event.get():
ja event.type == pygame. IZIET:
skriešana = Nepatiesi

manager.process_events (notikums)

taustiņi = pygame.key.get_pressed()

# Pārbaudiet sadursmi
ja pygame. Rect (player_x, player_y, 50, 50).colliderect (pygame. Rect (ienaidnieks_x, ienaidnieks_y, 50, 50)):
dialoglodziņš = Taisnība

screen.fill (MELNS)

ja dialog_box:
pygame.draw.rect (ekrāns, PELĒKS, (dialogue_box_x,
dialog_box_y,
dialog_box_width,
dialog_box_height))
manager.update (pygame.time.get_ticks() / 1000.0)
manager.draw_ui (ekrāns)
cits:
pygame.draw.rect (ekrāns, BALTS, (player_x, player_y, 50, 50))
pygame.draw.rect (ekrāns, BALTS, (ienaidnieks_x, ienaidnieks_y, 50, 50))

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

pygame.quit()

Zemāk ir izvade:

Izmantojot šīs izmaiņas, pogai tagad vajadzētu būt redzamai dialoglodziņā, kad tā tiek parādīta.

Pievienojiet tekstu, izmantojot Python GUI

Lai dialoglodziņā parādītu pielāgotu tekstu, varat izmantot Python GUI bibliotēkas nodrošināto teksta funkcionalitāti.

Definējiet fonta rekvizītus, izmantojot pygame.font. Fonts(). Izveidot a tekstu mainīgo ar vēlamo saturu un pēc tam renderējiet to, izmantojot norādīto fontu un krāsu.

Izveidojiet jaunu failu ar nosaukumu text.py un pievienojiet kodu ar tālāk norādītajiem atjauninājumiem:


# Inicializējiet Pygame GUI pārvaldnieku
vadītājs = pygame_gui. UIMager((ekrāna_platums, ekrāna_augstums))

# Definējiet fonta rekvizītus
fonts = pygame.font. Fonts(Nav, 24)
text_color = MELNS

# ...

kamēr darbojas:
# ...

ja dialog_box:
pygame.draw.rect (ekrāns, PELĒKS, (dialogue_box_x,
dialog_box_y,
dialog_box_width,
dialog_box_height))

# Pievienojiet tekstu dialoglodziņā
teksts = "Sveiki, laipni lūdzam spēlē!"
rendered_text = font.render (teksts, Taisnība, teksta_krāsa)
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_rekts)

Zemāk ir izvade:

Ieskaitot papildu funkcijas

Papildus pogām un tekstam ir vairākas citas funkcijas, kuras varat apsvērt pievienot Pygame dialogu sistēmai. Šeit ir vēl daži piemēri:

Rakstura emocijas

Dialoga laikā parādiet varoņiem emocijas vai sejas izteiksmes, lai izteiktu viņu noskaņojumu vai reakcijas. To var panākt, izmantojot animētus spraitus vai attēlu pārklājumus, kas mainās atkarībā no sarunas konteksta.

Nosacītie dialogi

Izmantojiet nosacījumus paziņojumus, lai aktivizētu konkrētus dialogus, pamatojoties uz noteiktiem kritērijiem, piemēram, spēlētāja progresu, iepriekšējām izvēlēm vai spēles notikumiem. Tas palielina dziļumu un personalizētu mijiedarbību, pamatojoties uz spēlētāja darbībām.

Balss pārraides

Uzlabojiet dialoga sistēmas iedziļināšanos, iekļaujot personāžu dialogos balss atveidi. Atskaņojiet audio klipus programmā Pygame kas atbilst dialoglodziņā parādītajam tekstam, lai piešķirtu rakstzīmēm atšķirīgu balsi.

Iekļaujot šīs papildu funkcijas, varat izveidot dinamiskāku un saistošāku dialogu sistēmu, kas uzlabo spēlētāja iedziļināšanos un nodrošina unikālu spēles pieredzi.

Dialogu sistēmas pievienošanas paraugprakse

Ieviešot dialoga sistēmu Pygame, ir svarīgi ievērot noteiktu labāko praksi, lai nodrošinātu efektivitāti, apkopi un vienmērīgu spēlētāja pieredzi. Tālāk ir norādītas dažas papildu paraugprakses, kas jāņem vērā.

Izmantojiet uz datiem balstītu dizainu

Saglabājiet dialoga saturu, tostarp tekstu, runātāja informāciju un dialoga opcijas, ārējos datu failos (piemēram, JSON, XML). Tas ļauj viegli modificēt, lokalizēt un pārvaldīt dialoga saturu, neprasot mainīt kodu.

Ieviesiet dialoga vadītāju

Izveidojiet īpašu dialogu pārvaldnieka klasi vai moduli, kas apstrādā dialogu mijiedarbības pārvaldības loģiku. Tas palīdz sakārtot kodu un atvieglo apkopi un paplašināšanu.

Spēles testēšana un balansēšana

Regulāri atskaņojiet un līdzsvarojiet dialogu sistēmu, lai nodrošinātu, ka dialogi norit dabiski, izvēlēm ir nozīmīgas sekas un ritms atbilst vispārējai spēles pieredzei. Apkopojiet atsauksmes no spēlētājiem un atkārtojiet dialoga saturu un struktūru, lai uzlabotu spēlētāju iesaistīšanos.

Lokalizācijas atbalsts

Izveidojiet dialoga sistēmu, jau no paša sākuma paturot prātā lokalizāciju. Atdaliet teksta virknes no koda un izmantojiet valodu failus vai lokalizācijas bibliotēkas, lai atbalstītu vairākas valodas. Tas ļauj vieglāk tulkot un lokalizēt dialoga saturu.

Ievērojot šo paraugpraksi, varat nodrošināt, ka jūsu dialoga sistēma ir labi izstrādāta, efektīva un elastīga, ļaujot vieglāk veikt apkopi un atjaunināt spēles attīstību.

Padariet spēles saistošākas, izmantojot dialoga sistēmu

Dialoga sistēmas pievienošana spēlei var padarīt to saistošāku, ļaujot spēlētājiem mijiedarboties ar personāžiem, kas nav spēlētāji (NPC), atklāt sižetus, izdarīt izvēli un iegūt vērtīgu informāciju.

Atcerieties pārdomāti veidot dialoga struktūru, izmantot modulāru pieeju un apsvērt iespēju integrēt kolekcionējamus priekšmetus un līmeņus, lai vēl vairāk bagātinātu spēlētāja pieredzi.