`

扑克发牌算法实现

阅读更多

扑克发牌算法实现

作者:陈跃峰

出自: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

    斗地主洗牌发牌算法

    在本文中,我们将深入探讨如何实现斗地主游戏中的洗牌和发牌算法。这是一个非常适合初学者学习编程逻辑和算法的实例,特别是对于Java编程语言的学习者。斗地主是一种广受欢迎的扑克游戏,通常由三名玩家进行,每名...

    C#模拟扑克牌发牌算法

    在C#编程中,模拟扑克牌发牌算法是一项常见的任务,尤其在开发桌面游戏或学习数据结构和算法时。这个任务涉及到对数组的操作、随机数生成以及逻辑控制,这些都是C#程序员必备的基础技能。以下是对这个主题的详细阐述...

    扑克牌初始化洗牌发牌

    "扑克牌初始化洗牌发牌算法详解" 在编程领域中,扑克牌游戏是一个经典的案例,涉及到算法设计和数据结构的应用。今天,我们将详细讲解扑克牌的初始化、洗牌和发牌的算法过程。 一、扑克牌初始化 -----------------...

    扑克牌发牌洗牌评判算法

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

    C#写简单模拟扑克发牌

    在本文中,我们将深入探讨如何使用C#编程语言来实现一个简单的模拟扑克发牌系统,特别是针对拖拉机游戏的发牌规则。首先,我们需要理解扑克发牌的基本原理,然后将其转化为可执行的代码。 扑克是一种流行的卡牌游戏...

    C语言程序扑克发牌

    "C语言程序扑克发牌" 本资源为C语言程序设计大作业,旨在实现扑克牌的洗牌和发牌功能,涉及一维数组的定义和引用、随机数生成、数组元素的引用和操作等知识点。 一维数组的定义和引用 在本程序中,我们定义了多个...

    一个自动发牌算法(写的不错)

    在IT领域,自动发牌算法通常用于电子游戏,如扑克牌类游戏,它涉及到概率论、数据结构和算法设计等多个方面。以下是对这个主题的详细解释: 自动发牌算法的核心目标是确保每一轮发牌的公平性和随机性,使得每个玩家...

    扑克牌发牌游戏

    三、发牌算法 在`Deck`类中,我们定义了`Shuffle`方法来洗牌,以及`Deal`方法来发牌。`Shuffle`使用了LINQ的OrderBy方法结合随机数生成器,确保每次洗牌后牌的顺序都是随机的。`Deal`方法则根据传入的玩家数量,从牌...

    Java模拟扑克牌洗牌发牌过程

    在本文中,我们将深入探讨如何使用Java编程语言来模拟扑克牌的洗牌和发牌过程。这个过程涉及到了数组、随机数生成、以及基本的算法设计。首先,我们需要理解扑克牌的基本规则和结构。 扑克牌通常包含52张牌,分为四...

    C++实现打扑克牌的算法

    - **发牌算法**:根据游戏规则,确定每个玩家的牌数,按照顺序分发。 - **比较算法**:根据扑克牌游戏的规则(如斗地主、德州扑克等),编写比较牌型的函数,判断谁的牌更优。 3. **随机数生成**: - 使用`...

    C语言编写的扑克牌发牌程序

    发牌算法是程序的核心部分。在C语言中,可以使用循环和条件语句来实现这一逻辑。首先,将所有牌放入一个数组,然后通过循环进行随机发牌。每次发牌时,生成一个随机索引,从剩余牌堆中取出一张,分配给玩家。为了...

    图形版发牌游戏--扑克牌图片

    在这个名为“图形版发牌游戏--扑克牌图片”的项目中,我们可以看到重点在于利用Python编程语言来创建一个具有图形界面的扑克牌游戏。这涉及到多个IT领域的知识点,包括Python编程、图形用户界面(GUI)设计、图像...

    java发牌程序,扑克牌

    8. **算法**:发牌算法应确保公平性,例如使用Fisher-Yates(也称Knuth)洗牌算法可以保证每张牌有相等的概率出现在任何位置。此外,根据不同的扑克牌游戏规则,发牌顺序和策略也会有所不同。 9. **异常处理**:...

    java算法——玩家扑克牌

    扑克牌游戏通常涉及发牌、比较牌面大小等操作,因此我们需要对扑克牌进行定义和组织。 1. **扑克牌的表示**: - 在`Poker.java`文件中,我们将创建一个`Poker`类来表示扑克牌。每张牌有两个基本属性:花色和点数。...

    C# 斗地主发牌算法

    本篇将详细探讨如何使用C#语言实现斗地主的发牌算法,旨在为初学者提供指导,并期待经验丰富的开发者提出宝贵的建议。 首先,我们要理解斗地主的基本规则。斗地主是一款三人对战的游戏,需要用到一副完整的扑克牌...

Global site tag (gtag.js) - Google Analytics