初めてのプログラマーで、なぜ私のルビーコードが私が望む結果が得られないのか混乱しています。私は、異なる多面ダイスのローリングをシミュレートする簡単なプログラムを書いた。補間を伴うRubyコードでは結果が得られません。
d4 = rand (1..4)
d6 = rand (1..6)
d8 = rand (1..8)
d12 = rand (1..12)
d20 = rand (1..20)
percent = rand (1..100)
puts "Which dice would you like to roll?"
which_dice = gets.chomp
puts "You rolled a #{which_dice}!"
最初の6行は、各サイコロを定義し、1とサイコロの辺の数の間の乱数を出力します。次に、getメソッドで丸めたいサイコロを入力し、最後の行に結果を出力するようにユーザーに依頼します。
問題は、最後の行が実行されるときに、「あなたが(ユーザーがgetsメソッドで文字列として入力したもの)」を出してしまうことです)。例えば、ユーザがプロンプトでd8を入力すると、「あなたはd8をロールしました!」と表示されます。私が望む1と8の間の実際のランダムの代わりに。どのようにして実際の乱数を入れることができますか?
このようなアプローチには注意してください。 - https://stackoverflow.com/questions/5349624/how-to-call-methods-dynamically-based-on-their-name/26284769#26284769 –
確かに@BradWerth !しかし、「それを達成するためのより良い方法がある」と述べた。私は前提を避けて、それを解決することだけを望んでいました。実際には、これはセキュリティの観点から見て最悪の解決策であると言えますが、残りのコードを変更することなく、このソリューションが唯一提示された解決策であると主張できます。また、著者は、このコードが実行されている状況を教えてくれませんでした。たぶん彼は学校の問題を解決しようとしているだけでなく、オンラインの練習問題を解決しようとしているか、入力が制御されている環境(人間が入力していない可能性があります)で動作しています – Codextremist
私はOPが、入力を受け付けました... –