斗地主案例的需求分析和代码实现
作者:互联网
斗地主案例的需求分析
按照斗地主规则,完成洗牌发牌的动作。
具体规则:
使用54张牌打乱顺序,三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。
1、准备牌,将54张牌存储到一个集合中。
特殊牌:大王、小王
分别定义数组或者集合存储四种花色以及排的序号
使用循环嵌套遍历这两个数组或者集合,使用字符串拼接再存储到新的数组或者集合中。
最后再添加大王、小王
2、洗牌
可以使用集合工具类的Collections的shuffle( )方法,会随机打乱集合中元素的顺序
3、发牌
要求:1人17张牌,最后剩余3张作为底牌,一人一张轮流发牌,让集合的索引%3;
定义4个集合,用来存储3个玩家的牌和底牌
索引%3为0时添加到第一个集合
索引%3为1时添加到第二个集合
索引%3为2时添加到第三个集合
当索引大于等于51时,添加到底牌集合
4、看牌
直接打印集合,或者遍历存储玩家和底牌的集合
斗地主案例的代码实现:
public class demg_09 { public static void main(String[] args) { //准备洗牌 List<String> list = new ArrayList<>(); String[] colors = {"♠","♥","♣","♦"}; String[] numbers = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"}; //先把大王小王存储到集合中 list.add("大王"); list.add("小王"); //循环嵌套遍历两个数组,组装52张牌 for (String number : numbers) { for (String color : colors) { //把组装好的牌存储到集合当中 list.add(color+number); } } /* 洗牌 使用集合的工具类Collections中的方法 */ Collections.shuffle(list); /* 发牌 定义四个集合,存储玩家的牌和底牌 */ ArrayList<String> arrayList1 = new ArrayList<>(); ArrayList<String> arrayList2 = new ArrayList<>(); ArrayList<String> arrayList3 = new ArrayList<>(); ArrayList<String> arrayList4 = new ArrayList<>(); /* 遍历集合,获取每一张牌 使用集合的索引%3给三个玩家轮流发牌 剩余:3张牌给底牌 注意: 先判断底牌(i>51),否则牌就发没了 */ for (int i = 0; i <list.size() ; i++) { //获取每一张牌 String p = list.get(i); //轮流发牌 if (i>=51){ //改底层发牌 arrayList4.add(p); }else if (i%3==0){ //给玩家1发牌 arrayList1.add(p); }else if (i%3==1){ //给玩家2发牌 arrayList2.add(p); }else if (i%3==2){ //给玩家3发牌 arrayList3.add(p); } } //看牌 System.out.println("兵王强"+arrayList1); System.out.println("空军中尉"+arrayList2); System.out.println("空军上尉"+arrayList3); System.out.println("底牌"+arrayList4); } }
标签:底牌,斗地主,代码,玩家,案例,add,ArrayList,集合,发牌 来源: https://www.cnblogs.com/aqhk/p/16450808.html