すべてのカードを引いた後、カードのデッキをリセットしようとする問題を解決しようとしています。デッキの最後に到達すると、確かにメッセージDeck is empty! You must recreate and reshuffle deck of cards!
が表示されるはずですが、デッキが再作成されて再シャッフルされると、このメッセージが引き続き表示されます。
だから私は Card オブジェクトを Deck クラスに渡し、スタック形式で配列に格納します。
カードのデッキを実際にリセットしたのに、なぜそのような出力が得られるのですか?
deal, bet, hit, stay, split, leave: deal
Drawing Player's card... 9 ♥
Drawing Dealer's card... A ♣
Drawing Player's card... 7 ♦
Drawing Dealer's card... K ♦
Dealers Hand: K_♦ A_♣ = 21
Players Hand: 7_♦ 9_♥ = 16
Dealer has BLACKJACK!
deal, bet, hit, stay, split, leave: deal
Deck is empty! You must recreate and reshuffle deck of cards!
Creating deck...
Shuffling deck...
Drawing Player's card... 7 ♥
Drawing Dealer's card... 5 ♥
Drawing Player's card... K ♠
Drawing Dealer's card... 6 ♦
Dealers Hand: 6_♦ 5_♥ = 11
Players Hand: K_♠ 7_♥ = 17
deal, bet, hit, stay, split, leave: deal
Deck is empty! You must recreate and reshuffle deck of cards!
Creating deck...
Shuffling deck...
Drawing Player's card... Q ♦
Drawing Dealer's card... 9 ♥
Drawing Player's card... 8 ♥
Drawing Dealer's card... 10 ♠
Dealers Hand: 10_♠ 9_♥ = 19
Players Hand: 8_♥ Q_♦ = 18
deal, bet, hit, stay, split, leave: deal
Deck is empty! You must recreate and reshuffle deck of cards!
Creating deck...
Shuffling deck...
Drawing Player's card... 3 ♣
Drawing Dealer's card... 6 ♠
Drawing Player's card... 4 ♠
Drawing Dealer's card... K ♠
Dealers Hand: K_♠ 6_♠ = 16
Players Hand: 4_♠ 3_♣ = 7
deal, bet, hit, stay, split, leave:
これは、カードのデッキをリセットする方法です。
private static Deck createDeck(Deck deck)
{
System.out.println("Creating deck...");
deck = new Deck(DECKSIZE);
deck.createDeck();
System.out.println("Shuffling deck...");
deck.shuffleDeck();
return deck;
}
これは、デッキが空かどうかを確認する方法です。
private static Deck checkDeck(Deck deck)
{
if(deck == null)
return createDeck(deck);
if(deck.isEmpty())
{
deck = new Deck(DECKSIZE);
System.out.print("Deck is empty! You must recreate and reshuffle deck of cards!\n");
return createDeck(deck);
}
else
return deck;
}
カードを引く前に毎回デッキをチェックします。
public static void drawFromDeck(Deck deck, Hand hand)
{
deck = checkDeck(deck);
Card temp = new Card(deck.pop());
System.out.println("Drawing " + hand.getName() + "'s card... " + temp.toString());
hand.insert(temp);
System.out.print("\n");
}
initialDraw()
private static void initialDraw(Deck deck, Hand player, Hand dealer)
{
deck = checkDeck(deck);
drawFromDeck(deck, player); // drawing players card
deck = checkDeck(deck);
drawFromDeck(deck, dealer); // drawing dealers card
deck = checkDeck(deck);
drawFromDeck(deck, player); // drawing players card
deck = checkDeck(deck);
drawFromDeck(deck, dealer); // drawing dealers card
System.out.print("Dealers Hand:");
dealer.displayHand();
System.out.print(" = " + dealer.getHandTotal() + "\n");
System.out.print("Players Hand:");
player.displayHand();
System.out.print(" = " + player.getHandTotal() + "\n");
checkInitialDraw(player, dealer);
}