Ich versuche herauszufinden, warum meine While-Schleife nicht beendet wird, wenn ich es will. Grundsätzlich mache ich ein einfaches Spiel, bei dem 2 Spieler Wörter spielen und in jeder Runde Punkte bekommen, wenn sie ein erlaubtes Wort spielen. Sobald ein Spieler ein Wort spielt, das mit einem bestimmten Charakter endet, verliert dieser Spieler das Spiel.Verstehen Ruby While-Loops
Die Art, wie ich es gemacht habe, ist ein Wert auf false (vor der Schleife), und verwenden Sie dann eine while-Schleife, um das Spiel so lange laufen zu lassen, bis ein Spieler ein verlierendes Wort eingibt. ohne zu Spieler 2 zu gehen (was es im Moment tut). Hier ist im Wesentlichen, was ich habe jetzt (an dieser Stelle ich gerade versucht, die grundlegende Logik in Gang zu bringen):
player1_count = 0
player2_count = 0
continue = true
while continue
## get input
if player1_input[-1] == losing_char
continue = false
else
player1_count += 1
end
##do the same for player 2
## get input
if player2_input[-1] == losing_char
continue = false
else
player2_count += 1
end
end
Das Problem, das ich habe, ist, dass ich erwartet, dass, wenn weiterhin wurde auf false, die Schleife würde sofort beendet werden, während sie stattdessen bis zum Ende des aktuellen Durchlaufs durch die Schleife weiterläuft und Spieler 2 ebenfalls eingibt (wenn Spieler 1 verloren hat), was ich nicht will. Ich vermute, dass ich entweder eine falsche Vorstellung davon hatte, wie Loops in Ruby funktionieren, oder ob ich irgendwo den Loop falsch geschrieben habe.
Gibt es eine Möglichkeit, die While-Schleife zu schreiben, wo es weitergehen wird, bis meine Variable auf false gesetzt ist, und habe es sofort verlassen, wie ich hoffe?
Sie könnten die mehr idiomatische 'loop do' anstelle von' wahr 'verwenden. Und ich würde "else" entfernen und einen Modifikator verwenden - wenn stattdessen, d. H. 'Break if player1_input [-1] == loose_char'. – Stefan
In der Tat würden diese beide idiomatischer sein, aber ich wollte es einfach halten, da OP neu zu Rubin erscheint –