【Java】Java基础 使用集合实现斗地主分牌

427ef4152dbf4b6c92618a198935cb6c.png

  📝个人主页:哈__

期待您的关注 

1b7335aca73b41609b7f05d1d366f476.gif

目录

0.思路

1.创建玩家手牌集合

2.创建牌堆 

3. 把牌放入牌堆

4.洗牌 

5.进行分牌 

6.完整代码 


今天使用集合TreeSet来实现一个斗地主的分牌流程。

TreeSet集合的一个特点就是 元素有序,这样就方便我们分的牌自动排序。

0.思路

1.创建玩家手牌集合

我们到时候分的牌都存储在这里,但你可能会有疑问,因为存储的泛型是Integer,但扑克牌是有花色的,这该如何实现?

         TreeSet<Integer> zhangsan=new TreeSet<Integer>();TreeSet<Integer> lisi=new TreeSet<Integer>();TreeSet<Integer> wangwu=new TreeSet<Integer>();TreeSet<Integer> dipai=new TreeSet<Integer>();

2.创建牌堆 

我们创建了一个名为poke的HashMap结构,poke用来存储我们的扑克,而poke的key是每一张牌的一个id,value就是具体的牌。

        HashMap<Integer,String>poke=new HashMap<Integer,String>();String[] color={"♦","♣","♥","♠"};String[] number={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};

我们到时候洗牌的时候,洗的是这些id,但是并不是直接在poke中洗,poke的作用只是记录我们有哪些牌。所以 我们在创建一个用来洗牌的数组,并把所有的id放入。

        ArrayList<Integer> xipai=new ArrayList<Integer>();

3. 把牌放入牌堆

遍历我们的String数组,把花色和牌号组合一下并放入poke中,同时把poke中的key放入我们的洗牌集合中。最后不要忘了大小王。

        int index=0;for(String Number:number){for(String Color:color){String POKE=Color+Number;poke.put(index,POKE);xipai.add(index);index+=1;}}poke.put(52,"小王");poke.put(53,"大王");xipai.add(52);xipai.add(53);

4.洗牌 

一行代码即可,使用Collecitons自带的数组打乱方法。

    Collections.shuffle(xipai);

5.进行分牌 

如果只剩下最后三张了,就直接放入到我们的底牌集合当中,否则的话就进行模3取余操作进行判断应该分给谁。

        for(int i=0;i<xipai.size();i++){if(i>=xipai.size()-3){dipai.add(xipai.get(i));}else{if(i%3==0){zhangsan.add(xipai.get(i));}else if(i%3==1){lisi.add(xipai.get(i));}elsewangwu.add(xipai.get(i));}}

6.完整代码 

public class Poker {public static void main(String[] args) {HashMap<Integer,String>poke=new HashMap<Integer,String>();String[] color={"♦","♣","♥","♠"};String[] number={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};ArrayList<Integer> xipai=new ArrayList<Integer>();TreeSet<Integer> zhangsan=new TreeSet<Integer>();TreeSet<Integer> lisi=new TreeSet<Integer>();TreeSet<Integer> wangwu=new TreeSet<Integer>();TreeSet<Integer> dipai=new TreeSet<Integer>();int index=0;for(String Number:number){for(String Color:color){String POKE=Color+Number;poke.put(index,POKE);xipai.add(index);index+=1;}}poke.put(52,"小王");poke.put(53,"大王");xipai.add(52);xipai.add(53);Collections.shuffle(xipai);//进行发牌for(int i=0;i<xipai.size();i++){if(i>=xipai.size()-3){dipai.add(xipai.get(i));}else{if(i%3==0){zhangsan.add(xipai.get(i));}else if(i%3==1){lisi.add(xipai.get(i));}elsewangwu.add(xipai.get(i));}}//进行看牌,用方法实现LookPoker("张三",gyh,poke);LookPoker("李四",zch,poke);LookPoker("王五",wjq,poke);LookPoker("底牌",dipai,poke);//System.out.println(poke);}public static void LookPoker(String name,TreeSet<Integer>set,HashMap<Integer,String>map){System.out.print(name+"的牌是:");for(Integer i:set){String poke=map.get(i);System.out.print(poke+" ");}System.out.println();}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/11247.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

定期更新与维护:技术与生活的同步律动

在这个数字化时代&#xff0c;科技的温暖之光照进了盲人朋友们的日常生活中&#xff0c;特别是那些辅助出行的应用程序&#xff0c;它们如同贴心的向导&#xff0c;引领着用户穿越城市的喧嚣与宁静。然而&#xff0c;要确保这些应用始终能够高效、安全地服务于盲人用户&#xf…

Seaborn用法大全

原文连接: https://blog.csdn.net/qq_38614074/article/details/138251530 # Seaborn介绍 Seaborn是一个基于Python的数据可视化库&#xff0c;它建立在matplotlib的基础之上&#xff0c;为统计数据的可视化提供了高级接口。Seaborn通过简洁美观的默认样式和绘图类型&#xff…

Java随笔1

1.编程中组件的概念&#xff1a; 在编程中&#xff0c;组件&#xff08;Component&#xff09;通常指的是一种可重用的、模块化的代码单元&#xff0c;它封装了特定的功能或用户界面元素&#xff0c;并提供了与其他代码进行交互的接口。组件可以看作是对数据和方法的简单封装&…

锁策略详解:互斥锁、读写锁、乐观锁与悲观锁、轻量级锁与重量级锁、自旋锁、偏向锁、可重入锁与不可重入锁、公平锁与非公平锁

一.锁策略 锁策略指的是在多线程编程中用于管理共享资源访问的规则和技术。它们确保在任何给定时间只有一个线程可以访问共享资源&#xff0c;以防止竞态条件和数据不一致性问题。常见的锁策略包括&#xff1a; 互斥锁&#xff08;Mutex&#xff09;&#xff1a;最常见的锁类型…

王者营地ip地址怎么隐藏

在数字化快速发展的今天&#xff0c;网络安全和隐私保护成为了每个人都需要面对的重要问题。作为一款备受欢迎的游戏社区应用&#xff0c;王者营地为用户提供了丰富的游戏信息和交流平台。然而&#xff0c;与此同时&#xff0c;用户的IP地址也可能在不经意间被泄露&#xff0c;…

spring框架定时任务(@Scheduled)

内容&#xff1a; 在spring框架中&#xff0c;scheduled注解是用于声明定时任务的&#xff0c;以最简单的方式来创建定时任务。 注意&#xff1a; 要使用scheduled注解&#xff0c;需要确保已下几点&#xff1a; 1.spring应用程序已经开启了定时任务的开启。需要在配置类&am…

博客互动革命:如何打造活跃读者社区并提升参与度

CSDN 的朋友你们好&#xff0c;我是未来&#xff0c;今天给大家带来专栏【程序员博主教程&#xff08;完全指南&#xff09;】的第 10 篇文章“与读者互动”。本文揭示了提升技术博客参与度的秘诀。从评论互动到社交媒体策略&#xff0c;本文将指导你如何建立强大的读者社区。掌…

MYSQL数据库-SQL语句

数据库相关概念 名称全称简称数据库存储数据的仓库&#xff0c;数据是有组织的进行存储DataBase(DB)数据库管理系统操纵和管理数据库的大型软件DataBase Management System(DBMS)SQL操作关系型数据库的编程语言&#xff0c;定义了一套操作关系型数据库统一标准Structured Quer…

win10电脑录屏全攻略,从入门到精通,一篇文章就够了!

在当今科技时代&#xff0c;电脑录屏已经成为人们生活中越来越重要的一部分。无论是工作还是娱乐&#xff0c;我们都可能需要录制电脑屏幕来保存或分享一些内容。在本文中&#xff0c;我们将向您介绍win10电脑录屏的三种方法&#xff0c;并对每种方法进行详细说明&#xff0c;为…

宝塔安装多个版本的PHP,如何设置默认的PHP版本

如何将默认的PHP版本设置为7.3.32&#xff0c; 创建软链接指向7.3版本&#xff0c;关键命令&#xff1a;ln -sf /www/server/php/73/bin/php /usr/bin/php 然后再查看PHP版本验证一下结果 [rootlocalhost ~]# ln -sf /www/server/php/73/bin/php /usr/bin/php [rootlocalho…

青蒿素优化算法(AO)-2024年新算法-公式原理详解与性能测评 Matlab代码免费获取

声明&#xff1a;文章是从本人公众号中复制而来&#xff0c;因此&#xff0c;想最新最快了解各类智能优化算法及其改进的朋友&#xff0c;可关注我的公众号&#xff1a;强盛机器学习&#xff0c;不定期会有很多免费代码分享~ 目录 原理简介 一、初始化阶段 二、综合淘汰阶…

2024创业热门选择:短视频带货,轻资产模式引领你飞翔

在当今这个信息爆炸的时代&#xff0c;短视频带货已经成为了一种全新的商业模式&#xff0c;为创业者提供了前所未有的机遇。特别是在2024年&#xff0c;短视频带货的潜力愈发显现&#xff0c;成为众多创业者的热门选择。本文将深入探讨 keJ0277 短视频带货的魅力所在&#xff…

element ui的确认提示框按钮样式修改

修改确认提示框的默认按钮样式&#xff0c;使用css强制修改 例&#xff1a; js代码&#xff1a; this.$confirm("您确定要删除吗&#xff1f;此操作无法撤销并且将永久删除所有数据。", "提示", { type: "warning", cancelButtonClass: "…

日本率先研发成功6G设备,刺痛了谁?为何日本能率先突破?

日本率先研发成功6G设备&#xff0c;无线数据速率是5G的百倍&#xff0c;这让日本方面兴奋莫名&#xff0c;毕竟日本在科技方面从1990年代以来太缺少突破的创新了&#xff0c;那么日本为何如今在6G技术上能率先突破呢&#xff1f; 日本在1980年代末期达到顶峰&#xff0c;它的科…

【算法】dfs

快乐的流畅&#xff1a;个人主页 个人专栏&#xff1a;《算法神殿》《数据结构世界》《进击的C》 远方有一堆篝火&#xff0c;在为久候之人燃烧&#xff01; 文章目录 引言一、全排列1. 决策树2. 设计代码1. 全局变量2. dfs函数3. 细节问题 二、子集解法一1. 决策树2. 设计代码…

PCB的盘中孔

目录 一、什么时候可以在焊盘上打孔&#xff1f; 二、什么时候可以在焊盘上打孔&#xff1f; 绘制PCB时经常会遇到空间不够无法走线&#xff0c;这时我们会放置过孔使信号线穿过电路板一侧到达另一侧进行走线&#xff0c;这样既方便走线&#xff0c;也能够节省板子空间。有时…

Linux提权--第三方软件MYSQL数据库提权(WEB+本地)

免责声明:本文仅做技术交流与学习,非法搞事后果自负... 目录 靶场镜像: 过程: 手工: 下载mysql udf poc 进行编译. 进入数据库进行UDF导出 下载(上传) 创建do_system函数调用 探针(./LinEnum.sh),查找suid权限. 配合使用find调用执行 工具: 过程: 外连不上? 隧道出…

气膜建筑电源配置是怎样的—轻空间

在气膜建筑中&#xff0c;电源配置是确保建筑控制系统连续运行的重要组成部分。以下是该建筑的电源配置方案&#xff1a; 1. 市电供电与备用发电机&#xff1a; 为了应对市电中断等突发情况&#xff0c;系统采用市电供电与备用柴油发电机双重供电方式。这种配置保证了即使在市电…

UV胶的应用场景有哪些?

UV胶是一种特殊的胶水&#xff0c;其固化过程需要紫外光照射。它具有快速固化、高强度、无溶剂挥发等优点&#xff0c;因此在许多应用场景中被广泛使用。UV胶的应用场景非常广泛&#xff0c;包括但不限于以下几个方面&#xff1a; 1.电子产品组装: UV胶在电子产品的组装中扮演…

高校课程评价|基于SSM+vue的高校课程评价系统的设计与实现(源码+数据库+文档)

高校课程评价系统 目录 基于SSM&#xff0b;vue的高校课程评价系统的设计与实现 一、前言 二、系统设计 三、系统功能设计 1管理员功能模块 2学生功能 3教师功能 4专家功能 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&…