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