斗地主游戏

规则如下:
1.有三名玩家,可从控制台赋值玩家姓名,玩家中会有牌类集合的属性,还有是否是地主的状态
2.牌类有两个属性:花色和点数。花色有4种:黑红梅方(可用枚举)点数对应有13加上两张王牌(可用枚举)。
3.扑克牌管理类:用于产生54张随即顺序的牌堆(牌类集合,54张牌不变,变得是顺序),给玩家发牌,并随机产生地主,把剩余3张底牌给地主,并展示三位玩家的手牌
评分标准:
1.能产生54张牌的集合(30分)
2.能产生随机的54张牌的集合或能实现随机发牌的功能(20分)
3.玩家类和三名玩家对象名称赋值(10分)
4.能实现随机产生地主,并给三位玩家分配牌的集合(20分)

题目内容的注释已经写在呢代码行里

public static void main(String[] args) {
        ArrayList<String >list=new ArrayList<>();
        //首先是存入牌,先把大王和小王存入
        list.add("大王");
        list.add("小王");
        //然后先用两个数组分别存储花色和点数
        String[] huaShe={"♠","♣","♥","♦"};
        String[]  dianShu={"2","A","K","Q","J","10","9","8","7","6","5","4","3"};
        for (String s : huaShe) {
            for (String s1 : dianShu) {
                list.add(s+s1);//这里将54张牌存入list集合
               // System.out.println(s+s1);
            }
        }
        //接下来是洗牌环节,要用到Collections方法
        Collections.shuffle(list);//将54张牌随机打乱输出
        System.out.println(list);
        //接下来到了发牌阶段,三个人每人发17张牌就和存入到三个集合中,
        //而对应的每个人可用i%3来代替索引,剩下的三张当i>51时取出
        ArrayList<String > player1=new ArrayList<>();
        ArrayList<String > player2=new ArrayList<>();
        ArrayList<String > player3=new ArrayList<>();
        ArrayList<String > dipai=new ArrayList<>();
        //这里的分配要用到索引需要用普通for循环
        for (int i = 0; i < list.size(); i++) {
            String p=list.get(i);//将符合条件的值赋值给p,方便输出
            if (i>=51){
                dipai.add(p);
            }else if (i%3==0){
                player1.add(p);
            }else if (i%3==1){
                player2.add(p);
            }else if (i%3==2){
                player3.add(p);
            }

        }
//        System.out.println(dipai);
//        System.out.println(player1);
//        System.out.println(player2);
//        System.out.println(player3);

       ArrayList<String > li=new ArrayList<>();//这里是为了给出玩家的姓名
       li.add("张三");
       li.add("李四");
       li.add("王二麻子");
       Collections.shuffle(li);//随机给地主,我在这里转化思想为地主固定,人物随机对应到地主,也可以实现地主随机
       HashMap<String, String> hash=new HashMap<>();
        for (int i = 0; i < li.size(); i++) {
            if (i==0) {
                hash.put("地主", li.get(i));
                System.out.println("地主是:"+hash.get("地主")+",地主牌是:"+player3+",加底牌"+dipai);
            }else if (i==1){
                System.out.println(li.get(i)+"的牌是:"+player1);
            }else if (i==2){
                System.out.println(li.get(i)+"的牌是:"+player2);
            }
        }



    }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值