java集合练习,模拟扑克牌发牌。打印最后每个玩家的手牌信息。地主用随机数生成。

47 篇文章 9 订阅

分析:

首先,创建两个集合color和num,存放花色和牌的大小。

用Collections.addAll添加花色和牌的大小到集合中。

 ArrayList<String>color=new ArrayList<String>();
   ArrayList<String>num=new ArrayList<String>();
   Collections.addAll(color,"♥","♠","♣","♦");
   Collections.addAll(num,"A","2","3","4","5","6","7","8","9","10","J","Q","K");

 

 

第二步,创建poker集合,用两个循环嵌套拼接花色和牌的大小到poker集合中,每循环一次就添加一个。最后把大小王单独添加到poker集合中。用Collections.shuffle(poker);打乱集合顺序。

 ArrayList<String>poker=new ArrayList<String>();
   for(int i=0;i<color.size();i++)
   {
       for(int j=0;j<num.size();j++)
       {
           poker.add(color.get(i)+num.get(j));
       }
   }
   poker.add("大王");
   poker.add("小王");

Collections.shuffle(poker);

 

第三步,创建三位玩家的手牌集合,用循环把poker集合的前51的索引元素通过取余的方法平均添加到每位玩家的手牌集合中。

 ArrayList<String>play1=new ArrayList<String>();
   ArrayList<String>play2=new ArrayList<String>();
   ArrayList<String>play3=new ArrayList<String>();
    for(int i=0;i<51;i++)
    {
        if(i%3==0)
        {
            play1.add(poker.get(i));
        }
        else if(i%3==1)
        {
            play2.add(poker.get(i));
        }
        else {
            play3.add(poker.get(i));
        }
    }

第四步, 随机数生成地主,并且把剩下三张牌添加到对应的玩家手牌集合中。最后打印玩家手牌信息。

Random r=new Random();
    int moster=r.nextInt(3)+1;
    switch (moster) {
    case 1: {
        System.out.println("玩家一没头脑抢到了地主");
        Collections.addAll(play1, poker.get(51),poker.get(52),poker.get(53));
        break;
    }
    case 2: {
        System.out.println("玩家二不开心抢到了地主");
        Collections.addAll(play2, poker.get(51),poker.get(52),poker.get(53));
        break;
    }
    default: {
        System.out.println("玩家三不聪明抢到了地主");
        Collections.addAll(play3, poker.get(51),poker.get(52),poker.get(53));
        break;
    }
     }
    System.out.println("玩家一没头脑的牌有"+play1);
    System.out.println("玩家二不开心的牌有"+play2);
    System.out.println("玩家三不聪明的牌有"+play3);
  }
}

 代码结果如下:

 完整代码:

package act;
import java.util.*;
public class Test2 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
   ArrayList<String>color=new ArrayList<String>();
   ArrayList<String>num=new ArrayList<String>();
   Collections.addAll(color,"♥","♠","♣","♦");
   Collections.addAll(num,"A","2","3","4","5","6","7","8","9","10","J","Q","K");
   ArrayList<String>poker=new ArrayList<String>();
   for(int i=0;i<color.size();i++)
   {
       for(int j=0;j<num.size();j++)
       {
           poker.add(color.get(i)+num.get(j));
       }
   }
   poker.add("大王");
   poker.add("小王");
   Collections.shuffle(poker);
   ArrayList<String>play1=new ArrayList<String>();
   ArrayList<String>play2=new ArrayList<String>();
   ArrayList<String>play3=new ArrayList<String>();
    for(int i=0;i<51;i++)
    {
        if(i%3==0)
        {
            play1.add(poker.get(i));
        }
        else if(i%3==1)
        {
            play2.add(poker.get(i));
        }
        else {
            play3.add(poker.get(i));
        }
    }
    Random r=new Random();
    int moster=r.nextInt(3)+1;
    switch (moster) {
    case 1: {
        System.out.println("玩家一没头脑抢到了地主");
        Collections.addAll(play1, poker.get(51),poker.get(52),poker.get(53));
        break;
    }
    case 2: {
        System.out.println("玩家二不开心抢到了地主");
        Collections.addAll(play2, poker.get(51),poker.get(52),poker.get(53));
        break;
    }
    default: {
        System.out.println("玩家三不聪明抢到了地主");
        Collections.addAll(play3, poker.get(51),poker.get(52),poker.get(53));
        break;
    }
     }
    System.out.println("玩家一没头脑的牌有"+play1);
    System.out.println("玩家二不开心的牌有"+play2);
    System.out.println("玩家三不聪明的牌有"+play3);
  }
}
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

香蕉不拉了

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

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

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

打赏作者

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

抵扣说明:

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

余额充值