扑克发牌算法实现
作者:陈跃峰
出自: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
在本文中,我们将深入探讨如何实现斗地主游戏中的洗牌和发牌算法。这是一个非常适合初学者学习编程逻辑和算法的实例,特别是对于Java编程语言的学习者。斗地主是一种广受欢迎的扑克游戏,通常由三名玩家进行,每名...
在C#编程中,模拟扑克牌发牌算法是一项常见的任务,尤其在开发桌面游戏或学习数据结构和算法时。这个任务涉及到对数组的操作、随机数生成以及逻辑控制,这些都是C#程序员必备的基础技能。以下是对这个主题的详细阐述...
"扑克牌初始化洗牌发牌算法详解" 在编程领域中,扑克牌游戏是一个经典的案例,涉及到算法设计和数据结构的应用。今天,我们将详细讲解扑克牌的初始化、洗牌和发牌的算法过程。 一、扑克牌初始化 -----------------...
(1) 能洗牌,发牌; (2) 每次发一手牌(5 张); (3) 能评价手上的牌好坏; (4) 可以模拟发牌人,程序评估发牌人的牌,根据这手牌的质量, 发牌人可以抓一张、两张、或三张牌,换掉手中不要的牌, 然后程序重新评估...
在本文中,我们将深入探讨如何使用C#编程语言来实现一个简单的模拟扑克发牌系统,特别是针对拖拉机游戏的发牌规则。首先,我们需要理解扑克发牌的基本原理,然后将其转化为可执行的代码。 扑克是一种流行的卡牌游戏...
"C语言程序扑克发牌" 本资源为C语言程序设计大作业,旨在实现扑克牌的洗牌和发牌功能,涉及一维数组的定义和引用、随机数生成、数组元素的引用和操作等知识点。 一维数组的定义和引用 在本程序中,我们定义了多个...
在IT领域,自动发牌算法通常用于电子游戏,如扑克牌类游戏,它涉及到概率论、数据结构和算法设计等多个方面。以下是对这个主题的详细解释: 自动发牌算法的核心目标是确保每一轮发牌的公平性和随机性,使得每个玩家...
三、发牌算法 在`Deck`类中,我们定义了`Shuffle`方法来洗牌,以及`Deal`方法来发牌。`Shuffle`使用了LINQ的OrderBy方法结合随机数生成器,确保每次洗牌后牌的顺序都是随机的。`Deal`方法则根据传入的玩家数量,从牌...
在本文中,我们将深入探讨如何使用Java编程语言来模拟扑克牌的洗牌和发牌过程。这个过程涉及到了数组、随机数生成、以及基本的算法设计。首先,我们需要理解扑克牌的基本规则和结构。 扑克牌通常包含52张牌,分为四...
- **发牌算法**:根据游戏规则,确定每个玩家的牌数,按照顺序分发。 - **比较算法**:根据扑克牌游戏的规则(如斗地主、德州扑克等),编写比较牌型的函数,判断谁的牌更优。 3. **随机数生成**: - 使用`...
发牌算法是程序的核心部分。在C语言中,可以使用循环和条件语句来实现这一逻辑。首先,将所有牌放入一个数组,然后通过循环进行随机发牌。每次发牌时,生成一个随机索引,从剩余牌堆中取出一张,分配给玩家。为了...
在这个名为“图形版发牌游戏--扑克牌图片”的项目中,我们可以看到重点在于利用Python编程语言来创建一个具有图形界面的扑克牌游戏。这涉及到多个IT领域的知识点,包括Python编程、图形用户界面(GUI)设计、图像...
8. **算法**:发牌算法应确保公平性,例如使用Fisher-Yates(也称Knuth)洗牌算法可以保证每张牌有相等的概率出现在任何位置。此外,根据不同的扑克牌游戏规则,发牌顺序和策略也会有所不同。 9. **异常处理**:...
扑克牌游戏通常涉及发牌、比较牌面大小等操作,因此我们需要对扑克牌进行定义和组织。 1. **扑克牌的表示**: - 在`Poker.java`文件中,我们将创建一个`Poker`类来表示扑克牌。每张牌有两个基本属性:花色和点数。...
本篇将详细探讨如何使用C#语言实现斗地主的发牌算法,旨在为初学者提供指导,并期待经验丰富的开发者提出宝贵的建议。 首先,我们要理解斗地主的基本规则。斗地主是一款三人对战的游戏,需要用到一副完整的扑克牌...