其他分享
首页 > 其他分享> > 斗地主案例分析-斗地主案例实现

斗地主案例分析-斗地主案例实现

作者:互联网

斗地主案例分析

 

 

   看牌;可以使用查表方法
遍历一个集合,获取到另外一个集合的key通过key查找到value
遍历玩家和底牌的List集合,获取到Map集合的key,通过key找到value值

 

斗地主案例实现

package A_Lian_one.demo16;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;

public class DouDiZhu {
    public static void main(String[] args) {
        //准备牌
        //创建一个map集合,存储牌的索引和组装好的牌
        HashMap<Integer, String> poker = new HashMap<>();
        //创建一个List集合,存储牌的索引
        ArrayList<Integer> pokerIndex = new ArrayList<>();
        //定义两个集合,存储花色和牌的序号
//        new Ar
        String[] colors = {"♠", "❤", "♣", "♦"};
        String[] numbers = {"2", "A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3"};
        //把大王和小王存储到集合中
        //定义一个牌的索引
        int index = 0;
        poker.put(index, "大王");
        pokerIndex.add(index);
        index++;
        poker.put(index, "小王");
        pokerIndex.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);

        //洗牌
        Collections.shuffle(pokerIndex);


        //发牌
        //定义4个集合
        ArrayList<Integer> player01 = new ArrayList<>();
        ArrayList<Integer> player02 = new ArrayList<>();
        ArrayList<Integer> player03 = new ArrayList<>();
        ArrayList<Integer> diPai = new ArrayList<>();
        //遍历存储牌索引的list集合,获取每一个牌的索引
        for (int i = 0; i < pokerIndex.size(); i++) {
            Integer in = pokerIndex.get(i);
            //先判断底牌
            if (i>=51){
                //给底牌发牌
                diPai.add(in);
            }else if (i%3==0){
                //给玩家1发牌
                player01.add(in);
            }else if (i%3==1){
                //给玩家2发牌
                player02.add(in);
            }else if (i%3==2){
                //给玩家3发牌
                player03.add(in);
            }
        }

//        排序
        Collections.sort(player01);
        Collections.sort(player02);
        Collections.sort(player03);
        Collections.sort(diPai);

        lookPoker("六的话",poker,player01);
        System.out.println("***********************");
        lookPoker("basd",poker,player02);
        System.out.println("***********************");
        lookPoker("zxc",poker,player03);
        System.out.println("***********************");
        lookPoker("底牌",poker,diPai);

    }
        /*
        定义一个看牌的方法,提高代码的复用性
        参数:
            String name:玩家名称
            定义一个看牌的方法,提高代码的复用性参数:
             String name:玩家名称
            HashMap<Integer, String> poker:存储牌的poker集合ArrayList<integer> lis:存储玩家和底牌的List集合查表法:
            遍历玩家或者底牌集合,获取牌的索引使用牌的索引,去Map集合中,找到对应的牌
         */

    public static void lookPoker(String name,HashMap<Integer,String> poker,ArrayList<Integer> list){
        //输出玩家名称,不换行
        System.out.println(name+": ");
        for (Integer key :
                list) {
            String value = poker.get(key);
            System.out.print(value+" ");
        }
        System.out.println("");
    }
}

 

标签:分析,index,poker,pokerIndex,String,斗地主,ArrayList,案例,集合
来源: https://www.cnblogs.com/leijia/p/16452455.html