ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-07-06 21:07:05  阅读:149  来源: 互联网

标签:分析 index poker pokerIndex String 斗地主 ArrayList 案例 集合


斗地主案例分析

 

 

   看牌;可以使用查表方法
遍历一个集合,获取到另外一个集合的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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有