Ruby:如何退出程序并询问用户是否要再次播放

时间:2019-04-02 12:14:56

标签: ruby

这是一个课堂作业。我们创建了一个石头剪刀布Spock Lizard(RPSSL)游戏。用户与计算机。第一个赢得5倍大奖的人是grand_winner。

我在执行代码时遇到麻烦,询问用户是否想再次播放,否则,请退出该程序。当它只是一个游戏时,这很容易实现。

提示或技巧要比确定的答案更有价值。

我尝试定义一个方法,将代码置于条件中以检查是否有grand_winner,但是我确实遇到了麻烦。我知道我可能需要回去或者只是慢下来,因为答案就在那里。

这是github的链接:

https://github.com/emilianolowe/RB101_lesson_two/blob/master/rpssl.rb

我希望程序会询问用户是否要玩另一轮游戏。如果用户不想再玩一轮,请退出程序。

2 个答案:

答案 0 :(得分:0)

loop do
  loop do
    # do stuff here
    break if grand_winner
  end
  print "continue? "
  break if gets.strip.downcase == 'no'
end

(请注意,我只是将puts链接到我的条件中,因为它总是返回nil,所以or的右侧将被评估)

答案 1 :(得分:0)

您可以基于grand_winner函数返回的内容创建if语句。我对其进行了一些修改,因此它只会返回true或false。

def grand_winner
  if WINS[:user] == 5
    prompt(MESSAGES['user_grand_winner'])
    return true #returns true if user is grand winner
  elsif WINS[:computer] == 5
    prompt(MESSAGES['computer_grand_winner'])
    return false #returns false if COM is grand winner
  end
end

现在您可以执行以下操作:

if grand_winner == true #so if the grand winner was the player 
  prompt("Would you like to play again? (Y/N)")
  play_again = gets().chomp
  break unless play_again.downcase.start_with?('y')
else 
    #whatever happens if they were not the grand winner
end