Ich schreibe ein Ruby-Programm und stecke fest, daher werde ich hier eine Frage stellen.
Derzeit arbeite ich an der Erstellung eines Dragon Quest-Programms, das häufig als Beispiel für Rubys Programm im Internet erscheint.
Die Spezifikationen, die ich implementieren möchte, sind wie folgt.
Es ist ungefähr so.
Ich kann keinen Prozess schreiben, der die Anzahl der Angriffe von mir (Krieger) ansammelt, während ich den Prozess in der while-Anweisung wiederhole.
Speziell, [Runde 1] Vorher: Kriegerangriff. 2 Schleimschäden. High School: Schleimangriff. 1 Schaden für den Krieger. [Runde 2] Vorher: Kriegerangriff. 2 Schleimschäden. High School: Schleimangriff. 1 Schaden für den Krieger. [3. Runde] Vorher: Kriegerangriff. 2 Schleimschäden. High School: Schleimangriff. 1 Schaden für den Krieger.
Im obigen Fall sollten Sie in der Lage sein, den Schleim mit 2x3 = 6 zu besiegen. Die Zahlen scheinen jedoch nicht gestapelt zu sein und werden für immer wiederholt.
Der tatsächliche Code ist unten.
puts "Schleim erschien"
hp = 6
damage = 0
ownhp = 10
while damage < hp do
puts ""
puts "Krieger ist an der Reihe"
puts "Bitte wählen Sie einen Angriff. 1: Naguru 2: Hoimi"
attack = gets.to_i
damage=[1,2,3].sample
if attack == 1
puts "Kriegerangriff."
puts "Schleim#{damage}Beschädigung"
damage += damage
elsif attack == 2
case ownhp
when 10
puts ""
puts "Der Krieger sang Hoimi. Aber der Krieger ist voller Energie! Nichts ist passiert."
when 1..4,6..8
puts ""
puts "Der Krieger sang Hoimi. Der Krieger ist voller Energie."
else
puts ""
puts "Der Zauber ist fehlgeschlagen."
end
else
puts ""
puts "Dieser Befehl ist keine Option. Beende die Runde."
end
if damage < 6
puts ""
puts "Schleim drehen"
puts "Schleimangriff. "1" Schaden für den Krieger"
ownhp -=1
end
end
puts "Der Krieger besiegte den Schleim. Ich habe 10 Erfahrungspunkte."
Es ist oben.
In der Tat können Sie Schleim besiegen. Dann greifst du (Krieger) an und bekommst eine 3.
Als Test
① Wenn 1 oder 2 mehrmals vorkommt und nicht endet, auch wenn es insgesamt 6 erreicht ② Wenn 3 herauskommt und endet
Hier ist der Code für jeden der oben genannten Irbs.
ec2-user:~/environment/ruby-book $ ruby lib/dorakue.rb
Schleim erschien
Krieger ist an der Reihe
Bitte wählen Sie einen Angriff. 1: Naguru 2: Hoimi
1
Kriegerangriff.
Schleimschaden "2"
Schleim drehen
Schleimangriff. "1" Schaden für den Krieger
Krieger ist an der Reihe
Bitte wählen Sie einen Angriff. 1: Naguru 2: Hoimi
1
Kriegerangriff.
Schleimschaden "1"
Schleim drehen
Schleimangriff. "1" Schaden für den Krieger
Krieger ist an der Reihe
Bitte wählen Sie einen Angriff. 1: Naguru 2: Hoimi
1
Kriegerangriff.
Schleimschaden "1"
Schleim drehen
Schleimangriff. "1" Schaden für den Krieger
Krieger ist an der Reihe
Bitte wählen Sie einen Angriff. 1: Naguru 2: Hoimi
1
Kriegerangriff.
Schleimschaden "1"
Schleim drehen
Schleimangriff. "1" Schaden für den Krieger
Krieger ist an der Reihe
Bitte wählen Sie einen Angriff. 1: Naguru 2: Hoimi
1
Kriegerangriff.
Schleimschaden "1"
Schleim drehen
Schleimangriff. "1" Schaden für den Krieger
Krieger ist an der Reihe
Bitte wählen Sie einen Angriff. 1: Naguru 2: Hoimi
1
Kriegerangriff.
Schleimschaden "2"
Schleim drehen
Schleimangriff. "1" Schaden für den Krieger
Krieger ist an der Reihe
Bitte wählen Sie einen Angriff. 1: Naguru 2: Hoimi
1
Kriegerangriff.
Schleimschaden "2"
Schleim drehen
Schleimangriff. "1" Schaden für den Krieger
Krieger ist an der Reihe
Bitte wählen Sie einen Angriff. 1: Naguru 2: Hoimi
1
Kriegerangriff.
Schleimschaden "2"
Schleim drehen
Schleimangriff. "1" Schaden für den Krieger
Krieger ist an der Reihe
Bitte wählen Sie einen Angriff. 1: Naguru 2: Hoimi
1
Kriegerangriff.
Schleimschaden "1"
Schleim drehen
Schleimangriff. "1" Schaden für den Krieger
Krieger ist an der Reihe
Bitte wählen Sie einen Angriff. 1: Naguru 2: Hoimi
1
Kriegerangriff.
Schleimschaden "2"
Schleim drehen
Schleimangriff. "1" Schaden für den Krieger
Krieger ist an der Reihe
Bitte wählen Sie einen Angriff. 1: Naguru 2: Hoimi
1
Kriegerangriff.
Schleimschaden "2"
Schleim drehen
Schleimangriff. "1" Schaden für den Krieger
Krieger ist an der Reihe
Bitte wählen Sie einen Angriff. 1: Naguru 2: Hoimi
1
Kriegerangriff.
Schleimschaden "2"
Schleim drehen
Schleimangriff. "1" Schaden für den Krieger
Krieger ist an der Reihe
Bitte wählen Sie einen Angriff. 1: Naguru 2: Hoimi
1
Kriegerangriff.
Schleimschaden "1"
Schleim drehen
Schleimangriff. "1" Schaden für den Krieger
Krieger ist an der Reihe
Bitte wählen Sie einen Angriff. 1: Naguru 2: Hoimi
1
Kriegerangriff.
Schleimschaden "2"
Schleim drehen
Schleimangriff. "1" Schaden für den Krieger
Krieger ist an der Reihe
Bitte wählen Sie einen Angriff. 1: Naguru 2: Hoimi
1
Kriegerangriff.
Schleimschaden "2"
Schleim drehen
Schleimangriff. "1" Schaden für den Krieger
Krieger ist an der Reihe
Bitte wählen Sie einen Angriff. 1: Naguru 2: Hoimi
1
Kriegerangriff.
Schleimschaden "1"
Schleim drehen
Schleimangriff. "1" Schaden für den Krieger
Krieger ist an der Reihe
Bitte wählen Sie einen Angriff. 1: Naguru 2: Hoimi
1
Kriegerangriff.
Schleimschaden "2"
Schleim drehen
Schleimangriff. "1" Schaden für den Krieger
Krieger ist an der Reihe
Bitte wählen Sie einen Angriff. 1: Naguru 2: Hoimi
^CTraceback (most recent call last):
2: from lib/dorakue.rb:10:in `<main>'
1: from lib/dorakue.rb:10:in `gets'
lib/dorakue.rb:10:in `gets': Interrupt
Ich habe es gezwungen zu enden.
ec2-user:~/environment/ruby-book $ ruby lib/dorakue.rb
Schleim erschien
Krieger ist an der Reihe
Bitte wählen Sie einen Angriff. 1: Naguru 2: Hoimi
1
Kriegerangriff.
Schleimschaden "3"
Der Krieger besiegte den Schleim. Ich habe 10 Erfahrungspunkte.
Es sieht aus wie das.
damage += damage
Ich denke, der obige Teil ist falsch in dem Code, den ich geschrieben habe, um den Schaden zu akkumulieren, aber ich weiß nicht, wie ich ihn beheben soll. Wenn Sie eine 3 bekommen, können Sie sie mit 3 + 3 = 6 schlagen. Mit anderen Worten, es handelt sich um ein Formular, das nur in der Runde hinzugefügt wird und nicht wiederholt verarbeitet wird.
Ich wäre Ihnen dankbar, wenn Sie mich unterrichten könnten.
Vielen Dank.