我正在尝试开发UNO纸牌游戏,现在我需要一个可以容纳整个卡座的数据结构,然后可以将其取用并分配到几个地方(玩家,桩和抽签桩)。该代码将是这样的:
public class UnoGame
{
public UnoGame()
{
SomeDataStructure<Card> unoDeck = generateUnoCards();
List<Cards> player1 = unoDeck.get(7);
List<Cards> player2 = unoDeck.get(7);
List<Cards> discardPile = unoDeck.get(1);
List<Cards> drawPile = unoDeck.getRest();
}
private static SomeDataStructure<Card> generateUnoCards()
{
SomeDataStructure<Card> cards = new SomeDataStructure<Card>(108);
// Here we can create the proper cards and add them to the data structre
Collections.shuffle(cards);
return cards;
}
}
那么,Java中是否有任何适合我需求的内置数据结构?还是应该实现自己的数据结构?
最佳答案
尚不清楚为什么您需要任何特殊的东西。我将按照真实游戏对其进行建模:所有纸牌的堆栈(使用LinkedList<T>
作为堆栈实现),然后将其取下以得到一手牌,并在以后用于提取纸牌。我会为每个玩家建模一个单独的类……即使最初它只是包含一个List<Card>
或类似的东西。
List<Player> players = new ArrayList<Player>();
LinkedList<Card> deck = createDeck(); // This should shuffle too
for (int i = 0; i < playerCount; i++) {
Player player = new Player();
players.add(player);
for (int j = 0; j < 7; j++) {
player.addCard(deck.removeLast());
}
}
LinkedList<Card> discards = new LinkedList<Card>();
在任何时候,如果您考虑一下物理游戏中会发生什么,那么它应该相当容易。
关于java - 拥有元素的最佳数据结构,这些元素以后可以在涉众之间分配?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9627888/