Tekstiseikkailu¶
Istukaapa nuotion ääreen niin vaari kertoo teille tekstiseikkailupeleistä... Tekstiseikkailujen valtakausi taisi lopahtaa jo 40 vuotta sitten, mutta nykyäänkin peleissä dialogi oikeastaan etenee pitkältä samoilla kaavoilla. Tässä työssä tutustustaan siis hiukan siihen, miten tyypillinen pelidialogin eteneminen voitaisiin toteuttaa terminaalissa.
Ohjelman eteneminen¶
Ohjelmassa pelaaja käy läpi yhden kohtauksen, jossa dialogi etenee pätkissä, ja sisältää kohtia, joissa pelaaja voi tehdä valinnan. Eteneminen tapahtuu seuraavasti:
- ohjelma tulostaa näytölle tekstipätkän
- jos tekstiin ei ole liitetty vaihtoehtoja, pelaaja antaa tyhjän syötteen ja palataan kohtaan 1 lukien seuraava tekstipätkä samasta haarasta
- jos tekstiin on liitetty valintoja, peli esittää valinnat pelaajalle numeroituna
- pelaaja tekee haluamansa valinnan, ja ohjelma hakee valintaa vastaavan haaran keskustelupuusta
- palataan kohtaan 1, lukien uuden haaran ensimmäinen teksti
- jos tekstiin on liitetty tieto siitä mihin haaraan mennään seuraavaksi, palataan kohtaan 1 lukien ensimmäinen tekstipätkä määritetystä haarasta
- jos haara loppuu ilman tietoa siitä mihin pitäisi jatkaa, ohjelman suoritus päättyy
Keskustelupuu¶
Keskustelun tallentamiseen sopivan tietorakenteen pohdiskelu on osa tehtävää. Alla on havainnollistava kaava siitä millaisia keskustelupuita rakenteella pitäisi pystyä esittämään. Jokainen laatikko esittää yhtä käyttäjälle esitettävää tekstipätkää, jonka jälkeen pitää painaa enter tai tehdä valinta. Jokainen musta piste esittää haaran alkua ja tyhjä ympyrä keskustelun loppua.
Tiedon hallinta¶
Minimaalisessa toteutuksessa ohjelmassa on vain yksi sisäänrakennettu keskustelu, jonka käyttäjä voi käydä läpi kerran. Hiukan hyödyllisemmässä toteutuksessa keskustelut ladataan datatiedostoista, ja käyttäjä voi valita haluamansa datatiedoston komentoriviargumenttina. Tässä työssä ei tallenneta dataa, ainoastaan ladataan. Tiedostojen hallintaan suositellaan json-moduulia.