java模拟斗地主简单机制

1.生成54张扑克牌
2.将54张随机洗牌
3.三个玩家参与游戏,将牌发给三个玩家,最后三张做底牌
4.查看三人手中各自的牌以及底牌

	package Doudizhu;

   import java.util.*;

 //模拟斗地主步骤
/*
*1.买牌
* 2.洗牌
* 3.发牌
* 4.看牌*/
public class Maipai {
public static void main(String[] args) {
    //1.定义一个双链集合,键表示编号,值表示具体的牌
    Map<Integer,String> m=new HashMap<>();
    //2.定义一个单列集合,用来存贮具体牌的编号
    List<Integer> list=new ArrayList<>();
    int num=0;//表示牌的编号
  //3.具体的买牌动作
    //普通牌
    String[] colors={"♠","♥","♣","♦"};
    String[] numbers={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
    for (String number : numbers) {
        //外循环获取所有的点数
        for (String color : colors) {
            //内循环获取花色
            String poker =color + number;
            //将牌的编号,具体的牌放在双列集合中
            m.put(num,poker);
            //将牌的编号放到单列集合中
            list.add(num);
            num++;
        }
    }
    //添加大小王
    m.put(num,"小王");
    list.add(num++);
    m.put(num,"大王");
    list.add(num);
    System.out.println("所有的牌:"+m);
    System.out.println("牌的编号:"+list);
    //洗牌
    Collections.shuffle(list);
    System.out.println("洗完后牌的编号为:"+list);
    //发牌
    //定义四个集合分别表示三个玩家和底牌
    List<Integer> tangsan = new ArrayList<>();
    List<Integer> xiaowu = new ArrayList<>();
    List<Integer> aosika = new ArrayList<>();
    List<Integer> dipai = new ArrayList<>();
    for (int i = 0; i <list.size() ; i++) {
        //获取编号
        Integer pokernum = list.get(i);
        if(i>=list.size()-3){
            dipai.add(pokernum);

        }else if(i%3==0){
            tangsan.add(pokernum);
        }else if(i%3==1){
            xiaowu.add(pokernum);
        }else if(i%3==2){
            aosika.add(pokernum);
        }
    }
    //查看玩家发到的牌

    System.out.println("tangsan:"+printPoker(tangsan,m));
    System.out.println("xiaowu:"+printPoker(xiaowu,m));
    System.out.println("aosika:"+printPoker(aosika,m));
    System.out.println("dipai:"+printPoker(dipai,m));
}


//定义一个方法,用来看牌
public static String printPoker(List<Integer> nums,Map<Integer,String> pokers){
    //对牌的编号进行升序排列
    Collections.sort(nums);
    //遍历集合获取每一个编号
    StringBuilder sb=new StringBuilder();
    for (Integer num : nums) {
        String poker=pokers.get(num);
        //将获取到的牌拼接
        sb.append(poker+" ");
    }
    String str =sb.toString();
    return str.trim();
}
}

输出:
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值