您好我是编程新手,我从ruby开始。我正在尝试做我的第一个程序。我在网上找到了生成掷骰子的代码
class Die
def initialize(sides)
@sides = sides
end
def generate_die_roll
rand(@sides) + 1
end
def roll(number=1)
roll_array = []
number.times do
roll_array << generate_die_roll
end
total = 0
roll_array.each do |roll|
new_total = total + roll
total = new_total
end
total
end
end
我希望以他们的方式使用,如果生成的数字低于等于另一个打印的东西,否则别的东西。 这可能很容易,但我正在尝试各种方式,现在我需要一些帮助。 这是我的代码:
require "./newdado.rb"
energia_vitale = 30
puts "Lancia un dado scrivendo (D) da sommare alla tua Energia Vitale iniziale di #{energia_vitale} punti"
scelta = gets.chomp
case scelta
when "D"
SIX_SIDED_DIE = "#{Die.new(6)}"
values = Array[]
values.push(SIX_SIDED_DIE.roll)
puts values
if values < 2
puts "c"
else puts "b"
end
end
当我运行它时,我收到此错误
C:/ Users / fix / workspace / D&amp; D Ruby / energia vitale.rb:11:in <main>': undefined method
roll'for“#”:String(NoMethodError)
很抱歉这个初学者问题打扰了社区
答案 0 :(得分:0)
为什么是字符串?
这一行
SIX_SIDED_DIE = "#{Die.new(6)}"`
应该是
die = Die.new(6)
然后你可以die.roll