아래 코드를 실행하는 중에 "스택 레벨이 너무 딥"오류가 발생합니다. 선택한 무작위 카드가없는 경우 다른 무작위 카드를 선택합니다. 어떻게 든 코드를 작성해야 겠지만 확실하지는 않습니다. 어떤 제안?Ruby에서 스택 레벨이 너무 커서 임의의 카드를 그려야합니다
def hit
choice_of_card = rand($deck.length); #choose a random card out of the deck
drawn_card = $deck[choice_of_card]; #draw that random card from the deck
if drawn_card != 0 #if there is a card there
$deck[choice_of_card] = 0; #remove that card from the deck by making the space blank
if drawn_card == 11 #if you draw an ace
self.ace_count += 1;
end
self.hand_value += drawn_card ;
else hit; #if there is no card at that space then redraw (recursion)
end
end
당신은 갑판에서 적어도 하나의 카드가 있는지 확인해야'deck.find {|! C | 무한 루프를 방지하기 위해 [c> 0}' – Baldrick
[Array # shuffle] (http://www.ruby-doc.org/core-1.9.3/Array.html#method-i-sample) 또는 [Array # sample] (http://www.ruby-doc.org/core-1.9.3/Array.html#method-i-shuffle) 코드를 단순화 할 수 있습니다. – steenslag