模拟斗地主,54张扑克牌,随机打乱,三个人交替摸牌,每人十七张,最后三张作为底牌 查看每个得牌与底牌 手中扑克牌从大到小摆放 案例需求分析 准备牌: 完成数字与纸牌的映射关系: 使用双列Map(HashMap)集合,完成一个数字与字符串纸牌的对应关系 洗牌(ArrayList<Integer>记录54个牌的编号) 通过数字完成洗牌发牌(Collections shuffle(List list)) 发牌(发的是牌的编号) 将每个人以及底牌设计为ArrayList<String>,将最后3张牌直接存放于底牌,剩余牌通过对3取模依次发牌 存放的过程中要求数字大小与斗地主规则的大小对应 将代表不同纸牌的数字分配给不同的玩家与底牌 看牌 通过Map集合找到对应字符展示。通过牌的编号,去Map集合中,查询对应编号的扑克牌 通过查询纸牌与数字的对应关系,由数字转成纸牌字符串再进行展示(把查询到的扑克牌存储到ArrayList<String>)
时间: 2024-04-15 20:31:30 浏览: 121
首先,我们需要创建一个数字与纸牌的映射关系。可以使用双列Map(HashMap)集合来完成这个任务。其中,键表示数字,值表示对应的纸牌字符串。以下是一个示例代码:
```java
Map<Integer, String> cardMap = new HashMap<>();
cardMap.put(0, "大王");
cardMap.put(1, "小王");
cardMap.put(2, "A");
cardMap.put(3, "K");
// 其他纸牌的映射关系...
```
接下来,我们需要洗牌并发牌。首先,我们创建一个包含54个牌的编号列表,并通过Collections.shuffle()方法来进行洗牌操作。
```java
List<Integer> cardList = new ArrayList<>();
for (int i = 0; i < 54; i++) {
cardList.add(i);
}
Collections.shuffle(cardList);
```
然后,我们创建三个玩家的ArrayList<String>对象以及一个底牌的ArrayList<String>对象。最后3张牌直接存放于底牌,剩余的牌通过对3取模依次发牌给每个玩家。
```java
List<String> player1 = new ArrayList<>();
List<String> player2 = new ArrayList<>();
List<String> player3 = new ArrayList<>();
List<String> bottomCards = new ArrayList<>();
for (int i = 0; i < cardList.size(); i++) {
int cardIndex = cardList.get(i);
String card = cardMap.get(cardIndex);
if (i >= 51) {
bottomCards.add(card);
} else {
if (i % 3 == 0) {
player1.add(card);
} else if (i % 3 == 1) {
player2.add(card);
} else {
player3.add(card);
}
}
}
```
最后,我们可以通过查询纸牌与数字的映射关系,将数字转换成对应的纸牌字符串,并将其存储到ArrayList<String>中。这样就可以展示每个玩家的手牌和底牌了。
```java
List<String> player1Cards = new ArrayList<>();
for (int cardIndex : player1) {
String card = cardMap.get(cardIndex);
player1Cards.add(card);
}
// 同样的操作,展示player2、player3和bottomCards
```
以上是一个实现模拟斗地主发牌并展示的简单示例,你可以根据实际需求进行修改和扩展。
阅读全文