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.
 

2.1 KiB

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