斗地主案例
案例介绍
按照斗地主的规则 完成洗牌发牌的动作
具体规则:
使用54张牌打乱顺序 三个玩家参与游戏,三个人交替摸牌,每人17张牌,最后三张留作底牌
案例分析
- 准备牌
牌可以设置为一个ArrayList<String>,每个字符串为一张牌
张牌由花色数字两部分组成 我们可以使用花色集合与数字集合嵌套迭代完成每张牌的组装
牌由Collections类的shuffle方法进行随机排序
- 发牌
将每个人以及底牌设计为ArrayList<String>,将最后3张牌直接存于底牌 剩余牌通过对3取模依次发牌
- 看牌
直接打印每个集合
代码:
public static void main(String[] args) {
//创建一个集合用于存储扑克牌
ArrayList<String> list = new ArrayList<>();
//定义两个数组存放花色和牌的点数
String[] colors={"♠","♣","♥","♦"};
String[] numbers={"2","A","K","Q","J","10","9","8","7","6","5","4","3"};
//将两张特殊的牌放入集合
list.add("大王");
list.add("小王");
//使用嵌套增强for循环将花色和点数存入集合
for (String color : colors) {
for (String number : numbers) {
list.add(color+number);
}
}
//使用Collections集合工具类里的shuffle进行洗牌
Collections.shuffle(list);
//创建四个集合 分别是第一个人、第二个人、第三个人、底牌
ArrayList<String> person1 = new ArrayList<>();
ArrayList<String> person2 = new ArrayList<>();
ArrayList<String> person3 = new ArrayList<>();
ArrayList<String> cards = new ArrayList<>();
//使用for进行遍历添加集合
for (int i = 0; i < list.size(); i++) {
if (i>=51){
//给底牌进行发牌
cards.add(list.get(i));
}else if (i%3==0){
//给底牌进行发牌
person1.add(list.get(i));
}else if (i%3==1){
//给底牌进行发牌
person2.add(list.get(i));
}else if (i%3==2){
//给底牌进行发牌
person3.add(list.get(i));
}
}
//查看所有人的牌
System.out.println("张三:"+person1);
System.out.println("李四:"+person2);
System.out.println("王五:"+person3);
System.out.println("底牌:"+cards);
}