3.3 Sovelluksia (display-read)
Funktioita, ehto- ja valintalauseita, rekursiivisia funktioita, listojen käyttämistä sekä käyttäjän kanssa kommunikointia voi harjoitella myös teachpacks/display-read-kirjaston avulla. Se on toteutettu 2htdp/universe:n avulla ja tarjoaa helpon tavan pyytää käyttäjää antamaan vastauksia valmiin tekstieditorin avulla tai tekemään valintoja annetuista vaihtoehdoista nuolinäppäinten avulla. Tehtävissä on apua myös lokaaleista muuttujista, jotka määritellään let:in avulla, joten kannattaa opetella käyttämään myös niitä.
(require teachpacks/display-read)
WeScheme:ssä ei tarvita paketin asennusta. Huomaa myös, että WeSchemessä kirjastolla on eri nimi.
3.3.1 Tarina
Tarinatehtävän idea on vanha aukkotarinaleikki, jossa pelaajaa pyydetään antamaan tietynlaisia sanoja tietyissä taivutusmuodoissa ja ne sijoitetaan valmiiseen tarinaan omille paikoillensa. Koska pelaaja ei tiedä tarinaa etukäteen, lopputulos on usein hilpeyttä herättävä. Tässä tehtävässä käytämme display-read-funktiota sanojen kysymiseen käyttäjältä. Sinun tehtäväsi on jatkaa mallikoodia ja keksiä tarina. Tämän harjoituksen avulla on helppo tutustua display-read - kirjaston funktioihin. Voit halutessasi laittaa koodin pyörimään silmukassa, eli lisätä siihen rekursiivisen kutsun, jolloin sanat kysytään yhä uudelleen ja uudelleen.
Avaa tästä tehtävätiedosto:
| ||
|
Jos käytät WeScheme:ä ja haluat tallentaa työsi, tarvitset Google-tunnukset. Kirjaudu ENSIN sisään WeScheme:en, ja tule vasta jälkeen avaamaan tehtävälinkki.
Tässä harjoituksessa saatat tarvita seuraavia Racket-kielen tai display-read-kirjaston funktioita:
|
|
3.3.2 Lähtölaskenta
Tee ohjelma, joka laskee kymmenestä nollaan (10, 9, 8, ..., 0) ja ilmoittaa laskurin arvon käyttäjälle display-read -kirjaston avulla (tutustu siihen Koodarin käsikirjan avulla).
Tässä harjoituksessa saatat tarvita seuraavia Racket-kielen tai display-read-kirjaston funktioita:
|
|
3.3.3 Laskuautomaatti
Laskuautomaatti kysyy käyttäjältä lukuja ja suorittaa niiden perusteella laskutehtävän ja näyttää vastauksen käyttäjälle. Jos käyttäjä ei syötä laskun kannalta järkeviä arvoja, annetaan virheilmoitus.
Voit käyttää tässä jo aikaisemmin koodaamaasi laskufunktiota (pinta-ala, taksimatkalasku, kolmion kulmien laskeminen tms.)
Käytä display-read-number-funktiota lukujen kysymiseen ja display-read funktiota merkkijonojen kysymiseen. Testaa lukujen järkevyys ennen niillä laskemista! Ilmoita lopputulos käyttäjälle display-value:n tai display-info:n avulla. Saatat joutua miettimään myös pyöristämistä, sekä yksiköiden liittämistä vastaukseen. Jotta saat automaattilaskurin toimimaan useamman kuin yhden kerran, tee funktiostasi rekursiivinen. Tallenna siinä tapauksessa käyttäjänä antamat tiedot lokaaleihin muuttujiin (let).
Avaa tästä tehtävätiedosto:
| ||
|
Tässä harjoituksessa saatat tarvita seuraavia Racket-kielen, display-read tai math-utils -kirjaston funktioita (saatat tarvita muitakin, riippuen laskutehtävästäsi!):
|
|
|
| |||||
|
|
|
| |||||
|
|
|
| |||||
|
|
|
| |||||
|
|
|
| |||||
|
|
|
| |||||
|
|
|
|
3.3.4 Kertotaulupeli
Kertotaulupeli arpoo kaksi lukua väliltä 1-10 ja kysyy käyttäjältä mikä on niiden kertolaskun tulos. Jos vastaus on oikein, ohjelma kertoo siitä käyttäjälle ja lisää pisteitä. Voit rajoittaa peli kierrokset joko 10 pisteeseen tai 10 laskuun.
Käytä display-read-number-funktiota lukujen kysymiseen. Testaa lukujen järkevyys ennen niiden käyttämistä! Ilmoita lopputulos käyttäjälle display-value:n tai display-info:n avulla. Arvotut ja käyttäjän antamat luvut kannattanee tallentaa silmukkafunktion lokaaleihin muuttujiin (let). Katso mallia rekursiivisesta funktiosta automaatilaskurin tehtävätiedostosta. Voit tehdä myös jakolaskupelin jne.
Tässä harjoituksessa saatat tarvita seuraavia Racket-kielen, display-read -kirjaston funktioita:
|
|
|
| |||||
|
|
|
| |||||
|
|
|
| |||||
|
|
|
| |||||
|
|
|
|
3.3.5 Arvaa numero - peli
Tietokone arpoo numeron, ja pyytää käyttäjää arvaamaan mikä se on. Käyttäjälle kerrotaan miltä väliltä numero on, ja jokaisen arvauksen jälkeen annetaan vihje siitä onko arvaus liian pieni vai liian suuri. Kun oikea arvaus on löytynyt kerrotaan montako kierrosta arvaamiseen meni.
Käytä display-read-number-funktiota arvausten kysymiseen. Testaa saadun arvon järkevyys ennen sen käyttämistä! Ilmoita vihje käyttäjälle display-value:n tai display-info:n avulla. Käyttäjän arvaus kannattanee tallentaa silmukkafunktion lokaaliin muuttujaan (let). Katso mallia rekursiivisesta funktiosta automaatilaskurin tehtävätiedostosta.
Tässä harjoituksessa saatat tarvita seuraavia Racket-kielen tai display-read -kirjaston funktioita:
|
|
|
| |||||
|
|
|
| |||||
|
|
|
| |||||
|
|
|
| |||||
|
|
|
|
3.3.6 Tunnistuspeli
Tunnistuspeli on tietokilpailupeli, jossa käyttäjälle esitetään kysymyksiä joko kuvien ja/tai tekstin muodossa. Ohjelma tarkistaa vastauksen oikeellisuuden ehtolauseen avulla ja kertoo käyttäjälle onko hänen antamansa vastaus oikein vai väärin.
Voit hakea kuvat netistä ja lisätä ne koodiin valikosta: Insert->Images. Kannattaa valita pienikokoisia kuvia tai pienentää ne esim. GIMP-ohjelmalla.
Käytä display-read-funktiota vastauksen kysymiseen. Se avaa editori-ikkunan, johon käyttäjä voi kirjoittaa vastauksensa (merkkijono). Teksti hyväksytään editorissa painamalla <enter>. Kun olet tutkinut vastauksen oikeellisuuden, ilmoita siitä käyttäjälle display-value:n tai display-info:n avulla.
Muodosta kysymyksistä ja oikeista vastauksista lista, jota rekursiivinen funktiosi lukee kysymys- ja vastauspari kerrallaan. Pelaajan saamat pisteet pysyvät tallessa funktiosi parametrissä.
Voit parantaa peliäsi niin, että vastaukseksi kelpaavat myös sanan synonyymit sekä isoilla ja pienillä kirjaimilla kirjoitetut vastaukset.
Avaa tästä tehtävätiedosto:
| ||
|
Tässä harjoituksessa saatat tarvita seuraavia Racket-kielen tai display-read-kirjaston funktioita:
|
|
|
| |||||
|
|
|
| |||||
|
|
|
| |||||
|
|
|
|
3.3.7 Valintapeli
Valintapeli on tietokilpailupeli, jossa käyttäjälle esitetään kysymyksiä joko kuvien ja/tai tekstin muodossa. Pelaaja valitsee vastauksensa nuolinäppäinten avulla listasta vaihtoehtoja. Vaihtoehdot voivat olla joko lukuja, merkkijonoja tai kuvia. Ohjelma tarkistaa vastauksen oikeellisuuden ehtolauseen avulla ja kertoo käyttäjälle onko hänen antamansa vastaus oikein vai väärin.
Voit hakea kuvat netistä ja lisätä ne koodiin valikosta: Insert->Images. Kannattaa valita pienikokoisia kuvia tai pienentää ne esim. GIMP-ohjelmalla.
Käytä display-select-funktiota vastauksen kysymiseen. Se avaa valintaikkunan, jossa vastausvaihtoehdot näkyvät kysymyksen alapuolella. Vaihtoehdot annetaan listana (list). Valinta hyväksytään painamalla <enter>. Kun olet tutkinut vastauksen oikeellisuuden, ilmoita siitä käyttäjälle display-value:n tai display-info:n avulla. Koska vaihtoehdot voivat olla joko merkkijonoja, lukuja tai kuvia, muista käyttää oikeaa vertailuoperaattoria: merkkijonoille (string=?), luvuille (=) ja kuville (image=?).
Muodosta kysymyksistä, vaihtoehdoista sekä oikeista vastauksista lista, jota rekursiivinen funktiosi lukee kysymys- ja vastauspari kerrallaan. Pelaajan saamat pisteet pysyvät tallessa funktiosi parametrissä.
Avaa tästä tehtävätiedosto:
| ||
|
Tässä harjoituksessa saatat tarvita seuraavia Racket-kielen tai display-read-kirjaston funktioita:
|
|
|
| |||||
|
|
|
| |||||
|
|
|
| |||||
|
|
|
|