作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试开发一款 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/
我是一名优秀的程序员,十分优秀!