当前位置: 首页 > 图文教程 > 网络编程 > JSP > 【算法】扑克发牌算法实现

JSP
jsp计数器制作
用jsp编写文件上载
基于JSP的动态网站开发技术
JSP由浅入深(3)—— 通过表达式增加动态内容
JSP由浅入深(5)—— Scriptlets和HTML的混合
JSP由浅入深(1)—— 熟悉JSP服务器
JSP由浅入深(12)—— 表单编辑
JSP由浅入深(11)—— 标记库
JSP由浅入深(10)—— Beans and Forms处理
JSP由浅入深(9)—— JSP Sessions
JSP由浅入深(8)—— JSP Tags
JSP由浅入深(6)—— JSP声明
JSP由浅入深(4)—— Scriptlets
JSP由浅入深(2)—— 第一个JSP
JSP由浅入深(7)—— JSP Directives
JSP中的字符替换函数 str_replace() 实现!
把一张图片变形扭曲成各种不同的长宽
用JSP编写通用信息发布程序
Java Servlet及Cookie的使用
Apache+Servlet+Jsp环境设置(上)

JSP 中的 【算法】扑克发牌算法实现


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 67 ::
收藏到网摘: n/a

扑克发牌算法是棋牌游戏中常用的基础算法,也是游戏开发人员需要熟悉的基础算法之一。下面介绍一下该算法的一种实现方式。 首先给扑克牌中每张牌设定一个编号,下面算法实现的编号规则如下:
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();
}
}