扑克牌之斗地主的简单代码

斗地主的代码:

package demo8;

import java.util.*;

public class Test8 {
    public static void main(String[] args) {
        // 生成扑克
        HashMap<Integer,String> map=new HashMap<>();      
        ArrayList<Integer> picket=new ArrayList<>();    //  用来存键值,也是存扑克的张数
        String[] type=new String[]{"♦","♣","♥","♠"};
        String[] nums=new String[]{"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
        int index=0;
        for (int i=0;i<nums.length;i++){
            for (int j=0;j<type.length;j++){
                map.put(index,type[j]+nums[i]);
                picket.add(index);
                index++;

            }
        }
        //System.out.println(index);//输的索引为52
         picket.add(index);//存第52张牌进集合,因为索引从0开始,第52张就是第53张牌
         map.put(index,"小♛");
         index++;
         picket.add(index);//存第53张牌进去
         map.put(index,"大♛");
        // System.out.println(map);//查看生成的牌齐全没
        //洗牌
        Collections.shuffle(picket);
        //System.out.println(picket);// 查看牌的索引是否被打乱
        //发牌(拿牌)
        TreeSet<Integer> player1=new TreeSet<>(); // 玩家1
        TreeSet<Integer> player2=new TreeSet<>(); // 玩家2
        TreeSet<Integer> player3=new TreeSet<>(); // 玩家3
        TreeSet<Integer> dipai=new TreeSet<>();   // 底牌
        // 发牌 ,发索引,根据索引找值,map
        for (int i=0;i<picket.size();i++){
            if (i>=picket.size()-3){
                dipai.add(picket.get(i));
            }else if (i%3==0){
                player1.add(picket.get(i));
            }else if (i%3==1){
                player2.add(picket.get(i));
            }else if(i%3==2){
                player3.add(picket.get(i));
            }
        }
        //System.out.println(player1);//  输出一个玩家查看是否为17张牌
        seeCards("小明",player1,map);
        seeCards("小饭",player2,map);
        seeCards("小扣",player3,map);
        seeCards("底牌",dipai,map);

    }

    // 封装看牌方法,需要的形参为玩家名字,玩家的牌号(索引),牌的值(map)
     public static void seeCards(String name,TreeSet<Integer> players, HashMap<Integer,String> map){
         System.out.print(name+"的牌为:");
         Iterator<Integer> iter=players.iterator();//  玩家的牌开始遍历
         while (iter.hasNext()){
             System.out.print(map.get(iter.next())+" ");// 得到玩家的牌值
         }
         System.out.println();
     }


}

灵活运用HashMap的键值对,键存张数,value存花色。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值