本站首页    管理页面    写新日志    退出


«August 2025»
12
3456789
10111213141516
17181920212223
24252627282930
31


公告
 本博客在此声明所有文章均为转摘,只做资料收集使用。

我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:
日志总数:1304
评论数量:2242
留言数量:5
访问次数:7577591
建立时间:2006年5月29日




[算法]扑克发牌算法实现
软件技术,  电脑与网络

lhwork 发表于 2006/6/1 14:45:04

      扑克发牌算法是棋牌游戏中常用的基础算法,也是游戏开发人员需要熟悉的基础算法之一。下面介绍一下该算法的一种实现方式。        首先给扑克牌中每张牌设定一个编号,下面算法实现的编号规则如下: 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();        } }  


阅读全文(2694) | 回复(1) | 编辑 | 精华
 


回复:扑克发牌算法实现
软件技术,  电脑与网络

naiyi(游客)发表评论于2009/12/24 19:18:53

要求:把2副牌,也就是108张,发给4个人,留6张底牌 真是舍己为人啊,看也不看就转载


个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


» 1 »

发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.324 second(s), page refreshed 144774085 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号