Java实现模拟斗地主洗牌、发牌、看牌并排序

1、模拟斗地主洗牌、发牌、看牌

/*
* 模拟斗地主洗牌、发牌、看牌*/


package PokerDemo;

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

public class Poker {
    public static void main(String[] args) {
        //定义牌盒

        ArrayList<String> arr=new ArrayList<String>();


        String[] colors={"♦","♣","♥","♠"};
        String[] numbers={"2","3","4","5","6","7","8","9","10","J","Q","K","A"};
        //将54张牌存入数组
        for(String color:colors){
            for(String number: numbers){
                arr.add(color+number);
            }
        }
        arr.add("小王");
        arr.add("大王");


        //洗牌
/*        System.out.println(arr);*/
        Collections.shuffle(arr);


        //创建三个玩家和底牌集合
        ArrayList<String> dxp=new ArrayList<String>();
        ArrayList<String> cyy=new ArrayList<String>();
        ArrayList<String> ztw=new ArrayList<String>();
        ArrayList<String> dp=new ArrayList<String>();

        //发牌
        for(int i=0;i< arr.size();i++){
            String poker = arr.get(i);
            if(i>= arr.size()-3){
                dp.add(poker);
            }
            else{
                if(i%3==0){
                    dxp.add(poker);
                }
                else if(i%3==1){
                    cyy.add(poker);
                }
                else if(i%3==2){
                    ztw.add(poker);
                }
            }

        }
        //看牌
        lookPoker("dxp",dxp);
        lookPoker("cyy",cyy);
        lookPoker("ztw",ztw);
        lookPoker("底牌",dp);


    }

    //看牌方法
    public static void lookPoker(String name,ArrayList<String> arr){
        System.out.print(name+"的牌是:");
        for(String poker:arr){
            System.out.print(poker+" ");
        }
        System.out.println();
    }
}

idea运行截图

 

 

2、模拟斗地主洗牌、发牌、看牌,并进行排序

/*
* 思路:
* 创建HashMap,键是编号,牌是值
* 创建ArrayList集合,存储编号
* 创建花色和点数数组
* 将花色和对应数组存入HashMap集合,将编号存入ArrayList集合
* 洗牌(洗编号)
* 发牌(发编号,为了排序利用TreeSet集合存储)
* 定义看牌方法
* 看牌
*/
//模拟斗地主洗牌、发牌、看牌,并进行排序
/*
* 思路:
* 创建HashMap,键是编号,牌是值
* 创建ArrayList集合,存储编号
* 创建花色和点数数组
* 将花色和对应数组存入HashMap集合,将编号存入ArrayList集合
* 洗牌(洗编号)
* 发牌(发编号,为了排序利用TreeSet集合存储)
* 定义看牌方法
* 看牌*/
package PokerDemo;

import java.util.*;

public class Poker2 {
    public static void main(String[] args) {
        //创建HashMap,键是编号,牌是值
        HashMap<Integer,String> hm=new HashMap<Integer,String>();

        //创建ArrayList集合,存储编号
        ArrayList<Integer> arr=new ArrayList<Integer>();
        //创建花色和点数数组
        String[] colors={"♦","♣","♥","♠"};
        String[] numbers={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};

        //创建Poker集合存储牌

        ArrayList<String> poker=new ArrayList<String>() ;
        for(String number:numbers){
            for(String color:colors){
                poker.add(color+number);
            }
        }
        poker.add("小王");
        poker.add("大王");

        //* 将花色和对应数组存入HashMap集合,将编号存入arr集合
        for(int i=0;i<54;i++){
            hm.put(i, poker.get(i));
            arr.add(i);
        }
        //System.out.println(hm);

        //* 洗牌(洗编号)
        Collections.shuffle(arr);

        //* 发牌(发编号,为了排序利用TreeSet集合存储)
        TreeSet<Integer> dxp=new TreeSet<Integer>();
        TreeSet<Integer> cyy=new TreeSet<Integer>();
        TreeSet<Integer> ztw=new TreeSet<Integer>();
        TreeSet<Integer> dp=new TreeSet<Integer>();

        for(int i=0;i< arr.size();i++){
            int poke = arr.get(i);
            if(i>= arr.size()-3){
                dp.add(poke);
            }
            else{
                if(i%3==0){
                    dxp.add(poke);
                }
                else if(i%3==1){
                    cyy.add(poke);
                }
                else if(i%3==2){
                    ztw.add(poke);
                }
            }

        }
        //看牌
        lookPoker("dxp",hm,dxp);
        lookPoker("cyy",hm,cyy);
        lookPoker("ztw",hm,ztw);
        lookPoker("dp",hm,dp);
    }

    public static void lookPoker(String name,HashMap<Integer,String> hm,TreeSet<Integer> ts){
        System.out.print(name+"的牌是:");
        for(Integer i:ts){
            String s = hm.get(i);
            System.out.print(s+" ");
        }
        System.out.println();
    }


}

 idea运行截图

  • 7
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NEUMaple

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值