首先给扑克牌中每张牌设定一个编号,下面算法实现的编号规则如下: 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 LV11
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日