Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用ruby def比较的石头剪刀纸牌游戏不起作用_Ruby - Fatal编程技术网

使用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
。谢谢,你的想法教会了我很多!非常感谢你的建议!我尝试了你的几个想法,学到了很多,谢谢!非常感谢你的建议!我尝试了你的几个想法,学到了很多,谢谢!