Java程序斗地主发牌代码,List、Map集合的应用

1 篇文章 0 订阅
1 篇文章 0 订阅

Java集合存储的灵活运用

  1. List集合存储 54个编号

  2. Map <key,value> key 对应的是编号 , value 是 牌的花色(红方梅黑)+ 具体的一张牌 ,比如 黑桃2

  3. 用2个数组 存放 花色+ 13张牌

  4. 将牌的信息 存入到 list和map

  5. 发牌了… (需要打乱顺序)

  6. 看一下 自己是什么牌 (看牌)

代码如下

package DouDiZhu;

import java.util.*;

public class DouDiZhuDemo {
public static void main(String[] args) {

//存放编号
List<Integer> list=new ArrayList<>();
//保存牌的信息
Map<Integer,String> map=new HashMap<>();

//存放4中花色
 String []color={"♥","♠","♦","♣"};

//存放13张牌
String [] number={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};

//记录 54张牌  从0-53
Integer Zongpai=0;

//存储牌信息到上面两个集合

for(String num:number){

for(String col:color){
map.put(Zongpai,col+num);
list.add(Zongpai);
Zongpai++;
}
}

//给54张牌添加大小王
    map.put(52,"大王");
    map.put(53,"小王");
    list.add(52);
    list.add(53);

//发牌之前打乱牌的顺序
    Collections.shuffle(list); //打乱0-53

//发牌准备人数和底牌(3人,底牌3张)
    List<Integer> p1=new ArrayList<>();//第一个人
    List<Integer> p2=new ArrayList<>();//第二个人
    List<Integer> p3=new ArrayList<>();//第三个人
    List<Integer> dipai=new ArrayList<>();//三张底牌

    //开始发牌了
    for (int i = 0;i<list.size() ; i++) {
        //先把三张底牌拿出来
        if (i<3){
            dipai.add(list.get(i));
        }//现在剩余51张牌了
        else if(i%3==0){
            p1.add(list.get(i));
        }else if(i%3==1){
            p2.add(list.get(i));
        }else {
            p3.add(list.get(i));
        }

        
    }

    //将自己的牌排序
    Collections.sort(p1);
    Collections.sort(p2);
    Collections.sort(p3);
    Collections.sort(dipai);

    //看牌  (有3个人名 . 每个人都可以看自己的集合数据)
    // 需要3个数据 , 姓名+p1/p2/p3+map
    show("夏飞飞",p1,map);
    show("吕登登",p2,map);
    show("马总",p3,map);
}

private static void show(String name, List<Integer> list, Map<Integer, String> map) {
    //首先看到的名字
    System.out.println(name+" ");
    for(Integer in:list){
        String value = map.get(in);
        System.out.print(value+"  ");
    }

    System.out.println();
}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值