2014-09-20 4 views
0

Я пытаюсь написать код, который создает два массива, один с костюмами, один со значениями, колоды карт. Затем он случайным образом перетасовывает карты и распечатывает карты, которые раздаются каждому из четырех игроков. Если бы кто-нибудь мог дать мне некоторые идеи о том, как исходить из того, что у меня есть, я был бы благодарен. Основные проблемы, с которыми я столкнулся, - как переключить массивы (перетасовать), а затем, как показать, что игроки получают (имеют дело).Работа с четырьмя случайными руками из колоды карт в Java с использованием массивов

public class BridgeHands 

{ 

private card[] deck; 
private int cardsUsed; 

public static void dealHands() 
{ 
    final int SUITS = 4;     // number of suits in a standard deck 
    final int CARDS_PER_SUIT = 13;   // number of cards in each suit 
    final int CARDS = SUITS*CARDS_PER_SUIT; // number of cards in a standard deck 

    deck = new Card[CARDS]; 
    int cardCt = 0; 
    for(int suit = 0; suit < SUITS; suit++) 
    { 
     for(int value = 1; value < CARDS_PER_SUIT; value++) 
     { 
      deck[cardCt] = new Card(value,suit); 
      cardCt++; 
     } 
     cards used = 0; 

    } 
} 

public void shuffle() 
{ 
    for(int i = deck.length-1; i > 0; i--) 
    { 
     int rand = (int)(Math.random()*(i+1)); 
     Card temp = deck[i]; 
     deck[i] = deck[rand]; 
     deck [rand] = temp; 
    } 
    cards used = 0; 
} 

public int cardsLeft() 
{ 
    int cardsUsed = 0; 
    return deck.length - cardsUsed; 
} 

public Card dealCard() 
{ 
    if(cardsUsed == deck.length) 
     throw new IllegalStateException("No cards are left in the deck."); 
    cardsUsed++; 
    return deck[cardsUsed - 1]; 
} 

final int HANDS = 4; 
final int CARDS_PER_HAND = CARDS/HANDS; 

public static String cardName(int suit, int value) 
{ 
    final String[] CARD_NAMES = 
     {"not used", "ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "jack", "queen", "king"}; 
    final String[] SUIT_NAMES = 
     {"spades", "clubs", "diamonds", "hearts"}; 

    return CARD_NAMES[value] + " of " + SUIT_NAMES[suit]; 
} 

}

+0

Перемешать массив не сложно, см. [This] (http://stackoverflow.com/a/3732080/3755692) ответ. И что вы подразумеваете под _ «как показать, что игроки получают (дело)» _? – msrd0

+0

И вы пропустите ';' в этой строке: 'count = count - 1'. BTW Я бы заменил это на 'count -;' – msrd0

+0

IIWY Я бы создал классы 'Card' и' Deck' и 'SUITE' и' VALUE'. Тогда все вместе; нет необходимости отслеживать кучу вещей при перетасовке. – ChiefTwoPencils

ответ

-1

я борюсь с тем же вопросом, как вы, мы, вероятно, в том же блоке. Я сделал немного больше, чем вы для перетасовки, у меня есть:

int cards = 52; 
    int card1, card2 
    while (cards > 1) 

      for(int k=0; k<100; k++) 
     { 
      card1 = rand.nextInt(52); 
      card2 = rand.nextInt(52); 
      int keepSuit = dk[card1]; 
      dk[card1] = dk[card2]; 
      dk[card2] = keepSuit; 
     } 

Возможно, это помогает? Не уверен, правда ли, однако, извините.

+0

Это дало мне ключ, но я не думаю, что собираюсь заставить меня работать. – civitas

Смежные вопросы