斗地主案例的分析与实践
斗地主案例的分析
按照斗地主的规则,完成洗牌发牌的动作。
具体规则:
使用54张牌打乱顺序,三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。
1、准备牌,将54张牌存储到一个集合中。
特殊牌:大王、小王
分别定义数组或者集合存储四种花色以及排的序号
使用循环嵌套遍历这两个数组或者集合,使用字符串拼接再存储到新的数组或者集合中。
最后再添加大王、小王
2、洗牌
可以使用集合工具类的Collections的shuffle( )方法,会随机打乱集合中元素的顺序
3、发牌
要求:1人17张牌,最后剩余3张作为底牌,一人一张轮流发牌,让集合的索引%3;
定义4个集合,用来存储3个玩家的牌和底牌
索引%3为0时添加到第一个集合
索引%3为1时添加到第二个集合
索引%3为2时添加到第三个集合
当索引大于等于51时,添加到底牌集合
4、看牌
直接打印集合,或者遍历存储玩家和底牌的集合
斗地主案例实践
/** * 斗地主综合案例: * 1、准备牌 * 2、洗牌 * 3、发牌 * 4、看牌 */ public class DouDiZhu { public static void main(String[] args) { //准备牌 List<String> list = new ArrayList<>(); String[] arr = {"♠","♥","♣","♦"}; String[] arr1 = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"}; list.add("大王"); list.add("小王"); for (int i = 0; i < arr.length; i++) { for (int j = 0; j < arr1.length; j++) { list.add(arr[i]+arr1[j]); } } //洗牌 Collections.shuffle(list); //发牌 List<String> one = new ArrayList<>(); List<String> two = new ArrayList<>(); List<String> three = new ArrayList<>(); List<String> dipai = new ArrayList<>(); for (int i = 0; i < list.size(); i++) { if (i>=51){ dipai.add(list.get(i)); }else { if (i%3==0){ one.add(list.get(i)); }else if (i%3==1){ two.add(list.get(i)); }else if (i%3==2){ three.add(list.get(i)); } } } System.out.println("张三:"+one); System.out.println("李四:"+two); System.out.println("王五:"+three); System.out.println("底牌:"+dipai); } }

 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号