整体框架
集合1 接收所有牌
集合2 将牌乱序 分成三份
集合3 排序 进行展示

具体代码内容:
定义玩家

public class People {private String name;private boolean state=false;private ArrayList<String> poker=new ArrayList<String>();public People() {}public People(String name , boolean state) {this.name = name;this.state = state;}public String getName() {return name;}public void setName(String name) {this.name = name;}public boolean isState() {return state;}public void setState(boolean state) {this.state = state;}public ArrayList<String> getPoker() {return poker;}public void setPoker(String poker) {this.poker.add(poker);}
}

2.接收所有牌 分牌 排序

public class PokerDate {//拼牌public int a = (int) (Math.random() * 3);//地主随机发牌public void dateNmuber(ArrayList array) {String[] s1 = {"♦" , "♠" , "♣" , "♥"};String[] s2 = {"2" , "3" , "4" , "5" , "6" , "7" , "8" , "9" , "10" , "J" , "Q" , "K" , "A"};String[] s3 = {"大王" , "小王"};for (int i = 0; i < s1.length; i++) {for (int j = 0; j < s2.length; j++) {array.add(s1[i] + s2[j]);}}array.add(s3[0]);array.add(s3[1]);}//发牌public void pokerDeal(ArrayList array) throws IOException {People a1 = new People("张三" , false);People a2 = new People("李四" , false);People a3 = new People("王五" , false);
//        ArrayList<String> a1 = new ArrayList<String>();
//        ArrayList<String> a2 = new ArrayList<String>();
//        ArrayList<String> a3 = new ArrayList<String>();ArrayList<String> num = new ArrayList<String>();Collections.shuffle(array);System.out.println(array);for (int i = 0; i < array.size(); i++) {if (i >= array.size() - 3) {switch (a) {case 0:a1.setState(true);a1.setPoker((String) array.get(i));break;case 1:a2.setState(true);a2.setPoker((String) array.get(i));break;case 2:a3.setState(true);a3.setPoker((String) array.get(i));break;}} else if (i % 3 == 0) {a1.setPoker((String) array.get(i)); //打牌第一个人} else if (i % 3 == 1) {a2.setPoker((String) array.get(i));//打牌第二个人} else if (i % 3 == 2) {a3.setPoker((String) array.get(i));//打牌第三个}}//地主牌发放show(a1);show(a2);show(a3);}//手牌展示public static void show(People people) throws IOException {System.out.println("玩家:" + people.getName());System.out.println("是否是地主:" + people.isState());ArrayList<String> poker = people.getPoker();TreeSet<String> pokerCeshi = new TreeSet<String>(new Comparator<String>() {@Overridepublic int compare(String o1 , String o2) {int i = 0, j = 0;//判断是否为10,Q,A;ASCII值重写定义,方便排序if (o1.length() == 3)i = 58;//确定数字10排在9的后面,9的ASCII值是57else if (o1.charAt(1) == 'K') i = 85;else if (o1.charAt(1) == 'A') i = 90;else i = o1.charAt(1);if (o2.length() == 3)j = 58;//确定数字10排在9的后面else if (o2.charAt(1) == 'K') j = 85;else if (o2.charAt(1) == 'A') j = 90;else {j = o2.charAt(1);}
//                int a='J';ASCII值是//74
//                int b='Q';ASCII值是//81
//                int c='K';ASCII值是//75
//                int d='A';ASCII值是//65int num1 = i - j;int num2 = num1 == 0 ? o1.charAt(0) - o2.charAt(0) : num1;return num2;}});//排序for (String s : poker) {pokerCeshi.add(s);}for (String s : pokerCeshi) {System.out.print(s + " ");}System.out.println();//输出到文件fos.txtFilePutDome.filePut(people.getName(),people.isState(),pokerCeshi);}
}

3.输出流

public class FilePutDome {public static void filePut(String name, boolean state, Set poker) throws IOException {//        String name = people.getName();
//        boolean state = people.isState();String s = String.valueOf(poker);BufferedWriter  fos=new BufferedWriter(new OutputStreamWriter(new FileOutputStream("fos.txt",true)));fos.write("玩家:");fos.write(name);fos.newLine();fos.write("是否是地主");fos.write(String.valueOf(state));fos.newLine();fos.write("手牌为:");fos.write(s);fos.close();}
}

4.文档用来记录每个玩家的收到的牌

玩家:张三
是否是地主true
手牌为:[♠2, ♠3, ♣3, ♥3, ♦3, ♦4, ♠5, ♣5, ♥5, ♦6, ♥7, ♥8, ♠9, ♥9, ♠10, ♦J, ♦Q, ♠A, ♣A, 大王]
玩家:李四
是否是地主false
手牌为:[♦2, ♦5, ♥6, ♠8, ♣8, ♦8, ♦9, ♣10, ♥10, ♠J, ♣J, ♣Q, ♥Q, ♣K, ♥K, ♦K, ♥A]
玩家:王五
是否是地主false
手牌为:[♣2, ♥2, ♠4, ♣4, ♥4, ♠6, ♣6, ♠7, ♣7, ♦7, ♣9, ♦10, ♥J, ♠Q, ♠K, ♦A, 小王]

5.实现类

public class PokerDome{public static void main(String[] args) throws IOException {ArrayList<String> array = new ArrayList<String>();PokerDate  pokerDate=new PokerDate();pokerDate.dateNmuber(array);//堆牌;pokerDate.pokerDeal(array);//发牌}
}

最终实现效果:
不足之处:只有牌的分发以及展示。

Java实现斗地主的发牌以及展示相关推荐

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

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

  2. java斗地主随机发牌_java实现斗地主发牌功能

    本文实例为大家分享了java实现斗地主发牌的具体代码,供大家参考,具体内容如下 参考斗地主的游戏规则,完成一个发牌的功能(54张牌,考虑点数,花色:三名玩家,其中地主比其他玩家多3张牌) 代码如下: ...

  3. java游戏斗地主_Java斗地主小游戏有序版

    斗地主综合案例:有序版 1.准备牌:大王小王 52张牌:循环嵌套遍历两个集合,组装52张牌 可以使用Map集合储存牌的索引+组装好的牌.创建一个List集合存储牌的索引 2.洗牌:使用Collecti ...

  4. java版斗地主_Java实现斗地主简化版

    本文实例为大家分享了Java实现斗地主的具体代码,供大家参考,具体内容如下 package com.westos.chinesePoker; import java.util.ArrayList; i ...

  5. JAVA毕业设计HTML5寿光农产品资源展示平台计算机源码+lw文档+系统+调试部署+数据库

    JAVA毕业设计HTML5寿光农产品资源展示平台计算机源码+lw文档+系统+调试部署+数据库 JAVA毕业设计HTML5寿光农产品资源展示平台计算机源码+lw文档+系统+调试部署+数据库 本源码技术栈 ...

  6. java后台获取和js拼接展示信息

    java后台获取和js拼接展示信息: html页面代码: <div class="results-bd"><table id="activityInfo ...

  7. java毕业设计HTML5寿光农产品资源展示平台源码+系统+数据库+lw文档+调试运行

    java毕业设计HTML5寿光农产品资源展示平台源码+系统+数据库+lw文档+调试运行 注意:该项目只展示部分功能,如需了解,文末获取源码地址. 临近学期结束,还是毕业设计,你还在做java程序.网络 ...

  8. Java网络斗地主小程序

    Java 网络斗地主 项目要求: 运用多线程知识构建一个多客户端的斗地主程序,斗地主功能完善,利用Socket实现客户端和服务器端的信息交互. 未完成 进展: 客户端: MainJFrame类 pub ...

  9. java斗地主随机发牌_使用Java实现斗地主游戏的发牌过程

    package com.review.test; import java.util.ArrayList; import java.util.Collections; import java.util. ...

最新文章

  1. RedHat已更改其开源许可规则
  2. Android中的Selector的用法
  3. 用户都跑了,你却还分不清流失用户和流失率
  4. mybatis mapper.xml 文件共用_MyBatis 缓存原来是这么一回事儿!| 原力计划
  5. C.【转】C语言字符串与数字相互转换
  6. python删除符合条件的行_这十道经典Python笔试题,全做对算我输
  7. 更换mysql_3分钟学会mysql数据库的逻辑架构原理
  8. Ubuntu 20.10 每日构建镜像已经可以下载测试
  9. Pandas 通用方法
  10. Symbol在对象中的作用
  11. JMeter功能不够用?看我的
  12. 惯性导航讲解(概念以及主要部件的讲解)
  13. Android Toast介绍及用法
  14. python 残差图_为啥一定要用残差图检查你的回归分析?
  15. Jmeter 接口造数
  16. lighttpd支持AJAX吗,lighttpd
  17. java7723魂斗罗2_魂斗罗2013-丛林之谜
  18. 火狐Firefox安装屏蔽广告插件ublock origin方法
  19. Android复习系列④之《Android进阶》
  20. 使用Apple设备的看过来,你的Apple账户为什么莫名其妙地被扣款!

热门文章

  1. 梯度下降求函数最小值C++样例
  2. 没有授权,Android App 也能获取你的权限?!
  3. 基于ZYNQ的数据存储和实时成像系统
  4. CentOS 7重启报错:Entering emergency mode. Exit the shell to continue...
  5. Smartbi手把手教你如何搭建企业大数据BI平台系统
  6. Oracle同义词的好处
  7. 纳斯达克Linq利用区块链改造私有股权交易平台
  8. 790. 多米诺和托米诺平铺
  9. DELL笔记本电脑电池不充电以及键盘失灵问题
  10. python yolov5 脚本制作(第一部分:环境搭建、yolov5源码、权重文件获取、pycharm配置、pytorch下载、初次运行yolov5代码)