Tee Eclipseen uusi projekti, jonka nimi on tehtava5_4, ja tähän projektiin moduuli noppapeli.
Kirjoita moduuliin noppapeli ohjelma, jonka avulla käyttäjä voi pelata alla annetun kuvauksen mukaista noppapeliä. Tehtävän yksinkertaistamiseksi tässä pelissä on vain yksi pelaaja, joka heittää noppaa kolme kertaa ja saa niistä pisteet alla annetun kuvauksen mukaan.
Pelaaja heittää noppaa kolme kertaa. Näiden kolmen heiton tulokset muodostavat yhdessä tulosrivin. Tulosrivistä saa pisteitä seuraavien sääntöjen mukaisesti:
Noppien heittäminen tehdään ohjelmassa satunnaislukujen avulla. Voit lukea satunnaisluvuista enemmän tehtävän 3.3 tehtävänannosta. Alla on annettu valmiina koodi, joka tekee satunnaislukujen arpomista varten tarvittavat alustukset (funktio alusta_noppa()) ja heittää noppaa yhden kerran (funktio heita_noppaa()). Voit liittää koodin tällaisenaan oman moduulisi alkuun ja jatkaa ohjelman kirjoittamista sen jälkeen.
import random # Funktio pyytaa kayttajalta siemenluvun nopan heittamista kuvaavaa # satunnaislukugeneraattoria varten. Tama ei olisi muuten valttamatonta, # mutta nain ohjelma saadaan haluttaessa toimimaan eri suorituskerroilla # samalla tavalla tarkistuksia varten. def alusta_noppa(): siemenluku = int(input("Anna siemenluku nopan alustamiseksi.\n")) random.seed(siemenluku) # Funktio matkii nopan heittamista generoimalla satunnaisluvun valilta 1-6. # Funktio palauttaa arvonaan nopanheiton tuloksen. def heita_noppaa(): SIVULKM = 6 return random.randint(1, SIVULKM) # Jatka ohjelman kirjoittamista tahan.
Ohjelmassa on siis valmiina seuraavat funktiot
Sinun tehtävänäsi on kirjoittaa ohjelmaan seuraavat funktiot:
Voit tutkia sitä, onko listassa täsmälleen kaksi samaa lukua esimerkiksi
käyttämällä hyväksi Pythonin valmista metodia count
,
joka palauttaa tiedon
siitä, kuinka monta kertaa parametrina annettu alkio esiintyy listassa.
Esimerkiksi koodi
lista = [4, 5, 4] print(lista.count(4))tulostaa luvun 2.
Kun pitää tutkia, voiko listassa olevista luvuista muodostaa suoran, on
yksi vaihtoehto tehdä listasta kopio ja järjestää tämä kopiolista
Pythonin valmiilla metodilla sort
. Tästä listasta on
helppo tutkia, ovatko luvut siinä kasvavassa suuruusjärjestyksessä
niin, että alkiot kasvavat aina yhdellä.
Ohjelman ei tarvitse varautua virhetilanteisiin.
Ole tarkka siitä, että ohjelmasi tulostus on täsmälleen (välimerkkejä ja tyhjiä rivejä myöten) alla olevan mallin mukainen. Goblinin tarkistus menee helposti sekaisin, jos tulostuksessasi on eri määrä rivejä kuin mallitulostuksessa.
Tarkistusten (kaksi samaa, kolme samaa ja suora) testauksessa voi olla järkevää korvata väliaikaisesti noppien heittäminen sillä, että annat ohjelmalle suoraan erilaisia tulosrivejä. Näin pääset testaamaan eri tarkistusten toimimisen ilman, että sinun pitää löytää sopiva satunnaisluku jokaisen erilaisen rivin generoimiseen. Lisää kuitenkin noppien heittämien ohjelmaan takaisin ennen kuin palautat sen Gobliniin.
Palauta Gobliniin tiedosto noppapeli.py.
Pelistä saa mielekkäämmän, jos siihen lisää myös tietokoneen tai toisen pelaajan noppien heittämisen. Lisäksi peliä voi laajentaa siten, että pelataan useita kierroksia ja kierrosten yhteispistemäärä ratkaisee voittajan. Näitä ominaisuuksia ei ole kuitenkaan vaadittu tässä tehtävässä, jotta tehtävän työmäärä pysyisi järkevänä. (Laajennettua ohjelmaa ei voi myöskään palauttaa Goblinin tarkistettavaksi.)
[ohjelman suoritus alkaa] Tervetuloa pelaamaan noppapelia! Anna siemenluku nopan alustamiseksi. 11 Paina enteria heittaaksesi noppia. Heittotuloksesi on [4, 5, 4] Hyva: tulosrivissasi on kaksi samaa silmalukua. Sarja [4, 5, 4] antaa 10 pistetta. [ohjelman suoritus päättyy]
[ohjelman suoritus alkaa] Tervetuloa pelaamaan noppapelia! Anna siemenluku nopan alustamiseksi. 15 Paina enteria heittaaksesi noppia. Heittotuloksesi on [2, 1, 5] Tulosrivisi ei sisalla samoja silmalukuja tai suoraa. Sarja [2, 1, 5] antaa 5 pistetta. [ohjelman suoritus päättyy]
[ohjelman suoritus alkaa] Tervetuloa pelaamaan noppapelia! Anna siemenluku nopan alustamiseksi. 109 Paina enteria heittaaksesi noppia. Heittotuloksesi on [3, 2, 4] Hyva: tulosrivissasi on suora. Sarja [3, 2, 4] antaa 21 pistetta. [ohjelman suoritus päättyy]
[ohjelman suoritus alkaa] Tervetuloa pelaamaan noppapelia! Anna siemenluku nopan alustamiseksi. 155 Paina enteria heittaaksesi noppia. Heittotuloksesi on [5, 5, 5] Hyva: tulosrivissasi on kolme samaa silmalukua. Sarja [5, 5, 5] antaa 41 pistetta. [ohjelman suoritus päättyy]
Värikoodit:
Sininen: Syöte käyttäjältä
Vihreä: Ohjelman tuloste
Punainen: Erityishuomatus: ei tulosteta