模拟斗地主洗牌发牌
3.1 案例介绍
按照斗地主的规则,完成洗牌发牌的动作。
具体规则:
- 组装54张扑克牌将
- 54张牌顺序打乱
- 三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。
- 查看三人各自手中的牌(按照牌的大小排序)、底牌
规则:手中扑克牌从大到小的摆放顺序:大王,小王,2,A,K,Q,J,10,9,8,7,6,5,4,3
3.2 案例需求分析
- 准备牌:
完成数字与纸牌的映射关系:
使用双列Map(HashMap)集合,完成一个数字与字符串纸牌的对应关系(相当于一个字典)。
- 洗牌:
通过数字完成洗牌发牌
- 发牌:
将每个人以及底牌设计为ArrayList
存放的过程中要求数字大小与斗地主规则的大小对应。
将代表不同纸牌的数字分配给不同的玩家与底牌。
- 看牌:
通过Map集合找到对应字符展示。
通过查询纸牌与数字的对应关系,由数字转成纸牌字符串再进行展示。
public static void main(String[] args) {
// 1.准备牌
// 创建一个Map集合,存储牌的索引和组装好的牌
HashMap<Integer,String> poker = new HashMap<>();
// 创建一个List集合,存储牌的索引
List<Integer> pokerIndex = new ArrayList<>();
// 定义两个集合,存储花色和牌的序号
ArrayList<String> colors = List.of("♦", "♣", "♥", "♠");
ArrayList<String> numbers =List.of("2", "A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3");
// 把大王和小王存储到集合中
// 定义一个牌的索引
int index = 0;
poker.put(index,"大王");
poker.Index.add(index);
index++;
poker.put(index,"小王");
poker.Index.add(index);
index++;
//循环嵌套遍历两个集合,组装52张牌,存储到集合中
for(String number:Numbers){
for(String color:colors){
poker.put(index,color+number);
pokerIndex.add(index);
index++;
}
}
System.out.println(poker);
System.out.println(pokerIndex);
}