我試圖創建一個剪刀石頭布的程序,到目前爲止,該代碼的工作,但參數不扔,我怎麼能解決這個問題?在條件語句引發異常
class RockPaperScissors
# Exceptions this class can raise:
class NoSuchStrategyError < StandardError ; end
def self.winner(player1, player2)
p1c = player1.last.downcase
p2c = player2.last.downcase
p1wins = false
case p1c
when "p"
if (p2c == "p" or p2c == "r")
p1wins = true
end
when "s"
if (p2c == "p" or p2c == "s")
p1wins = true
end
when "r"
if (p2c == "r" or p2c == "s")
p1wins = true
end
else
raise NoSuchStrategyError, "Strategy must be one of R,P,S"
end
end
爲什麼錯誤不會丟? 編輯*
這是用來使用RSpec的測試代碼,你可以看到它與一個名稱,然後他們在capse選擇
before(:each) do
@rock = ['Armando','R'] ; @paper = ['Dave','P'] ; @scissors = ['Sam','S']
end
describe 'game' do
it 'rock breaks scissors' do
RockPaperScissors.winner(@rock, @scissors).should == @rock
end
it 'scissors cut paper' do
RockPaperScissors.winner(@paper, @scissors).should == @scissors
end
it 'paper covers rock' do
RockPaperScissors.winner(@rock, @paper).should == @paper
end
it 'first player wins if both use same strategy' do
RockPaperScissors.winner(@scissors, ['Dave','S']).should == @scissors
end
end
it "should raise NoSuchStrategyError if strategy isn't R, P, or S" do
lambda { RockPaperScissors.winner(@rock, ['Dave', 'w']) }.
should raise_error(RockPaperScissors::NoSuchStrategyError,
"Strategy must be one of R,P,S")
end
您需要包含顯示如何測試它的代碼。什麼是'player1'有一個'last'方法? 'p1c'的價值是什麼? – Phrogz
順便說一句,在任何遊戲中,石頭,那我打過剪刀也當雙方球員表現出了同樣的策略一位玩家獲勝。 – Phrogz
@Phrogz我知道對不對其從班裏質量要求的一個,我認爲它不公平的地獄但哦。使用RSPEC代碼測試包括現在 – MikaAK