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

参考斗地主的游戏规则,完成一个发牌的功能(54张牌,考虑点数,花色;三名玩家,其中地主比其他玩家多3张牌)

代码如下:

牌类

import java.util.Objects;

/**

* 3-10 J Q K A 2 King Queen 牌类

*

* @author Administrator

*

*/

public class Card {

/** 牌面值 */

private String name;

/** 花色 */

private String flower;

/** 大小点数 */

private int num;

public Card() {

super();

}

public Card(String name, String flower, int num) {

super();

this.name = name;

this.flower = flower;

this.num = num;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getFlower() {

return flower;

}

public void setFlower(String flower) {

this.flower = flower;

}

public int getNum() {

return num;

}

public void setNum(int num) {

this.num = num;

}

@Override

public String toString() {

if(Objects.nonNull(flower)) {

return name + "-" + flower;

}

return name;

}

}

玩家类

public class Player {

/**玩家ID*/

private int id;

/**玩家姓名*/

private String name;

/**是否是地主*/

private boolean boss;

/**牌集合*/

private ArrayList cards = new ArrayList();

public Player(int id, String name, boolean boss, ArrayList cards) {

super();

this.id = id;

this.name = name;

this.boss = boss;

this.cards = cards;

}

public Player() {

super();

}

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 isBoss() {

return boss;

}

public void setBoss(boolean boss) {

this.boss = boss;

}

public ArrayList getCards() {

return cards;

}

public void setCards(ArrayList cards) {

this.cards = cards;

}

@Override

public String toString() {

return name +(boss? "(地主):":"(农名):")+ cards;

}

}

管理类

public class GameManage {

private static Random randomGen = new Random();

/** 声明所有牌的集合 */

private static ArrayList all = new ArrayList();

/** 用于生成牌的牌面值 */

private static String[] names = { "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2", "小王","大王" };

/** 用于生成牌的花色 */

private static String[] flowers = { "红桃", "方块", "梅花", "黑桃" };

private ArrayList players = new ArrayList();

static {

int i = 0;

for (; i < names.length - 2; i++) {

for (int j = 0; j < flowers.length; j++) {

Card c = new Card(names[i], flowers[j], i);

all.add(c);

}

}

// 将大小王加入

all.add(new Card(names[names.length - 2], null, i++));

all.add(new Card(names[names.length - 1], null, i++));

}

/**

* 加入玩家

*/

private void addPlayer() {

Scanner sc = new Scanner(System.in);

System.out.println("请输入玩家1名称:");

String name1 = sc.nextLine();

System.out.println("请输入玩家2名称:");

String name2 = sc.nextLine();

System.out.println("请输入玩家3名称:");

String name3 = sc.nextLine();

Player p1 = new Player();

p1.setId(1);

p1.setName(name1);

Player p2 = new Player();

p1.setId(2);

p2.setName(name2);

Player p3 = new Player();

p1.setId(3);

p3.setName(name3);

// 将三名玩家加入集合

players.add(p1);

players.add(p2);

players.add(p3);

}

/**

* 随机地主

*/

private void randomBoss() {

// 添加玩家

addPlayer();

// 随机地主索引

int i = randomGen.nextInt(players.size());

// 设置指定位置的玩家为地主

players.get(i).setBoss(true);

}

public ArrayList sendCard() {

randomBoss();

// 对每一名玩家遍历

for (Player p : players) {

// 先为每一位玩家随机发17张牌

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

// 随机一张牌的索引

int cardIndex = randomGen.nextInt(all.size());

// 获取随机索引位置的牌

Card card = all.get(cardIndex);

// 将随机的牌加入当前遍历玩家的集合

p.getCards().add(card);

// 从源集合中移除这张牌

all.remove(card);

}

}

// 最后三张牌给地主

for (Player p : players) {

if (p.isBoss()) {

// 将all集合中的所有元素加入地主的集合

p.getCards().addAll(all);

}

}

return players;

}

}

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

java斗地主随机发牌_java实现斗地主发牌功能相关推荐

  1. java web随机抽取_java实现随机抽取奖品工具类

    本文实例为大家分享了java实现随机抽取奖品工具类的具体代码,供大家参考,具体内容如下 随机抽取奖品 整体思路: 1.奖品集合 + 概率比例集合 2.将奖品按集合中的顺序概率计算成所占比例区间,放入比 ...

  2. java生成随机时间_Java生成某段时间内的随机时间

    上代码: import java.text.SimpleDateFormat; import java.util.Date; public class DateUtil { /** * 生成随机时间 ...

  3. java生成随机数组_JAVA生成随机数组10个数字并求和

    JAVA生成随机数组10个数字并求和 本文最终结果大概是这样的',使用java技术随机生成10个数,然后填充一个数组并在消息框中显示数组内容,接着对数组求和输出,将结果显示在消息框中. 设计思路:可以 ...

  4. java如何实现下载_java 如何实现下载功能

    展开全部 import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import j ...

  5. java斗地主发牌_java实现斗地主发牌系统

    本文实例为大家分享了java实现斗地主发牌系统的具体代码,供大家参考,具体内容如下 玩家类 package com.softeem.example; import java.util.ArrayLis ...

  6. java按顺序发牌_Java实现斗地主发牌功能(含按顺序发牌和玩家牌排序显示等功能)...

    斗地主是全国范围内的一种桌面游戏,尽管全国各种类型,但大同小异,今天我们先来实现一下斗地主中的发牌功能,为了程序的可读性以及可拓展性,此次我们使用面向对象的方法来实现此功能. 首先,斗地主要求有扑克和 ...

  7. java扑克牌随机发牌_Java练习——扑克牌发牌器

    Java练习--扑克牌发牌器 声明:学习自其他博主,感谢分享,这里自己也写了一下. 实现思路 - 构建一张扑克牌 - 构建一套扑克牌 - 测试 构建一张扑克牌 /***@author冬冬 * 定义一个 ...

  8. java 随机发牌_java实现扑克牌发牌器

    Java练习--扑克牌发牌器,供大家参考,具体内容如下 声明:学习自其他博主,感谢分享 实现思路 构建一张扑克牌 构建一套扑克牌 测试 构建一张扑克牌 /** * @author 冬冬 * 定义一个单 ...

  9. 扑克牌java发牌_Java练习——扑克牌发牌器

    Java练习--扑克牌发牌器 声明:学习自其他博主,感谢分享,这里自己也写了一下. 实现思路 - 构建一张扑克牌 - 构建一套扑克牌 - 测试 构建一张扑克牌 /***@author冬冬 * 定义一个 ...

最新文章

  1. 浅浅认识之VBS脚本访问接口与COMODO拦截COM接口
  2. 计算机专业毕业文案,我们毕业啦!|今天,没有文案
  3. python计算一元一次方程的根_5-2 一元二次方程
  4. 用一个程序生成另一个程序_还有另一个报告生成器?
  5. Taro+react开发(71):Taro.nextTick
  6. java hanoi塔问题_java 解决汉诺塔问题
  7. cocos2d-x 发动机分析:程序如何开始和结束?
  8. java ant 详解
  9. java语言cd_java语言
  10. sqlyog通过跳板机ssh连接mysql数据库
  11. Scala Case Class
  12. Excel工作表保护的密码破解与清除...假装自己破解密码系列?
  13. 小米平板 计算机 连接打印机,小米米家喷墨打印机:打印方式介绍
  14. 小米笔记本双固态硬盘安装win10+ubantu20双系统 实录
  15. 百度世界大会全新打开方式!VR会场“希壤”上线
  16. Spring Value注解的使用
  17. 认识常见壳与程序的特征
  18. js实现复仇者联盟点名器
  19. 项目中如何避免团队成员相互甩锅?
  20. 中国人请客吃饭的传统礼仪

热门文章

  1. 中国房价为什么会居高不下?
  2. Cesium - 地图下载器(python)
  3. 产生任意进制乘法表的程序代码
  4. 【计算机算法】贪心算法——看电影、活动选择问题
  5. 三年是程序员的一个坎
  6. mysql table plugin_MySQL 启动报错Table 'mysql.plugin' doesn't exis(转载)
  7. Github官网进去慢的解决办法
  8. 下载学习通上没有下载权限的文件
  9. python取模10^9+7_【Python爬虫】笨办法学python 习题1-10
  10. Nvjdc(诺兰)再续经典——诺兰方舟ARK