当用户输入“hit”时,他们会得到一张随机分配的卡片。我已将卡片设置为键,并将点设置为哈希值,每次我尝试调用它时,它都没有放任何东西!
def random_card
cards = ["two", "three", "four", "five", "six", "seven",
"eight", "nine", "ten",
"jack", "queen", "king", "ace"]
cards[rand(13)]
end
def score
card_value = {
two: 2,
three: 3,
four: 4,
five: 5,
six: 6,
seven: 7,
eight: 8,
nine: 9,
ten: 10,
jack: 10,
queen: 10,
king: 10,
ace: 11,
}
puts "point #{card_value[:card]}"
end
def move
while true
puts '"hit" or "stick"'
input = gets.chomp
if input == "hit"
puts card = random_card
score
end
break if input == "stick"
end
end
当用户输入“命中”时,输出应该是一张随机卡片和分配给该卡片的点数,例如三点 3
最简单的就是更新
puts "point #{card_value[:card]}"
至
puts "point #{card_value[random_card.to_sym]}"
原因是card_value[:card]
试图从 card_value 哈希中获取他们不存在的卡片密钥。
您的random_card
函数从其主体中定义的卡数组中返回一个“随机”字符串值,作为字符串,您将得到相同的错误,因为键中的键card_value
是符号,因此您需要将该结果转换为符号。
回答 dx7 不错的补充。
您可以只声明一个 CARD_VALUES 哈希,其中包含卡片名称和点,然后您可以使用它来获取Array#sample
,这样您就可以避免为卡片添加一个无用的实例变量,并且在调用时必须将其作为方法参数传递random_card
:
CARD_VALUES = { two: 2, three: 3, four: 4, five: 5, six: 6, seven: 7, eight: 8, nine: 9, ten: 10,
jack: 10, queen: 10, king: 10, ace: 11 }
def random_card
CARD_VALUES.to_a.sample
end
def move
loop do
puts '"hit" or "stick"'
input = gets.chomp
if input == 'hit'
card, point = random_card
puts "card: #{card}"
puts "point: #{point}"
end
break if input == 'stick'
end
end
move
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句