进阶版的Java发牌小程序
进阶版的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发牌小程序相关推荐
- (详细版)java实现小程序获取微信登录,用户信息,手机号,头像
ps:springboot结合mybatisPlus.mysql实现,简单易懂,一件粘贴使用,详细往下看↓ 步骤: 1.注册微信开发平台账号,并创建小程序,获取小程序的AppID和AppSecret. ...
- java中斗地主发牌程序代码_java模拟实现斗地主发牌小程序
java模拟实现斗地主发牌小程序 发布于 2020-8-3| 复制链接 摘记: 一副扑克有54张牌:大小王+4*13,接下来我们来模拟一下斗地主的发牌过程首先,我们需要买牌,新买来的牌都是按顺序摆放的 ...
- 牛逼的uniapp+Java微信小程序商城来了
牛逼的uniapp+Java微信小程序商城来了 减少重复造轮子,开源微信小程序商城(前后端开源:uniapp+Java),秒杀.优惠券.多商户.直播卖货.分销等功能.快速搭建一个属于自己的微信小程序商 ...
- in java中文版百度云 thinking_小程序订阅消息推送(含源码)java实现小程序推送,springboot实现微信消息推送...
前面写过一篇云开发实现小程序订阅消息(模板消息)推送的文章,<借助云开发实现小程序订阅消息和模板消息的推送功能>是有好多同学用的是Java写后台,所以今天就再来写一篇Java后台实现小程序 ...
- vue小米商城源代码_微信商城信息管理系统(java后台+小程序)
前一段时间在公众号中发布了一套微信商城信息管理系统(java后台+小程序),也许大家可能都还记得.今天再给大家重复呈现一遍.重新梳理下,方便大家理解这是做什么用的,以便日后使用.开始正题 01 编写目 ...
- java 后台 小程序微信支付
java 后台 小程序微信支付 步骤说明: 微信公众平台支付接口调试工具 #1.生成字符串: appid=appId&body=测试商品名称&mch_id=商户号&nonce_ ...
- 修复版动态视频壁纸微信小程序源码下载,支持多种类型流量主收益
相信各位小伙伴应该也知道动态视频小程序吧 小编之前也发过几款壁纸小程序 不过最近有小伙伴反应说接口使用了一年左右好像失效了 编辑 功能基本和之前的差不多吧,内有 动态视频壁纸功能,静态壁纸功能,头 ...
- 电脑版微信聊天记录和小程序视频播放黑屏,但有声音,qq和其浏览器视频播放正常。如何解决?
问题描述: 电脑版微信聊天记录和小程序视频播放黑屏,但有声音,而且截屏时会先显现出画面: qq和其浏览器视频播放正常. 原因:显卡驱动出错 解决办法:更新显卡驱动或者卸载重新安装显卡驱动 注意:我遇到 ...
- 小程序消息推送(含源码)java实现小程序推送,springboot实现微信消息推送
本文是比较老得技术来实现,用最新技术实现小程序推送,请看 5行java代码实现微信小程序模版消息推送 (含springboot后台和小程序源码) 也可以看最新的视频讲解:https://edu.csd ...
最新文章
- 2019 ICPC Asia Nanjing Regional K.Triangle(求一个能将三角形分成两个面积相同的线段、计算几何)
- 【kissfft】使用kiss_fftr做FFT与iFFT
- 腾讯获赔 475 万!首例“微信自动抢红包”不正当竞争案宣判
- 框架:Spring的自动装配
- NoClassDefFoundError: org/mybatis/logging/LoggerFactory
- pythonchar中的拟合方法_Python字符串魔法方法
- c#正则匹配取出文本内容 循环输出
- SQLServer数据库实例相关知识笔记
- keras layer的weight是向后的还是向前的_「马上学tensorflow 2.0」Keras简介、使用流程,后端引擎原理,...
- 如何消除Windows 7中的搜索记录
- .hpp文件_16、OpenCV读写XML和YML文件
- php俄语包,俄语资源汇总 - 俄语 | Russian | Pусский - 声同小语种论坛 - Powered by phpwind...
- 个人微信公众号做外卖优惠券怎么弄?
- 台达变频器485通讯接线图_三菱PLC 与台达VFD-L 变频器通讯(RS485)程序
- android 获取全国地址,如何在android中获取国家代码(调用代码)?
- 华为浏览器如何进入阅读模式_华为浏览器阅读模式 | 手游网游页游攻略大全
- 互联网提供的音频/视频服务类型
- android otg读写文件,Android USB Host在USB设备OTG中读/写文件
- 编程江湖,门派众多,谁才是巅峰?
- 其实macbook装win7很简单