2013-03-10 22 views
5

Kart karesi karıştırma ve geri dönüş sonuçları var ama şimdi çıkışı kullanıcı girişine göre değiştirmek istiyorum: Oyuncu sayısı ve sayısı oyuncu başına kart.Oynatıcı ve oyuncu başına oyuncu bazında kartların geri döndürülmesi javada

Orjinal kodu:

CardRun - Ana

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()); 
    } 

} 

Güverte Sınıf

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(); 
} 

} 

Kart Sınıf

Kartların
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; 
} 
} 

Çıktı Güverte: 54 Oyuncu
sayısı: 4 (kullanıcı tarafından girilen) kullanıcı başına kartların
sayısı: 5 (kullanıcı tarafından girilen)
Oyuncu 1: Maça Ası, 2 of Hearts, Kırmızı Joker
Oyuncu 2: 8 of Hearts, 10 of Clubs, 9 of Hearts
Oyuncu 1 daha iyi ele sahiptir.

+1

Lütfen çıktının günün sonunda nasıl görünmesi gerektiği konusunda daha kesin olun :) – poitroae

+0

@poitroae istenilen çıktı biçimini ekledi. Önünüzdeki yardımlarınız için teşekkürler. – Masriyah

cevap

1

gördüğüm gibi, her oyuncu güvertesinden cards kartlarını çizelim:

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 
} 

Evet, bunu yeter bence ve hala mükemmel temiz ve modüler olduğunu.

+0

Her oyuncu sadece 3 kart almaz, kullanıcı girişteki tarayıcı ve kart sayısını tarayıcıdan kullanmaya karar verir. ama ben devam edip neler sağladığınızı uygula ve ne yapacağını görüyorum – Masriyah

+0

@Amina yep bu tasarımla ilgili bir başka parametre değil. ** Düzenledim **. – poitroae

+0

Yani bu, bir dizinin mevcut kullanımını bir arrayList'e dönüştürmek zorunda kalacağım anlamına mı geliyor? Ayrıca bu değişiklikleri güverte sınıfına ekliyorum. – Masriyah

İlgili konular