用JAVA实现简单的扑克牌洗牌发牌并排序,首先写代码之前需要明确需要分哪些步骤:

  1. 创建一个HashMap集合对象
  2. 创建一个ArrayList集合对象
  3. 生成一副扑克牌
  4. 将扑克牌按照键值关系添加到HashMap集合中
  5. 开始洗牌(洗键)
  6. 开始发牌(用TreeSet集合创建玩家对象)
  7. 创建看牌方法
  8. 调用看牌方法

我们首先要明确使用HashMap集合来存放扑克牌,将索引号作为键,而扑克牌作为值,使之对应。所以一开始要做的是创建HashMap对象和ArrayList对象,也就是我们的第一步:

1.创建一个HashMap集合对象和ArrayList集合对象

 //创建一个HashMap集合对象HashMap<Integer, String> map  = new HashMap<Integer,String>();//创建一个ArrayList集合对象ArrayList<Integer> array = new ArrayList<Integer>();

紧接着我们需要知道一副扑克牌里都有哪些花色和数字。

2.生成一副扑克牌

String[] colors = {"♦", "♣", "♥", "♠"};
String[] numbers = {"2","3","4","5","6","7","8","9","10","J","Q","K","A"};

缺少了大小王,我们下面再说。现在应该将所有的牌放入HashMap集合中,并且生成键与扑克牌对应。

3.将扑克牌按照键值关系添加到HashMap集合中

 int index = 0;//定义键for (String number : numbers) {for(String color : colors) {map.put(index, color + number);//将键与值对应起来array.add(index);//将索引也添加到ArrayList集合里,方便洗牌index++;}}//添加大小王(注意索引,大王的索引应该在小王之后)map.put(index, "小王");array.add(index);index++;map.put(index, "大王");array.add(index);

接着我们就可以开始对键随机排序了,这里我们用Collections。

4.开始洗牌(洗键)

Collections.shuffle(array);//随机排序的其实是ArrayList集合,因为它和HashMap集合的键是一样的

5.开始发牌(用TreeSet集合创建玩家对象)

 //用TreeSet集合会自动自然排序,也就是发到手里的牌会自动按照大小排好,当然这里也是通过索引排的TreeSet<Integer> player1 = new TreeSet<Integer>();TreeSet<Integer> player2 = new TreeSet<Integer>();TreeSet<Integer> player3 = new TreeSet<Integer>();TreeSet<Integer> dp = new TreeSet<Integer>();//对已经随机排序后的ArrayList集合开始遍历for(int i = 0;i<array.size();i++) {//这里的i是正常索引值,而array里已经是打乱的索引值了//所以通过正常的索引i取出array对应的元素Integer poker = array.get(i);//先留三张牌为底牌if(i >= array.size()-3) {dp.add(poker);//剩下的平均分给三个玩家}else if(i % 3 == 0) {player1.add(poker);}else if(i % 3 == 1) {player2.add(poker);}else if(i % 3 == 2) {player3.add(poker);}}

接着最后一步,我们需要创建一个看牌方法,最后再调用方法。

6.创建看牌方法

//创建看牌方法public static void lookpoker(String name,TreeSet<Integer> list,HashMap<Integer, String> map) {System.out.print(name+"的牌是:");//遍历每一个玩家分到的索引,再将索引做键来取牌for (Integer out : list) {System.out.print(map.get(out)+" ");}System.out.println();}

最后的最后,来调用方法

 //调用看牌方法lookpoker("玩家一", player1, map);lookpoker("玩家二", player2, map);lookpoker("玩家三", player3, map);lookpoker("底牌", dp, map);

最终运行代码出来的结果就是

//玩家一的牌是:♣2 ♥4 ♥5 ♥6 ♦7 ♠7 ♣8 ♠8 ♥9 ♣10 ♥10 ♠10 ♣Q ♦K ♣K ♠K ♣A
//玩家二的牌是:♠2 ♦3 ♣3 ♥3 ♣4 ♦6 ♠6 ♥7 ♦8 ♥8 ♠9 ♦10 ♦J ♦Q ♦A ♥A 小王
//玩家三的牌是:♦2 ♥2 ♠3 ♠4 ♦5 ♣5 ♠5 ♣6 ♣7 ♦9 ♣J ♥J ♠J ♥Q ♠Q ♥K ♠A
//底牌的牌是:♦4 ♣9 大王

用JAVA实现简单的扑克牌洗牌发牌并排序相关推荐

  1. Java项目:模拟扑克牌洗牌发牌排序

    用JAVA实现简单的扑克牌洗牌发牌并排序,首先写代码之前需要明确需要分哪些步骤: 创建一个HashMap集合对象 创建一个ArrayList集合对象 生成一副扑克牌 将扑克牌按照键值关系添加到Hash ...

  2. 扑克牌洗牌发牌java代码_java实战(一)之Java模仿斗地主洗牌发牌小游戏

    斗地主是全国范围内的一种桌面游戏,尽管全国各种类型,但大同小异.本节我们先来实现一下斗地主中的简单洗牌.发牌和看牌功能. 按照斗地主的规则,完成洗牌发牌的动作.具体规则为使用 54 张牌打乱顺序,3 ...

  3. java使用集合模拟斗地主洗牌发牌案例

    package com.itheima.模拟斗地主.斗地主版本2;import java.util.ArrayList; import java.util.Collections; import ja ...

  4. 集合之扑克牌---洗牌+发牌+发牌后排序+看牌

    1.首先,我们需要准备扑克牌花色和点数(大小王后面添加) //准备扑克String[] flowers = {"♠", "♣", "♦", ...

  5. C语言 扑克牌洗牌发牌统计同花顺个数程序

    目录 一.2个算法关键点 关键点1:洗牌算法 关键点2:查找同花顺算法 二.运行结果 三.完整代码 题目: 一张扑克牌可用结构类型描述,一副扑克牌的52张牌则是一个结构数组. 1.试编写洗牌函数和供4 ...

  6. 扑克牌洗牌发牌,并排序输出(c++)

    52张扑克牌,随机洗牌,然后发牌,并把每个玩家的牌按从大到小的顺序显示 大小规则:AKQJ1098765432 输出效果: 完整代码: #include <iostream> #inclu ...

  7. JAVA实现简单的斗地主洗牌,发牌,抢地主功能

    ##测试类 package doudizhu;import org.omg.CORBA.CODESET_INCOMPATIBLE;import java.util.ArrayList;import j ...

  8. java——斗地主小游戏之洗牌发牌

    遇到的问题: 1.int和Integer的区别? 1)Integer是int的包装类,int则是java的一种基本数据类型 . 2)Integer变量必须实例化后才能使用,而int变量不需要 . 3) ...

  9. 用java制作扑克牌_Java实现扑克牌洗牌和发牌

    本文实例为大家分享了Java实现扑克牌洗牌发牌的具体代码,供大家参考,具体内容如下 实现原理:使用4种花色和13个数字组合成52张牌,放进一个集合中:通过把集合数据排序打乱实现洗牌操作,然后在通过循环 ...

最新文章

  1. 【组队学习】【32期】动手学数据分析
  2. html中,纯数字或纯英文的一串字符超出父容器不会折行显示,如何解决?
  3. 在wsl中运行开源项目tinyhttpd遇到的问题
  4. android增加内置存储分区,详解Android10的分区存储机制(Scoped Storage)适配教程
  5. Python学习—基础数据结构之列表
  6. 频率计设计——电路部分
  7. 微软亚太区资料科学总监:R 语言是 VS 生态第一顺位
  8. 博通2021财年第三季度营收67.8亿美元,半导体业务营收50亿美元
  9. mysql存储过程in_在MySQL存储过程中使用WHERE IN()
  10. glShadeModel
  11. 【agc006f】Blackout(神仙题)
  12. python-吃豆子游戏
  13. 如何使用Bootbox
  14. 量化交易必读:国内12大量化平台全解析
  15. 如何证明pi是无理数
  16. TMS320C6678开发笔记---IBL编译与分析4
  17. Scratch Blocks自定义组件之「点阵」
  18. 解决win10搜索框无法搜索本地应用或无任何反应
  19. DevOps生命周期,你想知道的全都在这里了!
  20. 一级消防工程师证书价值下降,前景茫然?

热门文章

  1. 分享88个ASP.NET电子商务源码,总有一款适合您
  2. 自定义浏览器滚动条样式(兼容chrome和firefox)
  3. 游戏办公两不误 索尼Xperia Play或增加全键盘
  4. 解决 VS2015 字体自动恢复 字体自动还原问题
  5. BUUCTF [第一章 web入门]SQL注入-2
  6. 北理889考研(食品跨考计算机)
  7. 二进制反码求和、原码、补码、逐位相“与”、逐位相“或”
  8. 190919 pwn-第五空间final_十生
  9. mysql三大特性_数据库四大特性
  10. 含文档+PPT+源码等]精品微信小程序预约挂号小程序+后台管理系统|前后分离VUE[包运行成功]微信小程序毕业设计项目源码计算机毕设