루비에 카드 게임 프레임 워크를 쓰고 있는데 문제가 있습니다. 나는 카드를 섞을 셔플 방법을 만들었지 만 잘 작동한다. 그러나 나는 Deck # shuffle 대신에 Deck # shuffle이라고 부릅니다. 그것은 내가 원하지 않는 데크를 섞는다.데크 # 셔플 및 데크 # 셔플!
또한 내가 추가 할 때 : riffle을 인수로 사용하면 셔플은 내가 원하는 데크를 유지하지 않는다는 것을 알게됩니다.
갑판 # 셔플이 갑판을 수정하는 것을 방지하는 방법에 대한 도움을 주시면 감사하겠습니다. 감사!
가 여기 내 코드 (사람이 너무 저를 필요로하는 경우도 그것의 일부, 나는 나머지를 게시 할 수 있습니다) :
class Deck
def initialize
@cards = []
(1..4).each { |suit|
(1..13).each { |rank|
@cards << Card.new(rank, suit)
}
}
end
def size
@deck.length
end
def shuffle!(type = :random, precision = 100)
case type
when :random
@cards.shuffle!
when :riffle, :farro
i = 0
first, second = cut
@cards = []
while size != 52
pile = (i.even? ? first : second)
if pile.empty?
pile = (pile == first ? second : first)
end
add_card(pile.pop)
i += 1 if (1..precision) === rand(1..100)
end
else
warn "Invalid shuffle method."
end
end
def shuffle(type = :random, precision = 100)
dup.shuffle!(type, precision)
end
def add_card(card)
@cards << card
end
end
deck = Deck.new
deck.shuffle
p deck.cards.map(&:to_a)