首先给扑克牌中每张牌设定一个编号,下面算法实现的编号规则如下:
  u    红桃按照从小到大依次为:1-13
  u    方块按照从小到大依次为:14-26
  u    黑桃按照从小到大依次为:27-39
  u    梅花按照从小到大依次为:40-52
  u    小王为53,大王为54
  算法实现如下:
  u    首先按照以上编号规则初始化一个包含108个数字的数组
  u    每次随机从该数组中抽取一个数字,分配给保存玩家数据的数组
  实现该功能的代码如下所示:
  import Java.util.*;
  /**
  * 发牌算法的实现
  * 要求:把2副牌,也就是108张,发给4个人,留6张底牌
*/
public class Exec{
    public static void main(String[] args){
       //存储108张牌的数组
       int[] total = new int[108];
       //存储四个玩家的牌
       int[][] player = new int[4][25];
       //存储当前剩余牌的数量
       int leftNum = 108;
       //随机数字
       int ranNumber;
       //随机对象
       Random random = new Random();
       //初始化数组
       for(int i = 0;i < total.length;i++){
           total[i] = (i + 1) % 54;
           //处理大小王编号
           if(total[i] == 0){
              total[i] = 54; 
           }
       }
       //循环发牌
       for(int i = 0;i < 25;i++){
           //为每个人发牌
           for(int j = 0;j < player.length;j++){
              //生成随机下标
              ranNumber = random.nextInt(leftNum);
              //发牌
              player[j][i] = total[ranNumber];
              //移动已经发过的牌
              total[ranNumber] = total[leftNum - 1];
              //可发牌的数量减少1
              leftNum--;   
           }  
       }
       //循环输出玩家手中的牌
       for(int i = 0;i < player.length;i++){
           for(int j = 0;j < player[i].length;j++){
              System.out.print(" " + player[i][j]);  
           }
           System.out.println();
       }
       //底牌
       for(int i = 0;i < 8;i++){
           System.out.print(" " + total[i]); 
       }
       System.out.println();
    }
}
最近下载更多
851690469  LV1 2023年10月18日
anthonyz  LV2 2022年2月9日
balabalazy  LV1 2021年4月8日
厚烧海苔  LV1 2021年3月31日
2196316269  LV10 2021年2月25日
qq454952101  LV4 2021年2月5日
菜鸟选手22  LV3 2020年11月24日
1992957164  LV1 2020年11月24日
Mac Wang  LV1 2020年5月12日
kevin555  LV2 2020年5月1日
最近浏览更多
851690469  LV1 2023年10月18日
zdmxjxj  LV9 2023年2月13日
WanLiuYun  LV12 2022年12月9日
yada233  LV7 2022年6月16日
BestClever  LV32 2022年4月27日
anthonyz  LV2 2022年2月9日
好的好的  LV8 2021年6月18日
balabalazy  LV1 2021年4月8日
厚烧海苔  LV1 2021年3月31日
2196316269  LV10 2021年2月25日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友