我有一个ruby程序,这里包含哈希值。基本上当用户输入l或p或sc时,它将检查计算机生成的密钥是否与第一个变量上的标准匹配w / c是播放器还是用户。如果它符合标准,它将返回你赢了。但如果不是它会让你松弛。否则如果它相同则打印出平局。
MY_CHOICES = {
'l' => 'light',
'p' => 'paper',
'sc' => 'scan',
}
def test?(first, second)
(first == 'p' && second == MY_CHOICES ['l']) ||
(first == 'l' && second == MY_CHOICES ['p']) ||
(first == 'sc' && second == MY_CHOICES ['sc']) ||
(first == 'l' && second == MY_CHOICES ['l'])
end
def print_results(player, computer)
if test?(player, computer)
puts("You won!")
elsif test?(computer, player)
puts("Computer won! You loose!")
else
puts("It's a tie!")
end
end
puts "Enter a key: "
choice = gets().chomp()
computer_choice = MY_CHOICES.values.sample
print_results(choice, computer_choice)
puts("You chose: #{choice}, computer choose: #{computer_choice}"
使用上面的代码,我的代码正在跳过代码并始终打印"它是一个平局"我不知道我在这里失踪了什么。有什么想法吗?
答案 0 :(得分:3)
您正在获取用户的输入并针对'摇滚','纸张'和'剪刀'进行测试,但是您已声明用户正在输入'l','p'和'sc',因此请测试永远不会评估为真的
例如,将其保存为rps.rb并运行:
> ruby rps.rb
Enter a key:
rock
You won!
You chose: rock, computer choose: light
答案 1 :(得分:-2)
您是否尝试过修改代码:
def test?(player, computer)
(player== 'rock' && computer== VALID_CHOICES['sc']) ||
(player== 'paper' && computer== VALID_CHOICES['r']) ||
(player== 'scissors' && computer== VALID_CHOICES['sc']) ||
(player== 'paper' && computer== VALID_CHOICES['sp'])
end