进阶版的Java发牌小程序

考虑到上次的发牌程序有很大的缺陷,无法得知牌的花色和点数,也就无法对牌添加别的操作方法,这次采用面向对象的思想,重新编写这个发牌小程序。
程序如下:

/*** 扑克类,具有花色和点数* 借用实现排序比较器Comparable* 在将对象存入TreeSet集合时,能自动根据牌的大小进行排序* @author DJ**/
public class Poker implements Comparable<Poker> {/**花色*/private String flower;/**点数*/private String num;/**排序值*/private int size;public String getNum() {return num;}public void setNum(String num) {this.num = num;}public String getFlower() {return flower;}public void setFlower(String flower) {this.flower = flower;}public int getSize() {return size;}public void setSize(int size) {this.size = size;}public Poker(String flower,String num,  int size) {super();this.num = num;this.flower = flower;this.size = size;}public Poker() {super();}@Overridepublic String toString() {return "Poker [num=" + num + ", flower=" + flower + ", size=" + size + "]";}/**实现排序方法,根据点数大小决定*/@Overridepublic int compareTo(Poker o) {return this.getSize() - o.getSize();}}

import java.util.ArrayList;
import java.util.Random;
import java.util.TreeSet;
/*** 方法类* 实现地主选取和发牌* @author DJ**/
public class Landlords {/**三位玩家*/private static TreeSet<Poker> p1 = new TreeSet();private static TreeSet<Poker> p2 = new TreeSet();private static TreeSet<Poker> p3 = new TreeSet();/**两个牌组,一个有序,一个随机*/private static ArrayList<Poker> group = new ArrayList<>();private static ArrayList<Poker> group2 = new ArrayList<>();/**花色和点数*/private static String[] flowers = {"黑桃","梅花","红心","方片"};private static String[] num = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};/**随机数,用于随机选取牌*/private static Random ran = new Random();/*** 静态语句初始化有序牌组group*/static{int count=1;for (int j = 0; j < num.length; j++) {for (int i = 0; i < flowers.length; i++) {Poker item = new Poker(flowers[i],num[j],count);group.add(item);count++;}}group.add(new Poker("小","王",count));group.add(new Poker("大","王",++count));int index=group.size();/**将有序的group随机选取元素给group2,这样group2就是无序的牌组*/while(index>0){int r = ran.nextInt(index);Poker item2 = group.get(r);/**选取的元素要在传递后移除,以防重复*/group.remove(r);group2.add(item2);index--;}}/*** 游戏开始*/public static void start(){int index=group2.size();int count = 1;/**按照每人一张的发牌方式发牌*/while(index>3){if(count==53){break;}int r = ran.nextInt(index);Poker item2 = group2.get(r);group2.remove(r);if(count%3==1){p1.add(item2);}else if(count%3==2){p2.add(item2);}else if(count%3==0){p3.add(item2);}index--;count++;}/**将剩下的三张牌发给地主*/landLord().addAll(group2);showAll();}/**展现玩家手牌*/public static void showAll(){for(Poker item:p1){System.out.print(item.getFlower()+item.getNum()+" ");}System.out.println();for(Poker item:p2){System.out.print(item.getFlower()+item.getNum()+" ");}System.out.println();for(Poker item:p3){System.out.print(item.getFlower()+item.getNum()+" ");}}/*** 随机选取地主*/public static TreeSet<Poker> landLord(){int item = ran.nextInt(3);if(item==0){return p1;}else if(item==1){return p2;}else if(item==2){return p3;}return null;}/**运行程序*/public static void main(String[] args) {start();}}

最后运行程序,在控制台显示结果:

进阶版的Java发牌小程序相关推荐

  1. (详细版)java实现小程序获取微信登录,用户信息,手机号,头像

    ps:springboot结合mybatisPlus.mysql实现,简单易懂,一件粘贴使用,详细往下看↓ 步骤: 1.注册微信开发平台账号,并创建小程序,获取小程序的AppID和AppSecret. ...

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

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

  3. 牛逼的uniapp+Java微信小程序商城来了

    牛逼的uniapp+Java微信小程序商城来了 减少重复造轮子,开源微信小程序商城(前后端开源:uniapp+Java),秒杀.优惠券.多商户.直播卖货.分销等功能.快速搭建一个属于自己的微信小程序商 ...

  4. in java中文版百度云 thinking_小程序订阅消息推送(含源码)java实现小程序推送,springboot实现微信消息推送...

    前面写过一篇云开发实现小程序订阅消息(模板消息)推送的文章,<借助云开发实现小程序订阅消息和模板消息的推送功能>是有好多同学用的是Java写后台,所以今天就再来写一篇Java后台实现小程序 ...

  5. vue小米商城源代码_微信商城信息管理系统(java后台+小程序)

    前一段时间在公众号中发布了一套微信商城信息管理系统(java后台+小程序),也许大家可能都还记得.今天再给大家重复呈现一遍.重新梳理下,方便大家理解这是做什么用的,以便日后使用.开始正题 01 编写目 ...

  6. java 后台 小程序微信支付

    java 后台 小程序微信支付 步骤说明: 微信公众平台支付接口调试工具 #1.生成字符串: appid=appId&body=测试商品名称&mch_id=商户号&nonce_ ...

  7. 修复版动态视频壁纸微信小程序源码下载,支持多种类型流量主收益

    相信各位小伙伴应该也知道动态视频小程序吧 小编之前也发过几款壁纸小程序 不过最近有小伙伴反应说接口使用了一年左右好像失效了 ​ 编辑 功能基本和之前的差不多吧,内有 动态视频壁纸功能,静态壁纸功能,头 ...

  8. 电脑版微信聊天记录和小程序视频播放黑屏,但有声音,qq和其浏览器视频播放正常。如何解决?

    问题描述: 电脑版微信聊天记录和小程序视频播放黑屏,但有声音,而且截屏时会先显现出画面: qq和其浏览器视频播放正常. 原因:显卡驱动出错 解决办法:更新显卡驱动或者卸载重新安装显卡驱动 注意:我遇到 ...

  9. 小程序消息推送(含源码)java实现小程序推送,springboot实现微信消息推送

    本文是比较老得技术来实现,用最新技术实现小程序推送,请看 5行java代码实现微信小程序模版消息推送 (含springboot后台和小程序源码) 也可以看最新的视频讲解:https://edu.csd ...

最新文章

  1. 2019 ICPC Asia Nanjing Regional K.Triangle(求一个能将三角形分成两个面积相同的线段、计算几何)
  2. 【kissfft】使用kiss_fftr做FFT与iFFT
  3. 腾讯获赔 475 万!首例“微信自动抢红包”不正当竞争案宣判
  4. 框架:Spring的自动装配
  5. NoClassDefFoundError: org/mybatis/logging/LoggerFactory
  6. pythonchar中的拟合方法_Python字符串魔法方法
  7. c#正则匹配取出文本内容 循环输出
  8. SQLServer数据库实例相关知识笔记
  9. keras layer的weight是向后的还是向前的_「马上学tensorflow 2.0」Keras简介、使用流程,后端引擎原理,...
  10. 如何消除Windows 7中的搜索记录
  11. .hpp文件_16、OpenCV读写XML和YML文件
  12. php俄语包,俄语资源汇总 - 俄语 | Russian | Pусский - 声同小语种论坛 - Powered by phpwind...
  13. 个人微信公众号做外卖优惠券怎么弄?
  14. 台达变频器485通讯接线图_三菱PLC 与台达VFD-L 变频器通讯(RS485)程序
  15. android 获取全国地址,如何在android中获取国家代码(调用代码)?
  16. 华为浏览器如何进入阅读模式_华为浏览器阅读模式 | 手游网游页游攻略大全
  17. 互联网提供的音频/视频服务类型
  18. android otg读写文件,Android USB Host在USB设备OTG中读/写文件
  19. 编程江湖,门派众多,谁才是巅峰?
  20. 其实macbook装win7很简单

热门文章

  1. HDU 1243 反恐训练营(最长公共序列)
  2. 第三只眼看费城自由钟---旅美散记之四
  3. 日均互动时长突破20亿分钟,即构科技做了什么
  4. Virtualbox识别U盘 USB设备 USB 2.0 USB 3.0识别
  5. 农产品绿色通道车辆检测识别
  6. 商业级saas开源电商小程序项目
  7. 阿布扎比全球市场推出加密货币监管框架
  8. 阿联酋和沙特阿拉伯就加密货币展开合作
  9. spring揭密学习笔记
  10. 《软件工具》这些下载神器,你都知道吗