ruby:石头剪刀布程序。如何使算法正常工作?
我正在为我的第一个ruby程序创建一个石头、剪刀、布程序 我正在考虑使用名为ruby:石头剪刀布程序。如何使算法正常工作?,ruby,Ruby,我正在为我的第一个ruby程序创建一个石头、剪刀、布程序 我正在考虑使用名为@wins的散列来确定某个组合是否获胜。如果两只手是一样的,结果是一个抽签。否则,结果是Lose 我正在努力实现判断结果的算法。我如何检查@wins散列中是否存在给定的组合,以判断它是赢还是现在赢 class Hand attr_accessor :shape @@shapes = [:rock, :scissors, :paper] def generate @shape = @
@wins
的散列来确定某个组合是否获胜。如果两只手是一样的,结果是一个抽签代码>。否则,结果是Lose代码>
我正在努力实现判断结果的算法。我如何检查@wins
散列中是否存在给定的组合,以判断它是赢还是现在赢
class Hand
attr_accessor :shape
@@shapes = [:rock, :scissors, :paper]
def generate
@shape = @@shapes[rand(3)]
end
end
class Game
@wins = {rock: :scissors, scissors: :paper, paper: :rock}
def judge(p1, p2)
'Win!' if (a way to see if a given combination exists within a @wins hash) # Not working
'Draw!' if p1 == p2 # Not working
else 'Lose!'
end
end
player_hand = Hand.new
player_hand.shape = ARGV.join.to_sym
puts player_hand.shape # Debug
computer_hand = Hand.new
computer_hand.shape = computer_hand.generate
puts computer_hand.shape # Debug
game = Game.new
puts game.judge(player_hand.shape, computer_hand.shape)
13:injudge:未定义的方法
[]”,用于从29:in开始的nil:NilClass(NoMethodError)
啊,对@wins=…
应该在初始化方法中;现在的方式是,它在类中设置它,而judge
无法看到它。更好(更好)的是,将其设置为常量(WINS=…
),在这种情况下,它保持在原来的位置(无初始化
)。
def judge(p1, p2)
case
when @wins[p1] == p2 then "Win"
when @wins[p2] == p1 then "Lose"
else "Draw"
end
end