我正在参加Ruby编程的在线课程,我需要将5-Card Draw游戏作为其中一个项目。一切顺利,直到我意识到Ace可以有两个值。
到目前为止,我已经完成了3个课程:Card,Deck和Hand。我目前正在上手工课。其他两个类如下:
class Card
attr_reader :number, :sign, :color
def initialize(number, sign, color)
@number = number
@sign = sign
@color = color
end
end
require_relative 'card.rb'
class Deck
def initialize
@deck = make_deck
end
def make_deck
deck = []
signs = {'Club' => 'black', 'Spade' => 'black', 'Heart' => 'red', 'Diamond' => 'red'}
n = 1
while n < 15
if n == 11
n += 1
next
end
i = 0
4.times do
sign = signs.keys[i]
color = signs[sign]
deck << Card.new(n, sign, color)
i += 1
end
n += 1
end
deck
end
end
所以,当我开始编写Poker Hands in Hand课程时,问题出现了。我不知道如何处理Ace,因为它的值可以是1或15.任何帮助/建议都是受欢迎的。
“Ace可以有两个值”并不是思考它的正确方法。总是让A更高。然后,在检查直道的代码中,你需要特殊情况下的轮子。也就是说,直线被定义为“等级序列中的5张牌,或者A-2-3-4-5”。