1. Los gehts!


Wir werden zusammen ein Nummern-Rate-Spiel in Ruby programmieren.

  • Gehe zum online Code Editor Repl.
  • Schreibe folgendes im Editor:
    
puts "Bitte gebe eine Nummer zwischen 0 und 100 ein"
    
  

Du kannst das Ruby Programm mittels dem run Button im Editor laufen lassen. Es sollte dann wie folgt aussehen:


2. Zufällige Nummer generieren


Wir werden nun eine zufällige Nummer generieren und diese der Variable random_number zuweisen.

    
random_number = rand(0..100)
    
  

Aufgabe

Wie können wir andere potenzielle zufällige Zahlen generieren?

  • Schaue dir die Beispiele unten an.
              
      rand(5..9)    # => eine Zahl von [5, 6, 7, 8, 9]
      rand(5...9)  # => eine Zahl von [5, 6, 7, 8]
              
            
  • Aufgrund der Infos oben, finde heraus, wie du bestimmen kannst, dass nur Zahlen zwischen 0 und 99 ausgewählt werden, ohne dass du in der rand Methode die Nummer 100 durch 99 ersetzt.
  • Wenn du fündig geworden bist, passe die rand Methode in deinem Code dementsprechend an.
  • Passe die Aufforderung an den Spieler (puts "Bitte gebe eine Nummer...") dementsprechend an.

3. Benutzereingabe


Wir wollen, dass der Benutzer eine Zahl eintippen kann. Diese speichern wir dann in der guess Variable.
Anschliessend zeigen wir dem Benutzer die Nummer, die sie oder er eingetippt hat.

  • Füge den Code ans Ende deines bisehringen Codes hinzu.

guess = gets.chomp.to_i
puts "Du hast die Nummer #{guess} eingegeben. Die zufällig generierte Nummer war: #{random_number}."


  • Lass das Programm wieder laufen, indem du auf den run Button im Editor klickst.
  • Nachdem das Programm den Benutzer dazu auffordert eine Nummer einzugeben, muss zwingend eine Nummer eingegeben werden und mit der Enter Taste auf dem Keyboard bestätigt werden. Anderenfalls läuft das Programm nicht weiter.

Das Programm sollte in etwa so aussehen nachdem du es hast ablaufen lassen.

Aufgabe

  • Bei der Benutzereingabe haben wir gets.chomp noch .to_i hinzugefügt. Finde anhand der Ruby Dokumentation heraus was die to_i Methode für eine Auswirkung hat.

4. Benutzereingabe mit generierter Nummer vergleichen


Um aus unserem Programm ein Spiel zu machen und dem Benutzer die Möglichkeit zu geben, solange Nummern einzutippen, bis sie oder er die richtige Nummer errät, müssen wir die Nummer des Benuzters mit der zufällig generierten vergleichen. Dafür verwenden wir einen if conditional (Bedingte Anweisung) sowie einen loop.

  • Füge einen loop do end hinzu.
  • Im Loop fügen wir unsere if conditional im Zusammenspiel mit dem Keyword break hinzu.
  • Dann zeigen wir dem Benutzer die Nummer, die sie oder er eingetippt hat mit dem Hinweis, dass nochmals geraten werden muss, da die Nummer nicht korrekt war.
  • Damit der Benutzer wieder eine Nummer eintippen kann, müssen wir innerhalb unseres loop do nochmals gets.chomp.to_i als Schritt einfügen.
  • Als letzter Schritt fügen wir den Text für den Fall ein, dass der Benutzer die richtige Nummer erraten hat.

puts "Bitte gebe eine Nummer zwischen 0 und 99 ein"
random_number = rand(0...100)
guess = gets.chomp.to_i

loop do
  break if guess == random_number
  puts "Du hast die Nummer #{guess} eingegeben. Deine Nummer entspricht nicht der zufällig generierte. Versuchs nochmal."
  guess = gets.chomp.to_i
end

puts "Bravo, du hast gewonnen!"


Aufgabe

  • Lösche das .to_i von guess = gets.chomp.to_i und lass das Programm laufen. Was geschieht dann?

5. Die Rückmeldung ausbauen


Nun bauen wir die Rückmeldung an den Benutzer aus. D.h. wir lassen den Benutzer wissen, ob die von ihr oder ihm geschätze Zahl korrekt, zu hoch, zu niedrig oder negativ ist.

Dafür werden wir natürlich die uns bereits bekannten if conditionals einsetzen.
  • Die erste bedingte Anweisung überprüft, ob die vom Benutzer angegebene Zahl negativ d.h. kleiner 0 ist. Falls ja, wird dem Benutzer mitgeteilt, dass eine positive Zahl eingegeben werden muss.

puts "Bitte gebe eine Nummer zwischen 0 und 99 ein"
random_number = rand(0...100)
guess = gets.chomp.to_i

loop do
  break if guess == random_number

  if guess < 0
    puts "Bitte gib eine positive Nummer ein."
  end

  guess = gets.chomp.to_i
end

puts "Bravo, du hast gewonnen!"


Aufgabe

Füge drei weitere bedingte Anweisungen dem Programm hinzu und verwende dafür elsif.
Unten findest du den Text für die Rückmeldung, für den Fall, dass die bedingte Anweisung eintritt.

  • Wenn die Nummer grösser als 99 ist: puts "Bitte gib eine Nummer unter 99 ein.".
  • Wenn die Nummer kleiner als die zufällig generierte Nummer ist: puts "Deine Nummer ist zu tief. Versuchs nochmal.".
  • Wenn die Nummer grösser als die zufällig generierte Nummer ist: puts "Deine Nummer ist zu hoch. Versuchs nochmal.".

Extra

Wie wäre es mit einer Begrüssung des Benutzers? Füge folgendes zu deinem Programm hinzu:

  • Als erstes forderst du den Benutzer dazu auf, seinen Namen anzugeben. z.B. Könntest du schreiben: puts "Wie heisst du?".
  • Vergiss nicht, den Namen des Benutzers in einer Varbiable zu speichern.
  • Anschliessend kannst du den Benutzer mit Namen begrüssen und gleich auffordern, die zufällig generierte Nummer zu erraten: puts "Hallo (Name des Benutzers). Bitte gebe eine Nummer zwischen 0 und 100 ein".

Hast du weitere Ideen für unser Nummern-Rate-Spiel? Nur zu, probier sie aus.

Falls du dein Spiel aufbewahren möchtest, kannst du bei Repl kostenlos ein Benutzerkonto erstellen.