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.
# 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 = 3skriešana = Taisnība
pulkstenis = pygame.time. Pulkstenis ()kamēr darbojas:
priekš notikumu iekšā pygame.event.get():
ja event.type == IZBEIGT:
skriešana = Nepatiesitaustiņ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
caurlaidescreen.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 = Nepatiesimanager.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ībascreen.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.