`

扑克发牌算法实现

阅读更多

扑克发牌算法实现

作者:陈跃峰

出自:http://blog.csdn.net/mailbomb

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

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

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

}

}

分享到:
评论

相关推荐

    java扑克发牌算法实现

    扑克发牌算法实现 首先给扑克牌中每张牌设定一个编号,下面算法实现的编号规则如下: 红桃按照从小到大依次为:1-13 方块按照从小到大依次为:14-26 黑桃按照从小到大依次为:27-39 梅花按照从小到大依次为:40-52 ...

    【算法】扑克发牌算法实现

    首先给扑克牌中每张牌设定一个编号,下面算法实现的编号规则如下: u 红桃按照从小到大依次为:1-13 u 方块按照... /** * 发牌算法的实现 * 要求:把2副牌,也就是108张,发给4个人,留6张底牌 */ public class Exec{ p

    扑克牌发牌洗牌评判算法

    (1) 能洗牌,发牌; (2) 每次发一手牌(5 张); (3) 能评价手上的牌好坏; (4) 可以模拟发牌人,程序评估发牌人的牌,根据这手牌的质量, 发牌人可以抓一张、两张、或三张牌,换掉手中不要的牌, 然后程序重新评估...

    C#模拟扑克牌发牌算法

    54张牌要区分花色:黑桃、梅花、方块、红桃)并且存放在一个一维数组中。然后随机的发牌给三个玩家,其中任意一人为地主,地主比其他玩家多三张牌。

    扑克牌初始化洗牌发牌

    详细讲解了扑克牌的洗牌,发牌的算法过程,简单易懂。

    C#棋牌游戏,扑克洗牌、发牌算法源代码

    摘要:C#源码,游戏开发,扑克发牌算法,棋牌游戏 拱猪扑克牌游戏的c#源代码,扑克洗牌,发牌算法是棋牌游戏中常用的基础算法,也是游戏开发人员需要熟悉的基算法之一。下面介绍一下该算法的一种实现方式。    洗牌和...

    扑克牌代码实现

    在ecplise上用java实现扑克游戏算法 public class GameLanucher { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("开始发牌:"); ArrayList[] al= ...

    拱猪游戏源码2012929

    扑克发牌算法 是棋牌游戏中常用的基础算法,也是游戏开发人员需要熟悉的基算法之一。下面介绍一下该算法的一种实现方式。 洗牌和发牌模拟 首先给扑克牌中每张牌设定一个编号,下面算法实现的编号规则如下: 红桃...

    慕课网Java扑克牌大作业

    实现的功能:一副扑克牌(去掉大、小王),随机洗牌后,从上到下,顺序地发给四名玩家,每人发四张,比较四个人手中最大的那张牌的大小,谁的牌大,谁是赢家。13张牌在比大小的时候遵循挖坑的规则。(从小到大依次是...

    随机发牌实验及源文件

    1.首先给扑克牌中每张牌设定一个编号,下面算法实现的编号规则如下:  红桃按照从小到大依次为:1-13  方块按照从小到大依次为:14-26  黑桃按照从小到大依次为:27-39  梅花按照从小到大依次为:40-52  小王为...

    拱猪游戏代码

    扑克发牌算法 是棋牌游戏中常用的基础算法,也是游戏开发人员需要熟悉的基算法之一。下面介绍一下该算法的一种实现方式。 洗牌和发牌模拟 首先给扑克牌中每张牌设定一个编号,下面算法实现的编号规则如下: 红桃...

    乱发扑克牌用散列表实现

    散列表算法的效率很高!也很好用。希望大家学习!这是一个很好的例子有源代码让大家参考

    斗地主算法(洗牌,发牌,出牌)flash

    斗地主算法(洗牌,发牌,出牌)flash

    用MFC写的扑克牌C++程序,值得参考

    发错了 不好意思 这个只不行的 重发一个

    扑克牌swift代码

    简单扑克牌代码,用于课程简单的小作品,来下载看看看.

    card牌类游戏发牌

    牌类游戏发牌,通过C++实现,通过一定的算法设计来实现

    C语言实现随机发扑克牌

    本文实例为大家分享了C语言实现随机发扑克牌的具体代码,供大家参考,具体内容如下 算法如下: 1、将1-10作为方块、2-20作为梅花,3-30作为红桃,4-40作为黑桃,JQK以及大小王分别排序共54张存放在一维数组中。 3、3...

    Java模拟三公,出牌发牌及牌型

    Java模拟三公,出牌发牌及列出所有牌型按从大到小排序.

    扑克游戏程序(java)

    从N个数中取M个不同数算法: (1) 将数组的2张牌进行随机的交换.它的效果和效率都依赖于交换的次数N.次数越多则乱序的程度越高但是相应的效率也会降低.1000次? (2) 从第一张牌开始,将每张牌和随机的一张牌进行交换, ...

Global site tag (gtag.js) - Google Analytics