Tässä tehtävässä harjoitellaan erityisesti seuraavia asoita:
Tee Eclipseen uusi projekti, jonka nimi on tehtava5_4. Luo sitten tähän projektiin moduli kivipeli ja kirjoita siihen ohjelma, jonka avulla käyttäjä voi pelata kivi-sakset-paperi-peliä.
Pelissä tietokone ensin arpoo yhden vaihtoehdoista kivi, sakset tai paperi, mutta ei kerro valintaansa käyttäjälle. Sen jälkeen käyttäjä valitsee yhden näistä kolmesta esineestä ja kertoo sen tietokoneelle. Sitten ohjelma päättää, kumpi (tietokone vai käyttäjä) voitti pelin. Kivi voittaa sakset, sakset voittavat paperin ja paperi voittaa kiven. Jos molemmat valitsivat saman esineen, peli ei vielä ratkennut, vaan sekä käyttäjä että tietokone tekevät uuden valinnan (katso tarkemmin esimerkkiajosta).
Tietokone arpoo oman valintansa satunnaislukugeneraattorin avulla. Jotta ohjelman tarkastaminen Goblinilla olisi mahdollista, satunnaislukugeneraattorille asetetaan aluksi käyttäjän antama siemenluku. Satunnaislukujen generointia on selitetty tarkemmin kierroksen 3 tehtävän 3 tehtävänannossa. Sinun ei välttämättä tarvitse välittää satunnaisluvuista mitään, sillä kaikki tarpeellinen on jo tehty alla annetussa ohjelmapohjassa. Sinun pitää ainoastaan kirjoittaa muut pyydetyt funktiot sekä pääohjelma, joka kutsuu valmiina annettuja ja kirjoittamiasi funktioita tarvittavalla tavalla.
Alla on pohja, johon voi jatkaa ohjelman kirjoittamista. Ohjelmassa on
määritelty funktiot tee_alustus
ja
arvo_tietokoneen_valinta
. Ne ovat jo valmiita, eikä niihin
tarvitse tehdä lisäyksiä tai muutoksia. Lisäksi ohjelmassa on määritelty
joukko vakioita, joiden avulla voi kätevästi käsitellä ohjelman ja
käyttäjän valintoja nimien avulla. Vakiot on nyt määritelty funktioiden
ulkopuolella, koska samoja vakioita käytetään useammassa funktiossa.
import random # Maaritellaan vakioita, joiden avulla on helppo kasitella tietokoneen # ja kayttajan valintoja seka pelin voittajaa. KIVI = 1 SAKSET = 2 PAPERI = 3 VALINNAT = ["tyhja", "kivi", "sakset", "paperi"] VALINTA_LKM = 3 TIETOKONE = -1 PELAAJA = 1 TASAPELI = 0 # Funktio alustaa tietokoneen arpomisessa kayttaman # satunnaislukugeneraattorin kayttajan antamalla luvulla. def tee_alustus(): print "Tervetuloa pelaamaan kivi-sakset-paperi-pelia." rivi = raw_input("Anna siemenluku tietokoneen arpomista varten.\n") siemenluku = int(rivi) random.seed(siemenluku) # Funktio arpoo ja palauttaa tietokoneen valinnan (kivi, sakset tai # paperi) satunnaislukugeneraattorin avulla. def arvo_tietokoneen_valinta(): return random.randint(1, VALINTA_LKM) # Jatka ohjelman kirjoittamista tahan.
Ohjelmassa on siis valmiina seuraavat funktiot
Sinun tehtävänäsi on kirjoittaa ohjelmaan seuraavat funktiot:
tee_alustus
. Tämän jälkeen pääohjelma kutsuu
funktioita arvo_tietokoneen_valinta
,
pyyda_kayttajan_valinta
ja valitse_voittaja
sekä tulostaa voittajan tai tiedon tasapelistä niin kauan, että peli on
ratkennut. (Katso tarkemmin esimerkkiajosta.)
Ole tarkka siitä, että ohjelmasi tulostus on täsmälleen (välimerkkejä myöten) alla olevan mallin mukainen. Palauta Gobliniin tiedosto kivipeli.py. Kuten funktioiden kuvauksessa on kerrottu, ohjelman pitää pyytää käyttäjältä uutta syötettä, jos tämä valitsee esinettä valitessaan jonkun muun kokonaisluvun kuin 1, 2 tai 3. Sen sijaan ohjelman ei tarvitse varautua siihen, että käyttäjä antaa esimerkiksi desimaaliluvun tai muuten sopimattoman syötteen.
[ohjelman suoritus alkaa] Tervetuloa pelaamaan kivi-sakset-paperi-pelia. Anna siemenluku tietokoneen arpomista varten. 5 Valitse joku seuraavista: 1 = KIVI 2 = SAKSET 3 = PAPERI Anna valintasi. 1 Tietokoneen valinta oli sakset Sinun valintasi oli kivi Sina voitit! [ohjelman suoritus päättyy]
[ohjelman suoritus alkaa] Tervetuloa pelaamaan kivi-sakset-paperi-pelia. Anna siemenluku tietokoneen arpomista varten. 5 Valitse joku seuraavista: 1 = KIVI 2 = SAKSET 3 = PAPERI Anna valintasi. 3 Tietokoneen valinta oli sakset Sinun valintasi oli paperi Tietokone voitti! [ohjelman suoritus päättyy]
[ohjelman suoritus alkaa] Tervetuloa pelaamaan kivi-sakset-paperi-pelia. Anna siemenluku tietokoneen arpomista varten. 101 Valitse joku seuraavista: 1 = KIVI 2 = SAKSET 3 = PAPERI Anna valintasi. 2 Tietokoneen valinta oli sakset Sinun valintasi oli sakset Peli ei viela ratkennut, yrita uudelleen. Valitse joku seuraavista: 1 = KIVI 2 = SAKSET 3 = PAPERI Anna valintasi. 1 Tietokoneen valinta oli kivi Sinun valintasi oli kivi Peli ei viela ratkennut, yrita uudelleen. Valitse joku seuraavista: 1 = KIVI 2 = SAKSET 3 = PAPERI Anna valintasi. 2 Tietokoneen valinta oli paperi Sinun valintasi oli sakset Sina voitit! [ohjelman suoritus päättyy]
[ohjelman suoritus alkaa] Tervetuloa pelaamaan kivi-sakset-paperi-pelia. Anna siemenluku tietokoneen arpomista varten. 79 Valitse joku seuraavista: 1 = KIVI 2 = SAKSET 3 = PAPERI Anna valintasi. 7 Anna valintasi. -1 Anna valintasi. 11 Anna valintasi. 4 Anna valintasi. 3 Tietokoneen valinta oli kivi Sinun valintasi oli paperi Sina voitit! [ohjelman suoritus päättyy]
Värikoodit:
Sininen: Syöte käyttäjältä
Vihreä: Ohjelman tuloste
Punainen: Erityishuomatus: ei tulosteta