PYTHON-PROJEKTITYÖ: Kivi, paperi ,sakset

TEHTÄVÄNANTO

Tehtävänä oli suunnitella tietokoneella pelattava Python-kielinen Kivi-paperi-sakset -peli. 
Pelin ideanan oli että pelaaja pelaa tietokonetta vastaan valitsemalla kivi-paperi-sakset. tietokone valitsee oman vaihtoehtonsa ja ilmoittaa voiton, häviön tai tasapelin.

MITÄ TEHTÄVÄSSÄ ODOTETTIIN:
Ohjelman tulee kysyä pelaajalta minkä aseen hän valitsee, kivi, paperi tai sakset. Ohjelman tulee kertoa pelaajalle minkä aseen kone on valinnut. Tämän jälkeen ohjelman tulee kertoa pelaajalle kumpi voitti.

1. TYÖN VAIHEET

Projektini vaiheet voidaan tiivistetysti esittää näin.
1. Tehtävänannon lukeminen ja projektin aikataulun tarkistaminen (takaraja 13.10.2019)
2.Asiakastyönvaatimusten määrittäminen
3. Lisätiedon etsiminen vastaavistta peleistä, jotka on tehty Python-kielellä.
4. ohjelmoinnin suunnitteleminen
5. Ohjelmoinnin toteutus 
6. Ohjelman testaus ja korjaus
7. Raportin kirjoittaminen

Aloitin projektin muistelemalla millainen peli "Kivi, paperi, sakset" on. Sen jälkeen lähdin etsimään tietoa pelin suunnittelusta Pythonilla.

OHJELMAN SUUNNITTELUN KULKU
Käytin tämän pelin ohjelmointialustana onLine Trinket Python3 -editoria.
Lähdin suunnitelmassani alkuun siitä, mitä tietoja tarvitaan ja mitä pitää syöttää.

- tarvitaan pelaajan valinta , joka saadaan input käskyllä
- tarvitaan koneen valinta
- tarvitaan koneen valinnalle lista vaihtoehdoista
- tarvitaan random-käsky satunnaiselle valinnalle edellä mainitusta listasta

Toiseksi aloin miettiä miten näitä tietoja käytetään, jotta saadaan selville voitto tai häviö.
Helpointa oli ratkaista ensin tasapeli kun pelaajan vaihtoehto = koneen arpoma vaihtoehto
Tämän jälkeen ohjelma vertailee jos - niin rakenteella pelaajan ja koneen tuloksia. Tähän käytin if- ja else if -rakennetta.
Halusin myös, että ohjelma toistaa peliä esim viisi kertaa, mikä toteutui while-rakenteella.

Ohjelman toteutuksen aikana tuli esille seuraavaa:
Ohjelma ottaa vastaan pelaajan valinnan ja arpoo hyvin koneelle oman valinnan. Myös tasapelin ilmoittaminen toimii oikein. If ja Elsif-rakenteissa ohjelma ei kahdessa tapauksessa ilmoita voittoa tai häviötä, vaikka silmukka on joka vaihtoehdossa sama. 

2.MITEN SAMA TEHTÄVÄ VOISI TOIMIA OPPILASTEHTÄVÄNÄ

Tehtävä vaatii Pythonin perustietoja paljonkin, vaikka nätytttää, että siihen aluksi riittää inputin ja printin hallitseminen. Tästä voidaan kuitenkin lähteä hyvin liikkeelle. Jaetaan tehtävä palasiin.
VAIHE1. 
Ajatellaan, että pelaaja syöttää valitsemansa aseen, mutta koneelle valitaan vakio ase. Silloin ei tarvita randomia eikä listaakaan.
Testataan toiminta
VAIHE2.
Lisätään Random ja siihen tarvittava lista
Testataan toiminta.

VAIHE3.
Vertailuun tarvitaan If ja Elsif -rakenne.