Java实现扑克发牌算法

扑克发牌算法是棋牌游戏中常用的基础算法,也是游戏开发人员需要熟悉的基础算法之一。下面介绍一下该算法的一种实现方式。

首先给扑克牌中每张牌设定一个编号,下面算法实现的编号规则如下:

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();
    }
}

出自:http://blog.csdn.net/Mailbomb/archive/2006/05/14/728176.aspx

时间: 2024-12-31 02:05:44

Java实现扑克发牌算法的相关文章

【算法】扑克发牌算法实现_JSP编程

首先给扑克牌中每张牌设定一个编号,下面算法实现的编号规则如下: u 红桃按照从小到大依次为:1-13 u 方块按照从小到大依次为:14-26 u 黑桃按照从小到大依次为:27-39 u 梅花按照从小到大依次为:40-52 u 小王为53,大王为54 算法实现如下: u 首先按照以上编号规则初始化一个包含108个数字的数组 u 每次随机从该数组中抽取一个数字,分配给保存玩家数据的数组 实现该功能的代码如下所示: 复制代码 代码如下: import java.util.*; /** * 发牌算法的实

java-求一个Java实现的卡尔曼滤波算法

问题描述 求一个Java实现的卡尔曼滤波算法 现在做一个无线的定位系统,求一个Java实现的卡尔曼滤波算法 解决方案 参考:http://blog.csdn.net/ouyang_linux007/article/details/7563998http://download.csdn.net/detail/daibinok2008/4175968 解决方案二: https://code.google.com/p/efficient-java-matrix-library/wiki/KalmanF

java版本的冒泡算法

算法 /**文件名:MaoPao.java描述: java版本的冒泡算法作者:慈勤强Email:cqq1978@Gmail.com**/ class MaoPao{ public static void test1() //最普通的冒泡算法,需要比较(n-1)*(n-1)次 { int[] iArray={10,5,2,3,321,76,3221,98,86,39}; int k=0; int icount=0; for(int j=0;j<iArray.length-1;j++) { for(

Java实现二分查找算法实例分析_java

本文实例讲述了Java实现二分查找算法.分享给大家供大家参考.具体如下: 1. 前提:二分查找的前提是需要查找的数组必须是已排序的,我们这里的实现默认为升序 2. 原理:将数组分为三部分,依次是中值(所谓的中值就是数组中间位置的那个值)前,中值,中值后:将要查找的值和数组的中值进行比较,若小于中值则在中值前面找,若大于中值则在中值后面找,等于中值时直接返回.然后依次是一个递归过程,将前半部分或者后半部分继续分解为三部分.可能描述得不是很清楚,若是不理解可以去网上找.从描述上就可以看出这个算法适合

java 编程-JAVA实现距离矢量算法

问题描述 JAVA实现距离矢量算法 1.编程实现右图所示简单网络拓扑的距离向量路由算法. 1.1 结点之间的连接关系固定: 1.2 链路开销可以由用户设定. 2.距离向量算法的实现方式: 2.1 可以利用多线程机制:每个结点一个 线程:每隔一段事件利用线程间通信 机制传递距离向量(DV):或是 2.2 每个结点利用单独的进程实现:每隔一 段时间利用Socket实现结点间的距离向量交换: 2.3 距离向量的计算与结点路由表的显示. 3.网络拓扑结构的描述(数据结构),拓扑结构利用文件存储. 4.结

java虚拟机-java 垃圾回收 Mark-and-Compact 算法 去碎片如何操作堆中内存的

问题描述 java 垃圾回收 Mark-and-Compact 算法 去碎片如何操作堆中内存的 在压缩堆内存阶段,遍历堆中所有对象并将存活对象重新放入连续的内存地址的 过程中,如果某个存活对象即将放入的地址中存有另一个还没有被移动的存活的对象, java jvm如何进行操作呢? 我看的算法中没有给此方面的信息.它只说存活对象放入 连续的堆中! 大神!!!!求助!!!!!!!!!

java-求:Java实现下面的算法,要求尽量高的性能

问题描述 求:Java实现下面的算法,要求尽量高的性能 算法要求:把下面两个list: columnNames list: [""Comment""Comment""Cost""Term""Cost""] columnValues list: [""my comment 1""my comment 2""my cost 1&qu

退火算法-java最优组合算法问题,编程实现字母最优组合生成最优解

问题描述 java最优组合算法问题,编程实现字母最优组合生成最优解 要求:输入A~K中的任意几个字母(无重复),对这些字母进行组合.输出最优组合的最小组数n和组合方案,使用java语言. 约束条件:A可以和B一组: A可以和E.F.G一组: C.D.H要单独分组: I可以和E.F.G一组: J可以和E.F.G一组: K可以和E.F.G一组: 如果可以,希望用退火算法的思想来解决本问题.毕设赶着要用这个算法,希望尽快提供解决方案,拜谢! 解决方案 两两组合,还是可以多个组合? 解决方案二: 必须是

关于java的数据结构和算法

问题描述 关于java的数据结构和算法 各位前辈,各位大神: 你们好! 很不幸,小弟一直从事做java开发,故而数据结构和算法不是很好(java中的set/map还是比较熟悉的),很多大公司招聘对这一块还是比较看重的,请问一下有什么好的解决方式吗? sincerely! 解决方案 有什么办法,赶快学呗.要是觉得难趁早转行. 解决方案二: 书读百遍,其义自现,路就在那里,只不过很多人没有做到 解决方案三: 认证java语数及编写 解决方案四: 那就看下资料学呗,其实也不是所有的大公司都要有算法 解