J'écris un programme Ruby et je suis bloqué, je vais donc poster une question ici.
Actuellement, je travaille sur la création d'un programme Dragon Quest qui est souvent utilisé comme exemple de programmes ruby sur le net.
Les spécifications que je souhaite mettre en œuvre sont les suivantes.
C'est à peu près comme ça.
Je ne peux pas écrire un processus qui accumule le nombre d'attaques de moi-même (guerrier) tout en répétant le processus dans l'instruction while.
En particulier, [Tour 1] Précédente: Attaque de guerrier. 2 dégâts au slime. Lycée: attaque de Slime. 1 dégât au guerrier. [Tournez 2] Précédente: Attaque de guerrier. 2 dégâts au slime. Lycée: attaque de Slime. 1 dégât au guerrier. [Tournez 3] Précédente: Attaque de guerrier. 2 dégâts au slime. Lycée: attaque de Slime. 1 dégât au guerrier.
Dans le cas ci-dessus, vous devriez être en mesure de vaincre le slime avec 2x3 = 6. Cependant, les chiffres ne semblent pas s'accumuler et se répéteront pour toujours.
Le code réel est ci-dessous.
puts "Slime est apparu"
hp = 6
damage = 0
ownhp = 10
while damage < hp do
puts ""
puts "Le tour du guerrier"
puts "Veuillez choisir une attaque. 1: Naguru 2: Hoimi"
attack = gets.to_i
damage=[1,2,3].sample
if attack == 1
puts "Attaque de guerrier."
puts "Slime#{damage}Dommage"
damage += damage
elsif attack == 2
case ownhp
when 10
puts ""
puts "Le guerrier a scandé Hoimi. Mais le guerrier est plein d'énergie! Rien ne s'est passé."
when 1..4,6..8
puts ""
puts "Le guerrier a scandé Hoimi. Le guerrier est plein d'énergie."
else
puts ""
puts "Le sort a échoué."
end
else
puts ""
puts "Cette commande n'est pas une option. Terminez le tour."
end
if damage < 6
puts ""
puts "Tour de Slime"
puts "Attaque visqueuse. "1" dommage au guerrier"
ownhp -=1
end
end
puts "Le guerrier a vaincu le slime. J'ai 10 points d'expérience."
C'est au dessus.
En fait, vous pouvez vaincre le slime. C'est alors que vous (guerrier) attaquez et que vous obtenez un 3.
Comme test,
① Si 1 ou 2 apparaît plusieurs fois et qu'il ne s'arrête pas même s'il atteint 6 au total ② Quand 3 sort et se termine
Voici le code pour chacun des irbs ci-dessus.
ec2-user:~/environment/ruby-book $ ruby lib/dorakue.rb
Slime est apparu
Le tour du guerrier
Veuillez choisir une attaque. 1: Naguru 2: Hoimi
1
Attaque de guerrier.
"2" dégâts à la vase
Tour de Slime
Attaque visqueuse. "1" dommage au guerrier
Le tour du guerrier
Veuillez choisir une attaque. 1: Naguru 2: Hoimi
1
Attaque de guerrier.
"1" dommage à la vase
Tour de Slime
Attaque visqueuse. "1" dommage au guerrier
Le tour du guerrier
Veuillez choisir une attaque. 1: Naguru 2: Hoimi
1
Attaque de guerrier.
"1" dommage à la vase
Tour de Slime
Attaque visqueuse. "1" dommage au guerrier
Le tour du guerrier
Veuillez choisir une attaque. 1: Naguru 2: Hoimi
1
Attaque de guerrier.
"1" dommage à la vase
Tour de Slime
Attaque visqueuse. "1" dommage au guerrier
Le tour du guerrier
Veuillez choisir une attaque. 1: Naguru 2: Hoimi
1
Attaque de guerrier.
"1" dommage à la vase
Tour de Slime
Attaque visqueuse. "1" dommage au guerrier
Le tour du guerrier
Veuillez choisir une attaque. 1: Naguru 2: Hoimi
1
Attaque de guerrier.
"2" dégâts à la vase
Tour de Slime
Attaque visqueuse. "1" dommage au guerrier
Le tour du guerrier
Veuillez choisir une attaque. 1: Naguru 2: Hoimi
1
Attaque de guerrier.
"2" dégâts à la vase
Tour de Slime
Attaque visqueuse. "1" dommage au guerrier
Le tour du guerrier
Veuillez choisir une attaque. 1: Naguru 2: Hoimi
1
Attaque de guerrier.
"2" dégâts à la vase
Tour de Slime
Attaque visqueuse. "1" dommage au guerrier
Le tour du guerrier
Veuillez choisir une attaque. 1: Naguru 2: Hoimi
1
Attaque de guerrier.
"1" dommage à la vase
Tour de Slime
Attaque visqueuse. "1" dommage au guerrier
Le tour du guerrier
Veuillez choisir une attaque. 1: Naguru 2: Hoimi
1
Attaque de guerrier.
"2" dégâts à la vase
Tour de Slime
Attaque visqueuse. "1" dommage au guerrier
Le tour du guerrier
Veuillez choisir une attaque. 1: Naguru 2: Hoimi
1
Attaque de guerrier.
"2" dégâts à la vase
Tour de Slime
Attaque visqueuse. "1" dommage au guerrier
Le tour du guerrier
Veuillez choisir une attaque. 1: Naguru 2: Hoimi
1
Attaque de guerrier.
"2" dégâts à la vase
Tour de Slime
Attaque visqueuse. "1" dommage au guerrier
Le tour du guerrier
Veuillez choisir une attaque. 1: Naguru 2: Hoimi
1
Attaque de guerrier.
"1" dommage à la vase
Tour de Slime
Attaque visqueuse. "1" dommage au guerrier
Le tour du guerrier
Veuillez choisir une attaque. 1: Naguru 2: Hoimi
1
Attaque de guerrier.
"2" dégâts à la vase
Tour de Slime
Attaque visqueuse. "1" dommage au guerrier
Le tour du guerrier
Veuillez choisir une attaque. 1: Naguru 2: Hoimi
1
Attaque de guerrier.
"2" dégâts à la vase
Tour de Slime
Attaque visqueuse. "1" dommage au guerrier
Le tour du guerrier
Veuillez choisir une attaque. 1: Naguru 2: Hoimi
1
Attaque de guerrier.
"1" dommage à la vase
Tour de Slime
Attaque visqueuse. "1" dommage au guerrier
Le tour du guerrier
Veuillez choisir une attaque. 1: Naguru 2: Hoimi
1
Attaque de guerrier.
"2" dégâts à la vase
Tour de Slime
Attaque visqueuse. "1" dommage au guerrier
Le tour du guerrier
Veuillez choisir une attaque. 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
Je l'ai forcé à se terminer.
ec2-user:~/environment/ruby-book $ ruby lib/dorakue.rb
Slime est apparu
Le tour du guerrier
Veuillez choisir une attaque. 1: Naguru 2: Hoimi
1
Attaque de guerrier.
"3" dégâts à la vase
Le guerrier a vaincu le slime. J'ai 10 points d'expérience.
Ça ressemble à ça.
damage += damage
Je pense que la partie ci-dessus est erronée dans le code que j'ai écrit pour accumuler les dégâts, mais je ne sais pas comment y remédier. Si vous obtenez un 3, je pense que vous pouvez le battre avec 3 + 3 = 6. En d'autres termes, c'est un formulaire qui est ajouté uniquement dans le tour plutôt qu'un traitement répété.
Je vous serais reconnaissant si vous pouviez m'apprendre.
Merci beaucoup.
Recommended Posts