快速业务通道

Java实现****发牌算法 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18

Java实现****发牌算法

时间:2011-03-13 csdn博客 陈跃峰

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

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

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

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号