2010-02-01 2 views
0

Я использую пример карты классов с веб-сайта java, чтобы попытаться построить игру.Пример карты карты Java - печать значений перечисления

http://java.sun.com/j2se/1.5.0/docs/guide/language/enums.html

Я беру в количестве рук и количество карт на руках в качестве аргументов

как: Java -jar a02.jar 4 3

Я добавил значения в ряды и костюмы. Я печатаю DECK тогда HAND ...

То, что я пытаюсь сделать, это напечатать колоду сначала со своими значениями раз вместе. , например: Десять сердец

Ten = 10 Сердца = 4

Итак, я распечатать Десятка Червей (40)

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

восемь пик (8), десять сердец (40), двойка червей (8)

Что я могу сделать, чтобы исправить это?

Моя другая проблема заключается в том, что есть лучший способ получить значения карт, чем то, что я делаю? Могу ли я использовать некоторый тип сравнения?

, потому что, когда я распечатать руку после того, как колоды я с трудом получают значения и правую руку (так я закомментировать код)

Я также комментировал часть кода в основной() где я получаю значения. Как я могу сделать это по-другому?

Имейте в виду, я хочу значения, напечатанные также с руки, как я делаю с палубы

Я замкнута выход ..

здесь выход:

C:\Java\a02>java -jar a1.jar 3 4 
THREE of SPADES(3),  // i would like this to print out like hand does below 
FIVE of HEARTS(20), 
DEUCE of DIAMONDS(6), 
KING of CLUBS(20), 
DEUCE of HEARTS(8), 
TEN of HEARTS(40), 
JACK of HEARTS(40), 
ACE of HEARTS(44), 
NINE of CLUBS(18), 
EIGHT of SPADES(8), 
QUEEN of SPADES(10), 
KING of HEARTS(40), 
NINE of SPADES(9), 
SEVEN of SPADES(7), 
SEVEN of HEARTS(28), 
EIGHT of HEARTS(32), 
TEN of SPADES(10), 
DEUCE of CLUBS(4), 
EIGHT of DIAMONDS(24), 

// here is the hand - which i also want the values 

[SIX of CLUBS, SEVEN of DIAMONDS, TEN of DIAMONDS, TEN of CLUBS] 
[SIX of HEARTS, THREE of HEARTS, SIX of SPADES, DEUCE of SPADES] 
[JACK of SPADES, NINE of DIAMONDS, SEVEN of CLUBS, THREE of DIAMONDS] 

C:\Java\a02> 

здесь это код:

import java.util.*; 

public class Cards{ 

public enum Rank { DEUCE(2), THREE(3), FOUR(4), FIVE(5), SIX(6), 
SEVEN(7), EIGHT(8), NINE(9), TEN(10), JACK(10), QUEEN(10), KING(10), ACE(11); 

private int Rankpoints; 


private Rank(int points) 
{ 
this.Rankpoints = points; 
} 

public int getRankpoints() 
{ 
return Rankpoints; 
} 


} 

public enum Suit { CLUBS(2), DIAMONDS(3), HEARTS(4), SPADES(1); 

private int Suitpoints; 

Suit(int points) 
{ 

Suitpoints = points; 

} 



public int getSuitpoints() 
{ 
return Suitpoints; 
} 

} 



private final Rank rank; 
private final Suit suit; 

private Cards(Rank rank, Suit suit) 
{ 
this.rank = rank; 
this.suit = suit; 
} 



public Rank rank() 
{ 
return this.rank; 
} 
public Suit suit() 
{ 

return this.suit; 

} 

public String toString() 
{ 
return rank + " of " + suit; 
} 

private static final List<Cards> protoDeck = new ArrayList<Cards>(); 

// Initialize prototype deck 
static { 
for (Suit suit : Suit.values()) 
    for (Rank rank : Rank.values()) 
     protoDeck.add(new Cards(rank, suit)); 

} 

public static ArrayList<Cards> newDeck() 
{ 

return new ArrayList<Cards>(protoDeck); // Return copy of prototype deck 
} 
} 

и здесь является основным()

import java.util.*; 

public class Deal { 
public static void main(String args[]) 
{ 
    int numHands = Integer.parseInt(args[0]); 
    int cardsPerHand = Integer.parseInt(args[1]); 
    List<Cards> deck = Cards.newDeck(); 
    Collections.shuffle(deck); 
    int total = 0; 
    // ArrayList<Cards> hand = new ArrayList<Cards>(); 



    // this is how i am handling the values.. which is not good. 
for (Cards card : deck) 
{ 

for(Cards.Suit a : Cards.Suit.values()) 
{ 


for(Cards.Rank b : Cards.Rank.values()) 
{ 
    if(card.rank() == b) 
    { 


if(card.suit() == a) // as you can see this works. theres got to be a better way?? 
{ 
    total = b.getRankpoints(); 
    // hand.add(card); 
    System.out.println(card.rank() + " of " + card.suit() + "(" + a.getSuitpoints() * total + ")" + ","); 


} 

} 
} 
    } 
} 


    for (int i=0; i < numHands; i++) 
     System.out.println(deal(deck, cardsPerHand)); // prints the hand 
     //deal(deck,cardsPerHand,numHands); 
} 


// hand 
public static ArrayList<Cards> deal(List<Cards> deck, int n) { 
    int deckSize = deck.size(); 
    List<Cards> handView = deck.subList(deckSize-n, deckSize); 
    ArrayList<Cards> hand = new ArrayList<Cards>(handView); 
    handView.clear(); 
    // Map<String, Map<String, Integer>> inputWords = new HashMap<String, Map<String, Integer>>(); 
     int total = 0; 

     return hand; 
    } 

    } 
//for (Cards card : hand) 
//{ 

// for(Cards.Suit a : Cards.Suit.values()) 
// { 
//for(Cards.Rank b : Cards.Rank.values()) 
// { 
    // if(card.rank() == b) 
    // { 

    // if(card.suit() == a) 
//{ 
    // total = b.getRankpoints(); 


    // System.out.println("card.rank() + " of " + card.suit() + "(" + a.getSuitpoints() * total + ")" + ","); 
    // return hand; 
    //} 

//} 
    //} 
//} 

    //} 
    //return hand; 
    //} 

    //} 

Любая помощь очень ценится. фрагменты кода или намеки очень приветствуются =) Имейте в виду, я довольно новыми для Java ..

Спасибо

ответ

1

В отношении получения все это печатать на одной линии, которую вы ищете System.out .print(), а не System.out.println().

+0

, который работает. тем не менее, я хотел бы распечатать его по картам за руку. – Steller

2

Попробуйте изменить классы карты ToString() метод что-то вроде этого:

public String toString() 
{ 
    return rank + " of " + suit+ "(" + suit.getSuitpoints() * rank.getRankpoints() + ")" + ","); 
} 

Тогда это:

System.out.println(card.rank() + " of " + card.suit() + "(" + a.getSuitpoints() * total + ")" + ","); 

Может стать:

System.out.println(card); 
+0

Он по-прежнему делает то же самое. Однако вы решили мою проблему со значениями для HAND. Хорошее задание – Steller

+0

Что я имею в виду, DECK распечатывает то же самое .. – Steller

+0

try следующее для распечатки колоды: System.out.println (колода); – objects

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