本文实例为大家分享了java实现斗地主发牌功能的具体代码,供大家参考,具体内容如下

实现斗地主发牌功能

共54张牌,地主比其他两名玩家多三张牌。

有一个card牌类和player玩家类,还有一个发牌类用于实现发牌的方法。

为了模拟每个玩家的牌都是随机的,我是这样想的:

1)初始化方法:用于将54张牌存到一个数组里,每张牌都一个唯一的序号。

2) 利用随机数,将每个序号打乱存到一个新数组里。

3)再根据序号取到初始化牌库数组内的牌,存到每个玩家的牌集合内。

附一个在老师指导下写的:斗地主发牌功能,自己还是有些没考虑周到。/_ \

代码如下:

牌类

public class Card {

/**花色*/

private String HuaSe;

/**点数*/

private String DianShu;

/**序号*/

private int XuHao;

public Card(String huaSe, String dianShu, int xuHao) {

super();

HuaSe = huaSe;

DianShu = dianShu;

XuHao = xuHao;

}

public String getHuaSe() {

return HuaSe;

}

public void setHuaSe(String huaSe) {

HuaSe = huaSe;

}

public String getDianShu() {

return DianShu;

}

public void setDianShu(String dianShu) {

DianShu = dianShu;

}

public int getXuHao() {

return XuHao;

}

public void setXuHao(int xuHao) {

XuHao = xuHao;

}

@Override

public String toString() {

return "[" + HuaSe + DianShu + "]";

}

}

玩家类

public class Player {

/**玩家id*/

private int id;

/**玩家姓名*/

private String name;

/**是否是地主*/

private boolean dizhu;

/**牌的集合*/

private ArrayList list;

public Player(int id, String name, boolean dizhu) {

super();

this.id = id;

this.name = name;

this.dizhu = dizhu;

}

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public boolean isDizhu() {

return dizhu;

}

public void setDizhu(boolean dizhu) {

this.dizhu = dizhu;

}

public ArrayList getList() {

return list;

}

public void setList(ArrayList list) {

this.list = list;

}

@Override

public String toString() {

return name + ", 牌:" + list ;

}

}

发牌类: 这里还有许多缺陷 :例如地主是需要自己指定而不是随机的,在给每个人发牌时,可以利用remove()方法将已经发过的牌移除,这样可以节省很多重复代码。

public class SendCard {

static ArrayList arrayList = new ArrayList();

Random r = new Random();

/**

* 初始话牌库

*/

public void init() {

for (int i = 1; i < 14; i++) {

arrayList.add(new Card("梅花", Integer.toString(i), i));

arrayList.add(new Card("方块",Integer.toString(i),13 + i));

arrayList.add(new Card("红心", Integer.toString(i), 26 + i));

arrayList.add(new Card("黑桃", Integer.toString(i), 39 + i));

}

arrayList.add(new Card("","大王",53));

arrayList.add(new Card("", "小王", 54));

}

/**

* 发牌(默认p3为地主)

* @param p1

* @param p2

* @param p3

*/

public void send(Player p1,Player p2,Player p3) {

ArrayList intList = new ArrayList();

intList = fenpei(intList);

//给p1发牌

ArrayList clist = new ArrayList();

for (int i = 0; i < 17; i++) {

clist.add(arrayList.get(intList.get(i)));

}

p1.setList(clist);

//给p2发牌

clist = new ArrayList();

for (int i = 17; i < 34; i++) {

clist.add(arrayList.get(intList.get(i)));

}

p2.setList(clist);

//给p3发牌

clist = new ArrayList();

for (int i = 34; i < 54; i++) {

clist.add(arrayList.get(intList.get(i)));

}

p3.setList(clist);

}

/**

* 将初始化牌库打乱后存入新数组

* @param list

* @return

*/

public ArrayList fenpei(ArrayList list) {

int index = 0;

while (true) {

int i = r.nextInt(54);

for (Integer integer : list) {

if (integer == i) {

index = 1;

break;

}

index = 0;

}

if(index == 0)

list.add(i);

if(list.size() == 54)

break;

}

return list;

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

java斗地主发牌代码_java代码实现斗地主发牌功能相关推荐

  1. java继承矩形例子代码_Java代码实现矩形覆盖实例

    Java代码实现矩形覆盖实例 题目 我们可以用2×1的小矩形横着或者竖着去覆盖更大的矩形.请问用n个2×1的小矩形无重叠地覆盖一个2×n的大矩形,总共有多少种方法? 程序核心思想 2*(n-1)的方块 ...

  2. java斗地主代码_java代码实现斗地主发牌功能

    本文实例为大家分享了java实现斗地主发牌功能的具体代码,供大家参考,具体内容如下 实现斗地主发牌功能 共54张牌,地主比其他两名玩家多三张牌. 有一个card牌类和player玩家类,还有一个发牌类 ...

  3. java中斗地主发牌程序代码_java模拟实现斗地主发牌小程序

    java模拟实现斗地主发牌小程序 发布于 2020-8-3| 复制链接 摘记: 一副扑克有54张牌:大小王+4*13,接下来我们来模拟一下斗地主的发牌过程首先,我们需要买牌,新买来的牌都是按顺序摆放的 ...

  4. java斗地主发牌代码_JAVA代码之斗地主发牌

    package com.oracle.demo01; import java.util.ArrayList; import java.util.Collections; import java.uti ...

  5. java的注释规范_Java代码注释规范

    1,单行(单行)-简短说明: ///... 单行注释: 代码中的单行注释. 最好在注释前有一个空行,并在其后加上与代码相同的缩进级别. 如果无法完成一行,则应使用块注释. 评论格式: 在行首注释: 在 ...

  6. 账单比较java代码_Java代码比较两个文件的MD5

    比较MD5就可以知道两个文件是否一样,那为什么要知道文件一不一样呢? 有时候开发的时候自己本地环境跑的功能一切正常,到了测试环境却不行了,那有可能是测试环境的文件没有部署到最新的. 怎么判断是否最新呢 ...

  7. word转换成pdf java代码_java代码实现word转换成pdf

    [实例简介] va代码 word转pdf ,word批量转换成pdf,word单独转换成pdf,只需要调用WordToPDFUtil方法就可以实现批量或者单独转换 [实例截图] [核心代码] e6f6 ...

  8. java 不要使用魔法值_Java代码中的魔法值

    所谓魔法值,是指在代码中直接出现的数值,只有在这个数值记述的那部分代码中才能明确了解其含义. 1. 前言 重构老代码中遇到了不少类似下面这种写法: public void attend(String ...

  9. java web购物车代码_java web开发之购物车功能实现示例代码

    之前没有接触过购物车的东东,也不知道购物车应该怎么做,所以在查询了很多资料,总结一下购物车的功能实现. 查询的资料,找到三种方法: 1.用cookie实现购物车: 2.用session实现购物车: 3 ...

最新文章

  1. 内存技术:入门和测试挑战
  2. 慢系统调用与信号中断
  3. Jmeter入门3 http请求—content-type与参数
  4. poj 2965 The Pilots Brothers' refrigerator
  5. 俄罗斯博士用树莓派自制灭蚊武器!
  6. c语言fwrite写字符串数组,【字符串数组面试题】面试问题:C语言 文… - 看准网...
  7. FW软件的安装及简单的使用;
  8. Busboy 上传文件到指定目录,并重命名,node.js
  9. wamp如何升级php版本,wamp升级php
  10. 课后习题3.4 编程序,用getchar函数读入两个字符给c1,c2,然后分别用putchar函数和cout语句输出这两个字符。并思考以下问题: (1)变量c1,c2应定义为字符型还是整形?抑或两者皆
  11. 抖音变现模式?80%的人都不知道的秘密,三类更适合玩私域的产品
  12. 银行春招:六大行薪资待遇知多少?(下)
  13. 【shell】笔记|去重复行|删除匹配行|反选删除|反向显示|加减乘除
  14. NAS网络存储中使用Docker安装百度网盘客户端教程
  15. linux学习——linux中文件属主、属组是什么意思
  16. echarts分段式的象形柱图
  17. 谈谈怎么可以得到显著性图 特征图 featuremap 深度学习的可解释性 卷积神经网络表征可视化研究综述
  18. 库克、贝佐斯、扎克伯格和皮查伊的听证会,是美国政府的「数字化削藩」
  19. fcntl.py模块
  20. 化学中的机器学习方法1

热门文章

  1. 什么是MTTF、MTBF、MTTR?
  2. WPS格式转换成html代码
  3. 【数据可视化】bar函数绘制简单柱状图
  4. swift 生命周期_iOS View的生命周期详解
  5. 【本人秃顶程序员】求求你别再写 bug 了,秃顶程序员告诉你避免空指针的 5 个案例!
  6. 全球电动汽车充电标准最详解析
  7. python正则表达式提取文本中的电话号码和邮箱
  8. 百度人脸识别API调用实现
  9. 一个简单的Hello World程序
  10. AI虚拟人物 数字人直播,不用出镜,不用露脸的直播方式(附教程 软件)