Galgenraten bei Ruby programmieren?

... komplette Frage anzeigen

3 Antworten

Als erstes solltest du dich allgemein mit "Programmieren" beschäftigen.

Von nichts zu einem "Programm" ist es ein noch weiterer Weg als vom Anfänger.

Je nachdem welche Sprache du verwendet willst, solltest du dich dort erstmal mit der Command Bibliothek bekannt machen und einfache Dinge wie Textausgaben lernen. 

Hast du die Grundlagen ausführlich drin und kannst sie aus dem FF, kannst du kleine Schritte nach vorne gehen.

Nichts ist stressiger als einen fehlerhaften Code zu haben. Noch schlimmer ist es, wenn man selber den Fehler nicht finden kann, weil man nicht mal weiß ob die oder die Zeile überhaupt einen Fehler hat.

MfG. Der IT-Support

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von ehergeizW
03.08.2016, 19:45

ich habe mich mit den grundlagen beschäftigt, obwohl ich die schleifen nicht so verstehe

0

Versuch doch mal diesen Code auszuführen und weiterzuführen und zu verstehen:

puts "Galgenraten"

print "Das Wort soll erraten werden: "
wort = gets.chomp.upcase

versuche = 5

loop do
loop do
print "Buchstabe: "
@buchstabe = gets.chomp.upcase
if @buchstabe.length>1
puts "Nur ein Buchstabe!"
else
break
end
end

if wort.include?(@buchstabe)
puts "Dieser Buchstabe ist im Wort!"
else
versuche -= 1
if versuche==0
puts "Du hast es nicht geschafft das Wort zu erraten."
exit
else
puts "Falsch. Noch #{versuche} Versuche."
end
end
end

Ist jetzt nur ein Schleifen Programm geht aber natürlich auch OOP Form.

Antwort bewerten Vielen Dank für Deine Bewertung

will mit if anfangen, aber irgendwie funktioniert nicht.

Und was genau funktioniert nicht? Bitte poste zuzüglich deinen Code.

Im Übrigen beginnst du scheinbar schon falsch. Denn Programmierung beginnt nicht mit - einfach mal drauf losschreiben und im weiteren Verlauf entdecken, wie es eigentlich gehen könnte. Für Probleme werden Algorithmen entwickelt und diese dann programmiert.

Das bedeutet, du machst dir erst einmal Gedanken darüber, wie dein Spiel ablaufen soll, welche Schritte Nutzer und Verarbeiter (das Programm) machen und wie du diese realisieren kannst. Bsp.:

1. initialisiere Spiel
1.1 generiere Zufallswort
1.2 zeige Felder
2. starte Spiel
2.1 Spielzug (Eingabe User)
2.2 Prüfe Spielzug
2.2.1 Suche ob Buchstabe in Wort
2.2.2 Wenn vorhanden - aktualisiere Felder
2.2.3 Wenn nicht vorhanden - aktualisiere Galgen 
3. beende Spiel
3.1 Wenn Galgen voll - Game over
3.2 Wenn Felder voll (und Galgen nicht) - Win

Teile danach dein Programm in Funktionen auf. Bsp.:

def generateRandomString
  # ....
end

def gameOver # ... end
def checkUserinput # ... end
def printGameBoard # ... end

(Das wären natürlich noch nicht längst alle Funktionen).

Jede Funktion erfüllt genau eine Aufgabe. Später greifen sie ineinander. Eine Funktion initializeGame könnte bspw. erst das Lösungswort generieren (generateRandomString) und danach die Felder zeichnen (printGameBoard).

Lösungswort und aktuellen Stand würde ich wahrscheinlich in jeweilige Char-Arrays schreiben. Letzteres Array hätte an den Stellen, die noch nicht vom Spieler aufgelöst wurden, jeweils einen 0-Wert.

Eine andere Möglichkeit wäre die Nutzung eines Hashes. Um es an dieser Stelle eine Erklärung einfach zu halten: Hashes speichern Elemente, mit einem Key und einem Value. Arrays haben an sich ebenso einen Key - ihren Index. Doch beim Hash kann der Key auch andere Datentypen als nur Integer annehmen. Angepasst an das Spiel würde ein Hash vom Inhalt so aussehen:

Spielstand: h_ll_
Hash: ("h" => true, "a" => false, "l" => true, "l" => true, "o" => false)

Erratene Buchstaben bekämen den Wert true, alle anderen sind noch false.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von regex9
04.08.2016, 03:00

Korrektur bezügl. des Hash-Inhalts: Der Key "l" kommt natürlich nur einmal vor, und nicht, wie oben geschrieben, zweimal.

Hash: { "h" => true, "a" => false, "l" => true, "o" => false }
0