Ruby fundamentals through coding exercises
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

78 lines
2.1 KiB

4 years ago
  1. ## 5 Numeronarvauspeli
  2. **Tehtävä:**
  3. 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.
  4. 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".
  5. Toteuta ohjelmasi siten, että käyttäjän antamat virhesyötteet kuten kirjaimet tai erikoismerkit eivät aiheuta ohjelman kaatumista.
  6. Toimiessaan oikein ohjelma tulostaa seuraavaa:
  7. Example output:
  8. ```
  9. Arvaa luku väliltä 0-99.
  10. Arvaus: 10
  11. Haettu luku on suurempi.
  12. Arvaus: 30
  13. Haettu luku on pienempi.
  14. Arvaus: 20
  15. Arvasit oikein!
  16. Pelataanko uudestaan? (k/e): e
  17. ```
  18. **Vastaus**
  19. ```
  20. #!/usr/bin/env ruby
  21. # coding: utf-8
  22. $_lukuVali = [0, 99]
  23. def arvaaLuku
  24. arvottuLuku = rand($_lukuVali[0]...$_lukuVali[1])
  25. puts "Arvaa luku väliltä #{$_lukuVali[0]}-#{$_lukuVali[1]}."
  26. while true
  27. print "Arvaus: "
  28. begin
  29. arvaus = Integer(gets.chomp)
  30. rescue ArgumentError
  31. warn "Anna kokonaisluku"
  32. retry
  33. end
  34. case
  35. when arvaus < arvottuLuku
  36. puts "Haettu luku on suurempi."
  37. when arvaus > arvottuLuku
  38. puts "Haettu luku on pienempi."
  39. else
  40. puts "Arvasit oikein!"
  41. begin
  42. print "Pelataanko uudestaan? (k/e): "
  43. vastaus = String(gets.strip.chomp)
  44. case vastaus
  45. when "k"
  46. arvottuLuku = rand($_lukuVali[0]...$_lukuVali[1])
  47. next
  48. when "e"
  49. Process.exit(0)
  50. else
  51. throw ArgumentError
  52. end
  53. rescue ArgumentError
  54. warn "Anna joko 'k' (kyllä) tai 'e' (ei)"
  55. retry
  56. end
  57. end
  58. end
  59. end
  60. arvaaLuku
  61. ```