Tässä tehtävässä harjoitellaan erityisesti seuraavia asoita:
Tee Eclipseen uusi projekti, jonka nimi on tehtava6_4, ja luo tähän projektiin moduuli hirsipuu. Kirjoita siihen ohjelma, jonka avulla käyttäjä voi pelata hirsipuupeliä.
Pelin idea on seuraava: ohjelma arvuuttelee käyttäjältä jotain sanaa ja käyttäjä arvaa sanaan kuuluvat kirjaimet yhden kirjaimen kerrallaan. Jos esimerkiksi käyttäjä arvaa kirjaimen a, ohjelma näyttää seuraavaksi sanan niin, että kaikki a-kirjaimen esiintymät ovat näkyvissä. Joka vaiheessa sana näytetään aina niin, että jo arvatut kirjaimet ovat näkyvissä, mutta muut arvattavan sanan kirjaimet on korvattu alaviivoilla (katso esimerkkiajoja).
Jos käyttäjä arvaa kirjainta, joka ei kuulu sanaan tai jonka hän on arvannut jo aikaisemmin, lasketaan se virheeksi. Jos käyttäjä tekee seitsemän virhettä ennen kuin hän on arvannut koko sanan, käyttäjä häviää. Jos taas käyttäjä arvaa sanan kokonaan ennen kuin hän on tehnyt seitsemän virhettä, käyttäjä voittaa pelin.
Ohjelman voi toteuttaa siten, että itse arvattavan sanan lisäksi
pidetään yllä samankokoista listaa, jonka alkiot ovat
bool
-tyyppisiä (eli listan alkioiden arvo on joko
True
tai False
). Aluksi listan kaikkien alkioiden arvo
on False
. Aina, kun käyttäjä arvaa jonkun kirjaimen
oikein, vaihdetaan listassa True
:ksi kaikki ne alkiot,
joita vastaavalla paikalla esiintyy arvattu kirjain. Jos esimerkiksi
arvattava sana on "maksalaatikko" ja käyttäjä arvaa kirjaimen "a",
vaihdetaan listassa indekseillä 1, 4, 6 ja 7 olevien alkioiden
arvoksi True
. Tämän listan avulla on helppo tarkistaa,
onko joku kirjain arvattu jo aikaisemmin ja onko koko sana jo arvattu.
Kirjoita ohjelmaasi seuraavat funktiot:
bool
-arvoja sisältävä lista toisena parametrina.
Tätä funktiota voi käyttää apuna silloin, kun arvattava sana halutaan
tulostaa käyttäjälle.
bool
-arvoja sisältävä lista annetaan kolmantena parametrina.
Jos kirjain löytyy sanasta, funktio muuttaa listassa
kaikkien kirjaimen esiintymää vastaavilla indekseilla olevien
alkioiden arvoksi True
. Funktio palauttaa arvon
True
, jos kirjain löytyi, mutta sitä ei oltu löydetty jo
aikaisemmin ja muuten arvon False
. Funktion listaan
tekemät muutokset näkyvät myös, kun samaa listaa tarkastellaan
pääohjelmassa.
bool
-arvoja sisältävän listan. Funktio palauttaa arvon
True, jos sana on ratkaistu - muussa tapauksessa funktio palauttaa
arvon False.
Voit olettaa, että käyttäjän antama syöte on järkevä. Testaa jälleen ohjelmaasi ajamalla sitä itse ennen kuin palautat ohjelman Gobliniin. Palauta Gobliniin tiedosto hirsipuu.py.
[ohjelman suoritus alkaa] Anna arvattava sana. kissanhiekkalaatikko Tervetuloa pelaamaan hirsipuuta! Sana on nyt ____________________ Arvaa seuraava kirjain. s Hyva, se kuuluu sanaan. Sana on nyt __ss________________ Arvaa seuraava kirjain. r Kirjain ei esiinny sanassa tai se on arvattu aikaisemmin. Sana on nyt __ss________________ Arvaa seuraava kirjain. a Hyva, se kuuluu sanaan. Sana on nyt __ssa______a_aa_____ Arvaa seuraava kirjain. y Kirjain ei esiinny sanassa tai se on arvattu aikaisemmin. Sana on nyt __ssa______a_aa_____ Arvaa seuraava kirjain. n Hyva, se kuuluu sanaan. Sana on nyt __ssan_____a_aa_____ Arvaa seuraava kirjain. k Hyva, se kuuluu sanaan. Sana on nyt k_ssan___kka_aa__kk_ Arvaa seuraava kirjain. h Hyva, se kuuluu sanaan. Sana on nyt k_ssanh__kka_aa__kk_ Arvaa seuraava kirjain. a Kirjain ei esiinny sanassa tai se on arvattu aikaisemmin. Sana on nyt k_ssanh__kka_aa__kk_ Arvaa seuraava kirjain. l Hyva, se kuuluu sanaan. Sana on nyt k_ssanh__kkalaa__kk_ Arvaa seuraava kirjain. t Hyva, se kuuluu sanaan. Sana on nyt k_ssanh__kkalaat_kk_ Arvaa seuraava kirjain. i Hyva, se kuuluu sanaan. Sana on nyt kissanhi_kkalaatikk_ Arvaa seuraava kirjain. o Hyva, se kuuluu sanaan. Sana on nyt kissanhi_kkalaatikko Arvaa seuraava kirjain. e Hyva, se kuuluu sanaan. Voitit! Sana todellakin on kissanhiekkalaatikko [ohjelman suoritus päättyy]
[ohjelman suoritus alkaa] Anna arvattava sana. arvaus Tervetuloa pelaamaan hirsipuuta! Sana on nyt ______ Arvaa seuraava kirjain. y Kirjain ei esiinny sanassa tai se on arvattu aikaisemmin. Sana on nyt ______ Arvaa seuraava kirjain. l Kirjain ei esiinny sanassa tai se on arvattu aikaisemmin. Sana on nyt ______ Arvaa seuraava kirjain. a Hyva, se kuuluu sanaan. Sana on nyt a__a__ Arvaa seuraava kirjain. t Kirjain ei esiinny sanassa tai se on arvattu aikaisemmin. Sana on nyt a__a__ Arvaa seuraava kirjain. f Kirjain ei esiinny sanassa tai se on arvattu aikaisemmin. Sana on nyt a__a__ Arvaa seuraava kirjain. t Kirjain ei esiinny sanassa tai se on arvattu aikaisemmin. Sana on nyt a__a__ Arvaa seuraava kirjain. u Hyva, se kuuluu sanaan. Sana on nyt a__au_ Arvaa seuraava kirjain. p Kirjain ei esiinny sanassa tai se on arvattu aikaisemmin. Sana on nyt a__au_ Arvaa seuraava kirjain. t Kirjain ei esiinny sanassa tai se on arvattu aikaisemmin. Havisit! Oikea sana on arvaus [ohjelman suoritus päättyy]
[ohjelman suoritus alkaa] Anna arvattava sana. bibliografia Tervetuloa pelaamaan hirsipuuta! Sana on nyt ____________ Arvaa seuraava kirjain. e Kirjain ei esiinny sanassa tai se on arvattu aikaisemmin. Sana on nyt ____________ Arvaa seuraava kirjain. u Kirjain ei esiinny sanassa tai se on arvattu aikaisemmin. Sana on nyt ____________ Arvaa seuraava kirjain. v Kirjain ei esiinny sanassa tai se on arvattu aikaisemmin. Sana on nyt ____________ Arvaa seuraava kirjain. j Kirjain ei esiinny sanassa tai se on arvattu aikaisemmin. Sana on nyt ____________ Arvaa seuraava kirjain. k Kirjain ei esiinny sanassa tai se on arvattu aikaisemmin. Sana on nyt ____________ Arvaa seuraava kirjain. i Hyva, se kuuluu sanaan. Sana on nyt _i__i_____i_ Arvaa seuraava kirjain. l Hyva, se kuuluu sanaan. Sana on nyt _i_li_____i_ Arvaa seuraava kirjain. h Kirjain ei esiinny sanassa tai se on arvattu aikaisemmin. Sana on nyt _i_li_____i_ Arvaa seuraava kirjain. s Kirjain ei esiinny sanassa tai se on arvattu aikaisemmin. Havisit! Oikea sana on bibliografia [ohjelman suoritus päättyy]
Värikoodit:
Sininen: Syöte käyttäjältä
Vihreä: Ohjelman tuloste
Punainen: Erityishuomatus: ei tulosteta