|
|
- ## 5 Numeronarvauspeli
-
- **Tehtävä:**
-
- Luvun viimeinen tehtävä on kertaustehtävä, jossa rakennetaan numeronarvauspeli. Tee ohjelma, joka arpoo luvun väliltä 0-99 ja pyytää käyttäjää arvaamaan annettu luku.
-
- Mikäli käyttäjä arvaa yläkanttiin, tulostetaan "Haettu luku on pienempi", jos alakanttiin niin "Haettu luku on suurempi". Jos pelaaja arvaa oikein, tulostetaan "Arvasit oikein!" ja kysytään "Pelataanko uudestaan? (k/e): ". Alussa ohjelma antaa yleiset ohjeet muodossa "Arvaa luku väliltä 0-99".
-
- Toteuta ohjelmasi siten, että käyttäjän antamat virhesyötteet kuten kirjaimet tai erikoismerkit eivät aiheuta ohjelman kaatumista.
-
- Toimiessaan oikein ohjelma tulostaa seuraavaa:
-
- Example output:
-
- ```
- Arvaa luku väliltä 0-99.
- Arvaus: 10
- Haettu luku on suurempi.
- Arvaus: 30
- Haettu luku on pienempi.
- Arvaus: 20
- Arvasit oikein!
- Pelataanko uudestaan? (k/e): e
- ```
-
- **Vastaus**
-
- ```
- #!/usr/bin/env ruby
- # coding: utf-8
-
- $_lukuVali = [0, 99]
-
- def arvaaLuku
-
- arvottuLuku = rand($_lukuVali[0]...$_lukuVali[1])
-
- puts "Arvaa luku väliltä #{$_lukuVali[0]}-#{$_lukuVali[1]}."
-
- while true
-
- print "Arvaus: "
- begin
- arvaus = Integer(gets.chomp)
- rescue ArgumentError
- warn "Anna kokonaisluku"
- retry
- end
-
- case
- when arvaus < arvottuLuku
- puts "Haettu luku on suurempi."
- when arvaus > arvottuLuku
- puts "Haettu luku on pienempi."
- else
- puts "Arvasit oikein!"
- begin
- print "Pelataanko uudestaan? (k/e): "
- vastaus = String(gets.strip.chomp)
- case vastaus
- when "k"
- arvottuLuku = rand($_lukuVali[0]...$_lukuVali[1])
- next
- when "e"
- Process.exit(0)
- else
- throw ArgumentError
- end
- rescue ArgumentError
- warn "Anna joko 'k' (kyllä) tai 'e' (ei)"
- retry
- end
- end
- end
- end
-
- arvaaLuku
- ```
|