我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何使用JavaSE来模拟斗地主

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何使用JavaSE来模拟斗地主

本篇内容主要讲解“如何使用JavaSE来模拟斗地主”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用JavaSE来模拟斗地主”吧!

Java可以用来干什么

Java主要应用于:1. web开发;2. Android开发;3. 客户端开发;4. 网页开发;5. 企业级应用开发;6. Java大数据开发;7.游戏开发等。

通过模拟斗地主案例来练习集合的使用

结果预览:

每次发牌后,三位玩家的手牌是随机的并且已经按照手牌大小排完序,运行两次验证手牌的随机性。

如何使用JavaSE来模拟斗地主

如何使用JavaSE来模拟斗地主

马老师的牌还不错,芜湖~起飞

思路:

创建HashMap,键是编号,值是牌。
2.创建ArrayList,存储编号。
3.创建花色数组和点数数组。
4.从0开始往HashMap里面存储编号,并存储对应的牌。同时往ArrayList里面存储编号。
5.洗牌(洗的是编号),用Collections的shuffl()方法实现。
6.发牌(发的也是编号,为了保证编号是排序的,创建TreeSet集合。
7.定义方法看牌(遍历TreeSet集合,获取编号,到HashMap集合找对应的牌)
8.调用看牌方法

为了方便理解,我用图形的方式来描述下过程:

如何使用JavaSE来模拟斗地主

具体代码实现:

1.创建集合装扑克牌

 //创建HashMap集合   key是编号用Integer  value是牌用String            HashMap<Integer,String>  hm=new HashMap<>();            //创建ArrayList集合用来存储编号            ArrayList<Integer> list=new ArrayList<>();            //创建花色数组和点数数组            String [] color={"♠", "♦", "♥","♣"};            String [] number={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};            //从0开始往HashMap集合里面存储编号,并存储对应的牌。同时往ArrayList集合里面存储编号            int index=0;            //增强For循环存储花色和点数            for(String num:number){                for(String col:color){                    hm.put(index,col+num);                    list.add(index);                    index++;                }            }           //52张牌存完了 还剩大小王  现在添加进去            hm.put(index,"小王");            list.add(index);            index++;            hm.put(index,"大王");            list.add(index);            //以上的操作实现了把54张扑克牌放入一个集合容器。

2.洗牌和发牌

   //洗牌(洗的是编号),用collections的shuffle()方法实现。            Collections.shuffle(list);            //发牌  用TreeSet接收  用三位玩家名字命名            TreeSet<Integer> PDD=new TreeSet<>();            TreeSet<Integer> DaSiMa=new TreeSet<>();            TreeSet<Integer> LuBenWei=new TreeSet<>();            //三张底牌            TreeSet<Integer> finalCard=new TreeSet<>();            for(int x=0;x<list.size();x++){                //定义一个变量接收索引                int  a= list.get(x);                //最后三个索引                if(x>=list.size()-3){              finalCard.add(a);                }else if(x%3 == 0){                    PDD.add(a);                }else if(x%3 == 1){                    DaSiMa.add(a);                }else {                    LuBenWei.add(a);                }            }

3.定义看牌方法

  //定义看牌的方法(遍历TreeSet集合,获取编号,到HashMap集合找对应的牌)        public  static void lookPoker(String name,TreeSet<Integer> ts,HashMap<Integer,String>  hm ){            System.out.print(name+"的手牌为:");            //遍历牌 就是遍历索引            for(Integer key:ts){                String poker = hm.get(key);                System.out.print(poker+" ");            }            System.out.println();        }

原码:

package 模拟斗地主;    import java.util.ArrayList;    import java.util.Collections;    import java.util.HashMap;    import java.util.TreeSet;        public class ChinesePoker {        public static void main(String[] args) {            //创建HashMap集合   key是编号用Integer  value是牌用String            HashMap<Integer,String>  hm=new HashMap<>();            //创建ArrayList集合用来存储编号            ArrayList<Integer> list=new ArrayList<>();            //创建花色数组和点数数组            String [] color={"♠", "♦", "♥","♣"};            String [] number={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};            //从0开始往HashMap集合里面存储编号,并存储对应的牌。同时往ArrayList集合里面存储编号            int index=0;            //增强For循环存储花色和点数            for(String num:number){                for(String col:color){                    hm.put(index,col+num);                    list.add(index);                    index++;                }            }           //52张牌存完了 还剩大小王  现在添加进去            hm.put(index,"小王");            list.add(index);            index++;            hm.put(index,"大王");            list.add(index);            //洗牌(洗的是编号),用collections的shuffle()方法实现。            Collections.shuffle(list);            //发牌  用TreeSet接收  用三位玩家名字命名            TreeSet<Integer> PDD=new TreeSet<>();            TreeSet<Integer> DaSiMa=new TreeSet<>();            TreeSet<Integer> LuBenWei=new TreeSet<>();            //三张底牌            TreeSet<Integer> finalCard=new TreeSet<>();            for(int x=0;x<list.size();x++){                //定义一个变量接收索引                int  a= list.get(x);                //最后三个索引                if(x>=list.size()-3){              finalCard.add(a);                }else if(x%3 == 0){                    PDD.add(a);                }else if(x%3 == 1){                    DaSiMa.add(a);                }else {                    LuBenWei.add(a);                }            }            //调用看牌方法            lookPoker("PDD",PDD,hm);            lookPoker("大司马",DaSiMa,hm);            lookPoker("卢本伟",LuBenWei,hm);            lookPoker("底牌",finalCard,hm);        }            //定义看牌的方法(遍历TreeSet集合,获取编号,到HashMap集合找对应的牌)        public  static void lookPoker(String name,TreeSet<Integer> ts,HashMap<Integer,String>  hm ){            System.out.print(name+"的手牌为:");            //遍历牌 就是遍历索引            for(Integer key:ts){                String poker = hm.get(key);                System.out.print(poker+" ");            }            System.out.println();        }    }

到此,相信大家对“如何使用JavaSE来模拟斗地主”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何使用JavaSE来模拟斗地主

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何使用JavaSE来模拟斗地主

本篇内容主要讲解“如何使用JavaSE来模拟斗地主”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用JavaSE来模拟斗地主”吧!Java可以用来干什么Java主要应用于:1. web开发;
2023-06-14

.Net Core中如何使用SignalR实现斗地主游戏

本篇内容主要讲解“.Net Core中如何使用SignalR实现斗地主游戏”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“.Net Core中如何使用SignalR实现斗地主游戏”吧!直接上干货,
2023-06-26

如何在java中使用ArrayList实现一个斗地主游戏

本篇文章为大家展示了如何在java中使用ArrayList实现一个斗地主游戏,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1. 准备牌每张扑克牌牌由花色和数字两部分组成。可以使用花色集合与数字集合嵌
2023-06-06

如何使用MySQL LEFT JOIN 来模拟MySQL MINUS 查询?

由于我们无法在 MySQL 中使用 MINUS 查询,因此我们将使用 LEFT JOIN 来模拟 MINUS 查询。可以借助以下示例来理解:示例在此示例中,我们有两个表,即 Student_detail 和 Student_info,其内容
2023-10-22

虚拟主机如何使用

虚拟主机是一种在单台物理服务器上运行多个独立的网站的技术。下面是使用虚拟主机的一般步骤:1. 购买虚拟主机:在网上选择一个虚拟主机提供商,并购买适合自己需求的虚拟主机服务计划。2. 注册域名:在虚拟主机提供商的网站上注册一个域名。3. 配置
2023-08-31

tomcat虚拟主机如何使用

要使用Tomcat的虚拟主机,你需要完成以下步骤:1. 在Tomcat的conf/server.xml文件中,找到Host元素。默认情况下,这个元素是用于localhost的。你可以复制这个元素,然后修改它来创建新的虚拟主机。2. 在新的H
2023-08-31

php虚拟主机如何使用

要使用PHP虚拟主机,您需要按照以下步骤进行操作:1. 选择一个虚拟主机服务提供商并购买虚拟主机计划。确保虚拟主机计划支持PHP。2. 注册一个域名并将其指向您购买的虚拟主机提供商的域名服务器。您可以在虚拟主机提供商的控制面板或域名注册商的
2023-08-31

虚拟云主机如何使用

虚拟云主机是一种基于云计算技术的虚拟服务器,它提供了高可用性、弹性扩展和灵活性等优势。下面是使用虚拟云主机的一般步骤:1. 选择云服务提供商:根据自己的需求和预算选择合适的云服务提供商。2. 注册账号:在选定的云服务提供商官网上注册账号,并
2023-08-18

php虚拟主机如何使用

PHP虚拟主机指南虚拟主机是一种共享服务器托管服务,可容纳多个网站。PHP虚拟主机专门针对PHP网站进行了优化,提供预装PHP、数据库支持和自动更新等功能。选择时应考虑性能、功能、支持和成本。安装涉及域名注册、虚拟主机计划选择、文件上传、数据库创建和PHP配置。高级功能包括SSL证书、网站构建器、电子商务支持和自动备份,可增强安全性、易用性和网站管理。通过充分利用这些功能,您可以创建高效、安全且用户友好的PHP网站。
php虚拟主机如何使用
2024-04-09

电信虚拟主机如何使用

电信虚拟主机使用的方法:1、在自助管理平台中查看主机的FTP账号密码,空间容量、流量大小等基本信息;2、在主机管理基本功能中绑定域名;3、在数据库管理控制面板上创建数据库;4、可以使用FTP工具上传站点文件,在线修改、移动、复制文件等操作;
2023-02-10

如何使用虚拟主机挂机

这篇文章主要介绍如何使用虚拟主机挂机,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!怎么用虚拟主机挂机?虚拟主机受技术限制,不能安装挂机软件。因此,虚拟主机是不支持挂机的。根据虚拟主机的特性来看,虚拟主机更适合存放网站
2023-06-06

如何查看虚拟主机的可用模块

要查看虚拟主机的可用模块,可以使用以下步骤:1. 登录到虚拟主机的控制面板或通过SSH远程连接到虚拟主机的服务器。2. 打开虚拟主机的配置文件。根据使用的服务器软件,配置文件的位置可能不同。常见的配置文件是Apache的httpd.conf
2023-08-08

php如何在云虚拟主机使用

要在云虚拟主机中使用PHP,您需要按照以下步骤操作:1. 登录到您的云虚拟主机的控制面板或管理界面。这可能是通过Web浏览器访问的网页界面,或者是通过SSH或远程桌面连接的命令行界面。2. 确保您的云虚拟主机已经安装了PHP。大多数云虚拟主
2023-09-20

php如何在云虚拟主机使用

PHP在云虚拟主机上的使用在云虚拟主机上使用PHP可带来广泛支持、可扩展性、动态Web开发、数据库连接和成本效益等好处。本文讨论了如何配置、使用和优化PHP,包括选择提供商、安装PHP、创建PHP文件、配置设置、使用框架、实施安全措施、优化性能、定期更新以及监控。通过遵循最佳实践,您可以在云端构建健壮、高效的PHP应用程序。
php如何在云虚拟主机使用
2024-04-12

虚拟主机如何使用shh登录

要使用SSH登录虚拟主机,你需要确保虚拟主机提供商已经为你的帐户配置了SSH访问权限。然后,按照以下步骤操作:1. 打开终端或命令提示符工具。2. 输入以下命令:```ssh username@yourdomain.com```其中,`us
2023-09-06

如何使用EJB来达到singleton模式

这篇文章主要介绍了如何使用EJB来达到singleton模式,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。怎么使用EJB来达到singleton模式 singleton模式
2023-06-03

GNS3使用详解(gns3如何模拟ids

第一gns3如何模拟juniper,第二gns3如何模拟ids。       juniper 学网络的人应该都知道这个,但是接触这个的人却不多,本人也是菜鸟也没有接触过,惭愧。今天我们来说说gns如何模拟juniper,为以后的学习搭建个环
2023-01-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录