gpt4 book ai didi

ruby (石头剪刀布)

转载 作者:行者123 更新时间:2023-12-05 09:31:09 25 4
gpt4 key购买 nike

嘿,我是 ruby​​ 的新手,我坐了很长时间试图找出我在这段代码中做错了什么,没有任何错误,但它没有像往常一样给我我想要的输出剪刀石头布游戏。这是我的代码:

puts "Rock, Paper or Scissors"
choice = gets.chomp
cchoice = ["Rock", "Paper","Scissors"]
comp = rand(1..3)
won = false


puts "Computer chose #{cchoice[comp]}"
if (choice == "Rock")
if (comp == 2)
won = false
end
if (comp == 3)
won = true
end
elsif (choice == "Paper")
if (comp == 3)
won = false
end
if (comp == 1)
won = true
end
elsif (choice == "Scissors")
if (comp == 1)
won = false
end
if (comp == 2)
won = true
end
else
puts "I dont know what that means so-"
end

if (won)
puts "YOU WON!!!"
else
puts "You lost.."
end

感谢您的帮助!

最佳答案

剪刀石头布的规则可以用简单的哈希表示:

conditions = {
"Rock" => "Scissors",
"Paper" => "Rock",
"Scissors" => "Paper"
}

所以你可以简单地检查一个玩家是否通过以下方式赢得了另一个玩家:

if conditions[player_1] == player_2
puts "Player one wins!"
elsif player_1 == player_2
puts "Its a draw!"
else
puts "Player two wins!"
end

这远没有嵌套的 if/else 语句树复杂。

conditions = {
"Rock": "Scissors",
"Paper": "Rock",
"Scissors": "Paper"
}

puts "Rock, Paper or Scissors"
choice = gets.chomp.capitalize
cchoice = conditions.keys.sample
puts "Computer chose #{ cchoice }"

if conditions[choice] == cchoice
puts "You won!"
elsif cchoice == choice
puts "Its a draw."
elsif conditions[cchoice] == choice
puts "You lost."
else
puts "#{choice} is not a valid option"
end

这涵盖了四种可能的结果:

  • 损失
  • 画画
  • 错误的输入(这也可以通过 break/throw/catch 等控制流来处理)

此外,您还可以使用 Array#sample 而不是 rand 从哈希的键中选择一个随机元素,这避免了使用数组索引的需要。

关于 ruby (石头剪刀布),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69054439/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com