📄 deck.java
字号:
import java.util.*;
// 表示任何数量的一副牌
public class Deck
{
// Card对象的栈
protected Stack cards;
// 所有已取出牌的集合
protected List drawnCards;
// 在上面的列表中允许随机获取
protected Random random;
// 按照给定的数量创建一个Deck
public Deck(int size)
{
// 把给定数目的牌压入栈中
cards = new Stack();
for(int i = 0; i < size; i++)
{
cards.push(new Card(i));
}
// 为已取出的牌创建一个池,并创建数字产生器
drawnCards = new ArrayList();
random = new Random();
// 洗牌
shuffle();
}
// 返回和这幅牌相关的数字
public int getSize()
{
return cards.size() + drawnCards.size();
}
// 从顶部取牌
public Card draw()
{
// 如果栈为空,使用使用取出的牌填充
if(cards.isEmpty())
{
shuffle();
}
// 弹出顶部的牌,把它加到堆中,然后返回它
Object card = cards.pop();
drawnCards.add(card);
return (Card)card;
}
// 随机取出一张牌
public void shuffle()
{
// 清空栈
while(!cards.isEmpty())
{
drawnCards.add(cards.pop());
}
// 把取出的牌随机放回到栈中
Object card = null;
while(!drawnCards.isEmpty())
{
card = drawnCards.remove(Math.abs(random.nextInt())%drawnCards.size());
cards.push(card);
}
}
} // Deck
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -