Ruby 红宝石、布、剪刀

Ruby 红宝石、布、剪刀,ruby,Ruby,我对这个石头、布、剪刀游戏的分数更新程序有一个问题,我必须为我的ruby类创建这个游戏。此任务的目的是让用户输入一个选项,计算机也使用“rand”进行随机选择,并且无论谁赢得这轮比赛,都会在每轮比赛结束时更新分数。我遇到的问题是计数器只使用第一个if语句进行更新。该程序可以随机选择计算机选项,并保存用户的响应。因此,所有的代码都很好,直到使用了分数更新程序。如有任何协助,将不胜感激 human_score = 0.0 comp_score = 0.0 while true print "Le

我对这个石头、布、剪刀游戏的分数更新程序有一个问题,我必须为我的ruby类创建这个游戏。此任务的目的是让用户输入一个选项,计算机也使用“rand”进行随机选择,并且无论谁赢得这轮比赛,都会在每轮比赛结束时更新分数。我遇到的问题是计数器只使用第一个if语句进行更新。该程序可以随机选择计算机选项,并保存用户的响应。因此,所有的代码都很好,直到使用了分数更新程序。如有任何协助,将不胜感激

human_score = 0.0
comp_score = 0.0

while true

print "Lets play rock,paper,scissors", "\n"
print "Do you choose rock, paper, or scissors?", "\n"
choice = STDIN.gets.chomp
comp = rand(3)
    if comp == 1
        comp_choice = "rock"
    elsif comp == 2
        comp_choice = "paper"
    else
        comp_choice = "scissors"
    end
print "Computer picked: ", comp_choice, "\n"
print "You picked: ", choice, "\n"
    if human_choice = "rock" && comp_choice = "rock"
        comp_score += 0.5
        human_score += 0.5
        print "The result is a tie", "\n"
    elsif human_choice = "rock" && comp_choice = "paper"
        comp_score += 1
        print "Computer wins", "\n"
    elsif human_choice = "rock" && comp_choice = "scissors"
        human_score += 1
        print "You win", "\n"
    elsif human_choice = "paper" && comp_choice = "rock"
        human_score += 1
        print "You win", "\n"
    elsif human_choice = "paper" && comp_choice = "paper"
        comp_score += 0.5
        human_score += 0.5
        print "Its a tie", "\n"
    elsif human_choice = "paper" && comp_choice = "scissors"
        comp_score += 1
        print "Computer wins", "\n"
    elsif human_choice = "scissors" && comp_choice = "rock"
        comp_score += 1
        print "Computer wins"
    elsif human_choice = "scissors" && comp_choice = "paper"
        human_score += 1
        print "You win"
    else human_choice = "scissors" && comp_choice = "scissors"
        human_score += 0.5
        comp_score += 0.5
        print "Its a tie"
    end
print "The computers score is: ", comp_score, "\n"
print "Your score is: ", human_score, "\n"

end

您正在重新分配变量的值,而不是检查是否相等

您的版本:

if human_choice = "rock" && comp_choice = "rock"
if human_choice == "rock" && comp_choice == "rock"
这将
human\u choice
的值设置为“rock”,与
comp\u choice
的值相同。这永远是真的

正确版本:

if human_choice = "rock" && comp_choice = "rock"
if human_choice == "rock" && comp_choice == "rock"

您正在重新分配变量的值,而不是检查是否相等

您的版本:

if human_choice = "rock" && comp_choice = "rock"
if human_choice == "rock" && comp_choice == "rock"
这将
human\u choice
的值设置为“rock”,与
comp\u choice
的值相同。这永远是真的

正确版本:

if human_choice = "rock" && comp_choice = "rock"
if human_choice == "rock" && comp_choice == "rock"

另外,您正在将从键盘读取的值分配给
选项

choice = STDIN.gets.chomp

您正在使用
人类选择
来验证案例。

此外,您正在将从键盘读取的值分配给
选择

choice = STDIN.gets.chomp
您正在使用
人类选择
验证案例。

思考一下:

human_score = 0.0
comp_score = 0.0

while true

  puts "Lets play rock, paper, scissors"
  puts "Do you choose rock, paper, or scissors?"
  human_choice = STDIN.gets.chomp

  comp_choice = %w[scissors rock paper][rand(3)]

  puts "Computer picked: #{ comp_choice }"
  puts "You picked: #{ human_choice }"

  msg = case [human_choice, comp_choice]
  when ['rock', 'rock'], ['paper', 'paper'], ['scissors', 'scissors']
    comp_score += 0.5
    human_score += 0.5
    'The result is a tie'
  when ['rock', 'scissors'], ['paper', 'rock'], ['scissors', 'paper']
    human_score += 1
    'You win'
  when ['paper', 'scissors'], ['scissors', 'rock'], ['rock', 'paper']
    comp_score += 1
    'Computer wins'
  end

  puts msg
  puts "The computer's score is: #{ comp_score }"
  puts "Your score is: #{ human_score }"

end
它是用惯用的Ruby编写的。

思考一下:

human_score = 0.0
comp_score = 0.0

while true

  puts "Lets play rock, paper, scissors"
  puts "Do you choose rock, paper, or scissors?"
  human_choice = STDIN.gets.chomp

  comp_choice = %w[scissors rock paper][rand(3)]

  puts "Computer picked: #{ comp_choice }"
  puts "You picked: #{ human_choice }"

  msg = case [human_choice, comp_choice]
  when ['rock', 'rock'], ['paper', 'paper'], ['scissors', 'scissors']
    comp_score += 0.5
    human_score += 0.5
    'The result is a tie'
  when ['rock', 'scissors'], ['paper', 'rock'], ['scissors', 'paper']
    human_score += 1
    'You win'
  when ['paper', 'scissors'], ['scissors', 'rock'], ['rock', 'paper']
    comp_score += 1
    'Computer wins'
  end

  puts msg
  puts "The computer's score is: #{ comp_score }"
  puts "Your score is: #{ human_score }"

end

它是用惯用的Ruby编写的。

用于比较选择的
if
语句都使用
=
,这将成功地分配给这些变量;将这些更改为
=
。用于比较选择的
if
语句都使用
=
,这将成功地分配给这些变量;将这些更改为
==