扑克发牌算法实现
作者:陈跃峰
出自: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();
}
}
分享到:
相关推荐
扑克发牌算法实现 首先给扑克牌中每张牌设定一个编号,下面算法实现的编号规则如下: 红桃按照从小到大依次为: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) 可以模拟发牌人,程序评估发牌人的牌,根据这手牌的质量, 发牌人可以抓一张、两张、或三张牌,换掉手中不要的牌, 然后程序重新评估...
54张牌要区分花色:黑桃、梅花、方块、红桃)并且存放在一个一维数组中。然后随机的发牌给三个玩家,其中任意一人为地主,地主比其他玩家多三张牌。
详细讲解了扑克牌的洗牌,发牌的算法过程,简单易懂。
摘要:C#源码,游戏开发,扑克发牌算法,棋牌游戏 拱猪扑克牌游戏的c#源代码,扑克洗牌,发牌算法是棋牌游戏中常用的基础算法,也是游戏开发人员需要熟悉的基算法之一。下面介绍一下该算法的一种实现方式。 洗牌和...
在ecplise上用java实现扑克游戏算法 public class GameLanucher { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("开始发牌:"); ArrayList[] al= ...
扑克发牌算法 是棋牌游戏中常用的基础算法,也是游戏开发人员需要熟悉的基算法之一。下面介绍一下该算法的一种实现方式。 洗牌和发牌模拟 首先给扑克牌中每张牌设定一个编号,下面算法实现的编号规则如下: 红桃...
实现的功能:一副扑克牌(去掉大、小王),随机洗牌后,从上到下,顺序地发给四名玩家,每人发四张,比较四个人手中最大的那张牌的大小,谁的牌大,谁是赢家。13张牌在比大小的时候遵循挖坑的规则。(从小到大依次是...
1.首先给扑克牌中每张牌设定一个编号,下面算法实现的编号规则如下: 红桃按照从小到大依次为:1-13 方块按照从小到大依次为:14-26 黑桃按照从小到大依次为:27-39 梅花按照从小到大依次为:40-52 小王为...
扑克发牌算法 是棋牌游戏中常用的基础算法,也是游戏开发人员需要熟悉的基算法之一。下面介绍一下该算法的一种实现方式。 洗牌和发牌模拟 首先给扑克牌中每张牌设定一个编号,下面算法实现的编号规则如下: 红桃...
散列表算法的效率很高!也很好用。希望大家学习!这是一个很好的例子有源代码让大家参考
斗地主算法(洗牌,发牌,出牌)flash
发错了 不好意思 这个只不行的 重发一个
简单扑克牌代码,用于课程简单的小作品,来下载看看看.
牌类游戏发牌,通过C++实现,通过一定的算法设计来实现
本文实例为大家分享了C语言实现随机发扑克牌的具体代码,供大家参考,具体内容如下 算法如下: 1、将1-10作为方块、2-20作为梅花,3-30作为红桃,4-40作为黑桃,JQK以及大小王分别排序共54张存放在一维数组中。 3、3...
Java模拟三公,出牌发牌及列出所有牌型按从大到小排序.
从N个数中取M个不同数算法: (1) 将数组的2张牌进行随机的交换.它的效果和效率都依赖于交换的次数N.次数越多则乱序的程度越高但是相应的效率也会降低.1000次? (2) 从第一张牌开始,将每张牌和随机的一张牌进行交换, ...