2013-03-10 8 views
5

Ho il mazzo di carte che mescola e restituisce risultati, ma ora voglio modificare l'output in base all'input dell'utente: Numero di giocatori e numero di giocatori carte per giocatore.Restituzione del mazzo di carte in base all'input dell'utente per giocatore e carte per giocatore in java

Codice originale:

CardRun - principale

public static void main(String[] args) 
{ 
    Scanner scan = new Scanner(System.in); 
    Deck deck = new Deck(); 
    Card C; 

    System.out.println(deck.getTotalCards()); 
    System.out.print("Number of players: "); 
    int players = scan.nextInt(); 
    System.out.print("Number of cards: "); 
    int cards = scan.nextInt(); 

    while(deck.getTotalCards() != players) 
    { 
     C = deck.drawFromDeck(); 
     System.out.println(C.toString()); 
    } 

} 

Deck Classe

public class Deck { 
private ArrayList<Card>cards; 

Deck() 
{ 
    cards = new ArrayList<Card>(); 
    for(int a=0; a<=3; a++) 
    { 
     for(int b=0; b<=12; b++) 
     { 
      cards.add(drawFromDeck()); 
     } 
     cards.addAll(cards); 
    } 
} 

public Card drawFromDeck() 
{ 
    Random generator = new Random(); 
    int index = generator.nextInt(cards.size()); 
    return cards.remove(index); 
} 

public int getTotalCards() 
{ 
    return cards.size(); 
} 

} 

Carta Classe

01.235.
public class Card { 
private int card, suit; 
private static String[] suits = {"Clubs", "Diamonds", "Hearts", "Spades"}; 
private static String[] cards = {"Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King"}; 

Card(int suit, int card) 
{ 
    this.card = card; 
    this.suit = suit; 
} 

public @Override String toString() 
{ 
    for(int i = 0; i<players; ++i) 
    { 
     System.out.println("Player " + (i+1) + ": "+ cards.get(i)); 
    } 
} 

public int getCard() 
{ 
    return card; 
} 

public int getSuit() 
{ 
    return suit; 
} 
} 

uscita Piattaforma delle schede: 54
Numero di giocatori: 4 (immesso dall'utente)
Numero di carte per utente: 5 (immesso dall'utente)
Giocatore 1: Asso di Picche, 2 di Hearts, Red Joker
Giocatore 2: 8 di cuori, 10 di fiori, 9 di cuori
Il giocatore 1 ha la mano migliore.

+1

Si prega di essere più specifici su come dovrebbe apparire l'output alla fine della giornata :) – poitroae

+0

@poitroae ha aggiunto il formato di output desiderato. Grazie per il tuo aiuto. – Masriyah

risposta

1

come la vedo io, si lascia che ogni giocatore trarre cards carte dal mazzo:

List<Hand> hands = new ArrayList<Hand>(players); // defines each players hand (in your case one, each "cards" cards); 

// let 'em draw 
for(int k=0; k<players; ++k) { 
    Hand currentHand = new Hand(); 
    for(int i=0; i<cards; ++i) { 
     currentHand.add(deck.drawFromDeck()); 
    } 
    hands.add(currentHand); 
} 

// find the best 
Collections.sort(hands); // make sure to implement Comparable, to reasonably check which one has the best hand 

for(int i=0; i<players; ++i) { 
    System.out.println("Player " + (i+1) + ": " + hands.get(i)); // Make sure Hand::toString() is overriden properly 
} 

Sì, penso che dovrebbe farlo ed è ancora perfettamente pulito e modulare.

+0

Ogni giocatore non riceve solo 3 carte, l'utente decide il numero di giocatori e carte nell'input dall'uso dello scanner. ma andrò avanti e applicherò ciò che hai fornito e vedremo come va – Masriyah

+0

@Amina sì, questo è solo un altro parametro, nessun problema con questo disegno. ** L'ho modificato **. – poitroae

+0

Quindi questo significa che dovrò convertire il mio attuale utilizzo di una matrice in una lista di array? Inoltre sto aggiungendo queste modifiche alla classe del mazzo. – Masriyah

Problemi correlati