Tässä tehtävässä harjoitellaan erityisesti seuraavia asioita:
Tee Eclipseen uusi projekti, jonka nimi on tehtava7_4, ja tähän projektiin moduuli noppatulokset. Kirjoita tähän moduuliin ohjelma, jonka avulla käyttäjä voi laskea erään noppapelin tuloksia.
Tässä noppapelissä on viisi kierrosta. Pelaaja heittää jokaisella kierroksella kahta noppaa. Molempien noppien silmäluvut lasketaan mukaan kierroksen pisteisiin. Jos lisäksi kummassakin nopassa on sama silmäluku, lasketaan lisäksi seuraavan kierroksen ensimmäisen nopan silmäluku myös tämän kierroksen pisteisiin. Poikkeuksena on viimeinen, viides kierros. Jos siinä noppien silmäluku on sama, lasketaan viidennen kierroksen tuloksiin mukaan myös ensimmäisen kierroksen ensimmäisen nopan silmäluku. Pelin yhteispisteet saadaan laskemalla kaikkien kierrosten pisteet yhteen.
Esimerkki: pelaaja heittää ensimmäisellä kierroksella 1 ja 5, toisella kierroksella 3 ja 2, kolmannella kierroksella 5 ja 5, neljännellä kierroksella 4 ja 3 sekä viidennellä kierroksella 2 ja 2. Tällöin pelaaja saa ensimmäiseltä kierrokselta 6 pistettä, toiselta kierrokselta 5 pistettä, kolmannelta kierrokselta 14 pistettä (10 + 4), neljänneltä kierrokselta 7 pistettä ja viidenneltä kierrokselta 5 pistettä (4 + ensimmäisen kierroksen 1). Pelaajan yhteispistemäärä on 37. Ensimmäiseksi nopaksi katsotaan joka kierroksella se, jonka silmäluvun käyttäjä on ilmoittanut ensimmäisenä.
Toinen esimerkki: pelaaja heittää ensimmäisellä kierroksella 2 ja 2, toisella kierroksella 6 ja 6, kolmannella kierroksella 4 ja 1, neljännellä kierroksella 4 ja 5 sekä viidennellä kierroksella 2 ja 6. Tällöin pelaajan pisteet ensimmäiseltä kierrokselta ovat 10 (4 + 6), toiselta kierrokselta 16 (12 + 4), kolmennelta kierrokselta 5, neljänneltä 9 ja viidenneltä 8. Yhteispisteet ovat 48.
Kirjoita ohjelma, joka pyytää käyttäjältä kahden pelaajan nimet ja sitten näiden tulokset noppapelistä. Käyttäjä antaa yhden pelaajan eri kierrosten tulokset peräkkäin niin, että yhden kierroksen silmäluvut annetaan samalla rivillä toisistaan pilkulla erotettuna (katso tarkemmin esimerkkiajosta). Ohjelma laskee molempien pelaajien pisteet ja ilmoittaa ne. Lisäksi ohjelma kertoo, kumpi pelaaja voitti tai että peli päättyi tasapeliin. Katso tarkemmin esimerkkiajoista, missä järjestyksessä eri tietoja pyydetään ja mitä ohjelma tulostaa.
Kun ohjelma on lukenut yhden heittokierroksen tulokset, se tarkistaa välittömästi, että käyttäjä on antanut tasan kaksi eri silmälukua ja että molemmat silmäluvut ovat vähintään 1 ja korkeintaan 6. Jos käyttäjä antaa virheellisen syötteen, ohjelma ilmoittaa virheestä ja pyytää uusia silmälukuja.
Ohjelman pitää käyttää tulosten tallentamiseen listaa, jonka kukin alkio on kaksialkioinen lista, joka sisältää yhden kierroksen molempien heittojen silmäluvut. Esimerkiksi ensimmäisen esimerkin silmäluvut olisi tallennettu listaan
[[1,5], [3,2], [5,5], [4,3], [2,2]](Ohjelmia voidaan tarkistaa käsin jälkikäteen ja Goblinin antamat pisteet nollata, jos ratkaisussa ei ole käytetty tällaista listaa.)
Ohjelman rakennetta ei ole tässä määrätty sen tarkemmin, vaan saat itse miettiä, mitä funktioita tarvitset ohjelmassasi. Älä kuitenkaan kirjoita koko ohjelmaasi yhteen pääohjelmaan, vaan kirjoita funktioita sopivasti.
Testaa taas ohjelmaasi ajamalla sitä itse useita kertoja ennen kuin palautat sen Gobliniin. Palauta Gobliniin tiedosto noppatulokset.py.
[ohjelman suoritus alkaa] Tama on noppapelin tuloslaskuri. Anna 1. pelaajan nimi. Ville Anna 2. pelaajan nimi. Pekka Anna pelaajan Ville tulokset. Anna heiton 1 silmaluvut pilkulla erotettuna. 1,5 Anna heiton 2 silmaluvut pilkulla erotettuna. 3,2 Anna heiton 3 silmaluvut pilkulla erotettuna. 5,5 Anna heiton 4 silmaluvut pilkulla erotettuna. 4,3 Anna heiton 5 silmaluvut pilkulla erotettuna. 2,2 Anna pelaajan Pekka tulokset. Anna heiton 1 silmaluvut pilkulla erotettuna. 2,2 Anna heiton 2 silmaluvut pilkulla erotettuna. 6,6 Anna heiton 3 silmaluvut pilkulla erotettuna. 4,1 Anna heiton 4 silmaluvut pilkulla erotettuna. 4,5 Anna heiton 5 silmaluvut pilkulla erotettuna. 2,6 Pelaaja Ville sai 37 pistetta. Pelaaja Pekka sai 48 pistetta. Pekka voitti! [ohjelman suoritus päättyy]
[ohjelman suoritus alkaa] Tama on noppapelin tuloslaskuri. Anna 1. pelaajan nimi. Maija Anna 2. pelaajan nimi. Liisa Anna pelaajan Maija tulokset. Anna heiton 1 silmaluvut pilkulla erotettuna. 5,4 Anna heiton 2 silmaluvut pilkulla erotettuna. 1,2,3 Virhe silmaluvuissa, anna tulos uudelleen. Anna heiton 2 silmaluvut pilkulla erotettuna. 0,6 Virhe silmaluvuissa, anna tulos uudelleen. Anna heiton 2 silmaluvut pilkulla erotettuna. 1 Virhe silmaluvuissa, anna tulos uudelleen. Anna heiton 2 silmaluvut pilkulla erotettuna. 1,7 Virhe silmaluvuissa, anna tulos uudelleen. Anna heiton 2 silmaluvut pilkulla erotettuna. 5,5 Anna heiton 3 silmaluvut pilkulla erotettuna. 6,6 Anna heiton 4 silmaluvut pilkulla erotettuna. 2,5 Anna heiton 5 silmaluvut pilkulla erotettuna. 4,6 Anna pelaajan Liisa tulokset. Anna heiton 1 silmaluvut pilkulla erotettuna. 1,3 Anna heiton 2 silmaluvut pilkulla erotettuna. 4,2 Anna heiton 3 silmaluvut pilkulla erotettuna. 3,5 Anna heiton 4 silmaluvut pilkulla erotettuna. 6,1 Anna heiton 5 silmaluvut pilkulla erotettuna. 4,2 Pelaaja Maija sai 56 pistetta. Pelaaja Liisa sai 31 pistetta. Maija voitti! [ohjelman suoritus päättyy]
[ohjelman suoritus alkaa] Tama on noppapelin tuloslaskuri. Anna 1. pelaajan nimi. Maija Anna 2. pelaajan nimi. Pekka Anna pelaajan Maija tulokset. Anna heiton 1 silmaluvut pilkulla erotettuna. 1,2 Anna heiton 2 silmaluvut pilkulla erotettuna. 4,1 Anna heiton 3 silmaluvut pilkulla erotettuna. 2,4 Anna heiton 4 silmaluvut pilkulla erotettuna. 5,2 Anna heiton 5 silmaluvut pilkulla erotettuna. 3,6 Anna pelaajan Pekka tulokset. Anna heiton 1 silmaluvut pilkulla erotettuna. 5,1 Anna heiton 2 silmaluvut pilkulla erotettuna. 2,3 Anna heiton 3 silmaluvut pilkulla erotettuna. 4,5 Anna heiton 4 silmaluvut pilkulla erotettuna. 1,2 Anna heiton 5 silmaluvut pilkulla erotettuna. 4,3 Pelaaja Maija sai 30 pistetta. Pelaaja Pekka sai 30 pistetta. Tasapeli! [ohjelman suoritus päättyy]
Värikoodit:
Sininen: Syöte käyttäjältä
Vihreä: Ohjelman tuloste
Punainen: Erityishuomatus: ei tulosteta