使用ruby def比较的石头剪刀纸牌游戏不起作用
我试着创造这个游戏。这是我的密码:使用ruby def比较的石头剪刀纸牌游戏不起作用,ruby,Ruby,我试着创造这个游戏。这是我的密码: puts "Welcome to our Rock, Paper, Scissors Game" puts "Do you want to play? (yes/no)" answer = gets.chomp.downcase while answer == "yes" do options = ["rock", "paper", "scissors"] computer_choice = options[rand(options.length)] p
puts "Welcome to our Rock, Paper, Scissors Game"
puts "Do you want to play? (yes/no)"
answer = gets.chomp.downcase
while answer == "yes" do
options = ["rock", "paper", "scissors"]
computer_choice = options[rand(options.length)]
puts "Please choose Rock, Paper or Scissors!"
player_choice = gets.chomp.downcase
def compare
if (player_choice == "rock" && computer_choice == "scissors")
puts "computer choice is: " + computer_choice + " , you win! :)"
elsif (player_choice == "rock" && computer_choice == "paper")
puts "computer choice is: " + computer_choice + " ,computer wins :("
elsif (player_choice == "paper" && computer_choice == "scissors")
puts "computer choice is: " + computer_choice + " ,computer wins :("
elsif (player_choice == "paper" && computer_choice == "rock")
puts "computer choice is: " + computer_choice + " , you win! :)"
elsif (player_choice == "scissors" && computer_choice == "rock")
puts "computer choice is: " + computer_choice + " ,computer wins :("
elsif (player_choice == "scissors" && computer_choice == "paper")
puts "computer choice is: " + computer_choice + " , you win! :)"
elsif (player_choice === computer_choice)
puts "It's a tie!"
else
puts "Error"
end
end
end
它重复询问我的选择,而不进行def比较。我遗漏了什么?让我们把它分成三部分。首先,让我们编写游戏的主循环:
puts "Welcome to our Rock, Paper, Scissors Game"
loop do
puts "Do you want to play? (yes/no)"
answer = gets.chomp.downcase
if answer == "yes"
play_game
elsif answer == "no"
puts "Bye!"
break
elsif
puts "Invalid answer (must be 'yes' or 'no')"
end
end
def play_game
options = ["rock", "paper", "scissors"]
computer_choice = options.sample
loop do
puts "Please choose Rock, Paper or Scissors!"
player_choice = gets.chomp.downcase
if options.include?(player_choice)
compare(player_choice, computer_choice)
break
else
puts "Invalid answer (must be 'rock', 'paper' or 'scissors')"
end
end
end
def compare(player_choice, computer_choice)
puts "Computer choice is: " + computer_choice + ". "
if(player_choice == "rock" && computer_choice == "scissors")
puts "You win! :)"
elsif(player_choice == "rock" && computer_choice == "paper")
puts "Computer wins :("
elsif(player_choice == "paper" && computer_choice == "scissors")
puts "Computer wins :("
elsif(player_choice == "paper" && computer_choice == "rock")
puts "You win! :)"
elsif(player_choice == "scissors" && computer_choice == "rock")
puts "Computer wins :("
elsif(player_choice == "scissors" && computer_choice == "paper")
puts "You win! :)"
else
puts "It's a tie!"
end
end
puts "Welcome to our Rock, Paper, Scissors Game"
loop do
puts "Do you want to play? (yes/no)"
answer = gets.chomp.downcase
if answer == "yes"
play_game
elsif answer == "no"
puts "Bye!"
break
elsif
puts "Invalid answer (must be 'yes' or 'no')"
end
end
这修复了您的第一个问题,即“您想玩吗”实际上没有被循环
现在,让我们定义play_game
方法:
def play_game
options = ["rock", "paper", "scissors"]
computer_choice = options.sample
loop do
puts "Please choose Rock, Paper or Scissors!"
player_choice = gets.chomp.downcase
if options.include?(player_choice)
compare(player_choice, computer_choice)
break
else
puts "Invalid answer (must be 'rock', 'paper' or 'scissors')"
end
end
end
def compare(player_choice, computer_choice)
puts "Computer choice is: " + computer_choice + ". "
if(player_choice == "rock" && computer_choice == "scissors")
puts "You win! :)"
elsif(player_choice == "rock" && computer_choice == "paper")
puts "Computer wins :("
elsif(player_choice == "paper" && computer_choice == "scissors")
puts "Computer wins :("
elsif(player_choice == "paper" && computer_choice == "rock")
puts "You win! :)"
elsif(player_choice == "scissors" && computer_choice == "rock")
puts "Computer wins :("
elsif(player_choice == "scissors" && computer_choice == "paper")
puts "You win! :)"
else
puts "It's a tie!"
end
end
这修复了你的第二个问题,玩家在每个游戏中都陷入了无限循环
最后,让我们定义compare
方法:
def play_game
options = ["rock", "paper", "scissors"]
computer_choice = options.sample
loop do
puts "Please choose Rock, Paper or Scissors!"
player_choice = gets.chomp.downcase
if options.include?(player_choice)
compare(player_choice, computer_choice)
break
else
puts "Invalid answer (must be 'rock', 'paper' or 'scissors')"
end
end
end
def compare(player_choice, computer_choice)
puts "Computer choice is: " + computer_choice + ". "
if(player_choice == "rock" && computer_choice == "scissors")
puts "You win! :)"
elsif(player_choice == "rock" && computer_choice == "paper")
puts "Computer wins :("
elsif(player_choice == "paper" && computer_choice == "scissors")
puts "Computer wins :("
elsif(player_choice == "paper" && computer_choice == "rock")
puts "You win! :)"
elsif(player_choice == "scissors" && computer_choice == "rock")
puts "Computer wins :("
elsif(player_choice == "scissors" && computer_choice == "paper")
puts "You win! :)"
else
puts "It's a tie!"
end
end
您可能可以进一步改进该方法,但我至少删除了put
语句之间最大的重复
综上所述,这是一个完整的游戏版本:
puts "Welcome to our Rock, Paper, Scissors Game"
loop do
puts "Do you want to play? (yes/no)"
answer = gets.chomp.downcase
if answer == "yes"
play_game
elsif answer == "no"
puts "Bye!"
break
elsif
puts "Invalid answer (must be 'yes' or 'no')"
end
end
def play_game
options = ["rock", "paper", "scissors"]
computer_choice = options.sample
loop do
puts "Please choose Rock, Paper or Scissors!"
player_choice = gets.chomp.downcase
if options.include?(player_choice)
compare(player_choice, computer_choice)
break
else
puts "Invalid answer (must be 'rock', 'paper' or 'scissors')"
end
end
end
def compare(player_choice, computer_choice)
puts "Computer choice is: " + computer_choice + ". "
if(player_choice == "rock" && computer_choice == "scissors")
puts "You win! :)"
elsif(player_choice == "rock" && computer_choice == "paper")
puts "Computer wins :("
elsif(player_choice == "paper" && computer_choice == "scissors")
puts "Computer wins :("
elsif(player_choice == "paper" && computer_choice == "rock")
puts "You win! :)"
elsif(player_choice == "scissors" && computer_choice == "rock")
puts "Computer wins :("
elsif(player_choice == "scissors" && computer_choice == "paper")
puts "You win! :)"
else
puts "It's a tie!"
end
end
puts "Welcome to our Rock, Paper, Scissors Game"
loop do
puts "Do you want to play? (yes/no)"
answer = gets.chomp.downcase
if answer == "yes"
play_game
elsif answer == "no"
puts "Bye!"
break
elsif
puts "Invalid answer (must be 'yes' or 'no')"
end
end
有很多方法可以进一步改进,但我将让您自己决定。让我们将其分为三个部分。首先,让我们编写游戏的主循环:
puts "Welcome to our Rock, Paper, Scissors Game"
loop do
puts "Do you want to play? (yes/no)"
answer = gets.chomp.downcase
if answer == "yes"
play_game
elsif answer == "no"
puts "Bye!"
break
elsif
puts "Invalid answer (must be 'yes' or 'no')"
end
end
def play_game
options = ["rock", "paper", "scissors"]
computer_choice = options.sample
loop do
puts "Please choose Rock, Paper or Scissors!"
player_choice = gets.chomp.downcase
if options.include?(player_choice)
compare(player_choice, computer_choice)
break
else
puts "Invalid answer (must be 'rock', 'paper' or 'scissors')"
end
end
end
def compare(player_choice, computer_choice)
puts "Computer choice is: " + computer_choice + ". "
if(player_choice == "rock" && computer_choice == "scissors")
puts "You win! :)"
elsif(player_choice == "rock" && computer_choice == "paper")
puts "Computer wins :("
elsif(player_choice == "paper" && computer_choice == "scissors")
puts "Computer wins :("
elsif(player_choice == "paper" && computer_choice == "rock")
puts "You win! :)"
elsif(player_choice == "scissors" && computer_choice == "rock")
puts "Computer wins :("
elsif(player_choice == "scissors" && computer_choice == "paper")
puts "You win! :)"
else
puts "It's a tie!"
end
end
puts "Welcome to our Rock, Paper, Scissors Game"
loop do
puts "Do you want to play? (yes/no)"
answer = gets.chomp.downcase
if answer == "yes"
play_game
elsif answer == "no"
puts "Bye!"
break
elsif
puts "Invalid answer (must be 'yes' or 'no')"
end
end
这修复了您的第一个问题,即“您想玩吗”实际上没有被循环
现在,让我们定义play_game
方法:
def play_game
options = ["rock", "paper", "scissors"]
computer_choice = options.sample
loop do
puts "Please choose Rock, Paper or Scissors!"
player_choice = gets.chomp.downcase
if options.include?(player_choice)
compare(player_choice, computer_choice)
break
else
puts "Invalid answer (must be 'rock', 'paper' or 'scissors')"
end
end
end
def compare(player_choice, computer_choice)
puts "Computer choice is: " + computer_choice + ". "
if(player_choice == "rock" && computer_choice == "scissors")
puts "You win! :)"
elsif(player_choice == "rock" && computer_choice == "paper")
puts "Computer wins :("
elsif(player_choice == "paper" && computer_choice == "scissors")
puts "Computer wins :("
elsif(player_choice == "paper" && computer_choice == "rock")
puts "You win! :)"
elsif(player_choice == "scissors" && computer_choice == "rock")
puts "Computer wins :("
elsif(player_choice == "scissors" && computer_choice == "paper")
puts "You win! :)"
else
puts "It's a tie!"
end
end
这修复了你的第二个问题,玩家在每个游戏中都陷入了无限循环
最后,让我们定义compare
方法:
def play_game
options = ["rock", "paper", "scissors"]
computer_choice = options.sample
loop do
puts "Please choose Rock, Paper or Scissors!"
player_choice = gets.chomp.downcase
if options.include?(player_choice)
compare(player_choice, computer_choice)
break
else
puts "Invalid answer (must be 'rock', 'paper' or 'scissors')"
end
end
end
def compare(player_choice, computer_choice)
puts "Computer choice is: " + computer_choice + ". "
if(player_choice == "rock" && computer_choice == "scissors")
puts "You win! :)"
elsif(player_choice == "rock" && computer_choice == "paper")
puts "Computer wins :("
elsif(player_choice == "paper" && computer_choice == "scissors")
puts "Computer wins :("
elsif(player_choice == "paper" && computer_choice == "rock")
puts "You win! :)"
elsif(player_choice == "scissors" && computer_choice == "rock")
puts "Computer wins :("
elsif(player_choice == "scissors" && computer_choice == "paper")
puts "You win! :)"
else
puts "It's a tie!"
end
end
您可能可以进一步改进该方法,但我至少删除了put
语句之间最大的重复
综上所述,这是一个完整的游戏版本:
puts "Welcome to our Rock, Paper, Scissors Game"
loop do
puts "Do you want to play? (yes/no)"
answer = gets.chomp.downcase
if answer == "yes"
play_game
elsif answer == "no"
puts "Bye!"
break
elsif
puts "Invalid answer (must be 'yes' or 'no')"
end
end
def play_game
options = ["rock", "paper", "scissors"]
computer_choice = options.sample
loop do
puts "Please choose Rock, Paper or Scissors!"
player_choice = gets.chomp.downcase
if options.include?(player_choice)
compare(player_choice, computer_choice)
break
else
puts "Invalid answer (must be 'rock', 'paper' or 'scissors')"
end
end
end
def compare(player_choice, computer_choice)
puts "Computer choice is: " + computer_choice + ". "
if(player_choice == "rock" && computer_choice == "scissors")
puts "You win! :)"
elsif(player_choice == "rock" && computer_choice == "paper")
puts "Computer wins :("
elsif(player_choice == "paper" && computer_choice == "scissors")
puts "Computer wins :("
elsif(player_choice == "paper" && computer_choice == "rock")
puts "You win! :)"
elsif(player_choice == "scissors" && computer_choice == "rock")
puts "Computer wins :("
elsif(player_choice == "scissors" && computer_choice == "paper")
puts "You win! :)"
else
puts "It's a tie!"
end
end
puts "Welcome to our Rock, Paper, Scissors Game"
loop do
puts "Do you want to play? (yes/no)"
answer = gets.chomp.downcase
if answer == "yes"
play_game
elsif answer == "no"
puts "Bye!"
break
elsif
puts "Invalid answer (must be 'yes' or 'no')"
end
end
有很多方法可以进一步改进,但我将留给您。考虑使用散列:
h={“rock”=>“剪刀”,“paper”=>“rock”,“剪刀”=>“paper”}
。然后玩家赢如果h[player\u choice]==computer\u choice
,计算机赢如果h[computer\u choice]==player\u choice
,否则是平局。试试这样的结构。loop do;puts“keep playin”;“break if”get.chomp.downcase==“n”;loop do;puts“what's your choice?”;player\u choice=get.chomp;if h.有钥匙?(player\u choice)谢谢,你的想法教了我很多。谢谢,你的想法教了我很多。考虑使用哈希:<代码> H= {岩石〉=“剪刀”,“纸”=“摇滚”,“剪刀”=“纸”} /代码>。然后玩家获胜,如果<代码> h [ PalryOrthOrth] =计算机选择> <代码>,计算机获胜如果<代码> h [计算机选择]==player\u choice
,否则是平局。尝试这样的结构。循环do;放置“继续播放”?“如果”get.chomp.downcase==n;循环do;放置“你的选择是什么?”;player\u choice=get.chomp;如果h.有_键?(player\u choice);;中断;否则;放置“{player\u choice}”无效,请重试”;end;end
。谢谢,你的想法教会了我很多!非常感谢你的建议!我尝试了你的几个想法,学到了很多,谢谢!非常感谢你的建议!我尝试了你的几个想法,学到了很多,谢谢!