java斗牛,咋金花

无聊时间,打发下游戏

简单说下思路

目录

1.创建牌对象

2.创建52张牌,不包含大小王

3.洗牌

4.发牌


1.创建牌对象

2.创建52张牌,不包含大小王

3.洗牌

4.发牌

/*** 扑克牌*/
public class Poker {/*** 花色*/private String cardSuits;/*** 数字*/private int cardNum;/*** 人名*/private String peopleName;public Poker() {}public Poker(String cardSuits, int cardNum) {this.cardSuits = cardSuits;this.cardNum = cardNum;}public Poker(String cardSuits, int cardNum, String peopleName) {this.cardSuits = cardSuits;this.cardNum = cardNum;this.peopleName = peopleName;}public String getCardSuits() {return cardSuits;}public void setCardSuits(String cardSuits) {this.cardSuits = cardSuits;}public int getCardNum() {return cardNum;}public void setCardNum(int cardNum) {this.cardNum = cardNum;}public String getPeopleName() {return peopleName;}public void setPeopleName(String peopleName) {this.peopleName = peopleName;}
}
import java.util.*;public class CardUtils {public static String[] strSuits = {"♠", "♥", "♣", "♦"};public static void main(String[] args) {//组装52张扑克List<Poker> pokerList = getPokerList();//洗牌Set<Poker> pokerSet = getPokerSet(pokerList);//发牌licensing(5,pokerSet);}/*** 获取一副新牌** @return*/public static List<Poker> getPokerList() {//组装52张扑克List<Poker> pokerList = new ArrayList<>();for (int i = 0; i < strSuits.length; i++) {for (int j = 1; j <= 13; j++) {Poker poker = new Poker(strSuits[i], j);pokerList.add(poker);}}System.out.println("======新牌=====未打乱顺序 begin======");pokerList.forEach(l -> System.out.print(l.getCardSuits() + l.getCardNum() + "===="));System.out.println();System.out.println("======新牌=====未打乱顺序  end======");System.out.println();return pokerList;}/*** 洗牌** @param pokerList* @return*/public static Set<Poker> getPokerSet(List<Poker> pokerList) {//打乱顺序Set<Poker> pokerSet = new HashSet<>();Random random = new Random();while (pokerSet.size() < pokerList.size()) {pokerSet.add(pokerList.get(random.nextInt(pokerList.size())));}//重新洗牌之后的顺序System.out.println("======洗牌======打乱顺序 begin======");pokerSet.forEach(l -> System.out.print(l.getCardSuits() + l.getCardNum() + "===="));System.out.println();System.out.println("======洗牌======打乱顺序  end======");System.out.println();return pokerSet;}/*** 发牌(不得超过10人)** @param num      几人再玩* @param pokerSet 打乱顺序的牌*/public static void licensing(int num, Set<Poker> pokerSet) {if (num < 2 || num > 10) {System.out.println("参与人数不得小于2人或者大于10人");return;}//针对每个人的集合====几个人玩就循环几次List<List<Poker>> peopleList = new ArrayList();for (int i = 0; i < num; i++) {List<Poker> list = new ArrayList<>();peopleList.add(list);}//已发过的牌List<Poker> tempList = new ArrayList<>();//发牌    3人  每人5张for (int i = 0; i < 5; i++) {for (int j = 0; j < peopleList.size(); j++) {List<Poker> pokers = peopleList.get(j);Poker poker = pokerSet.iterator().next();poker.setPeopleName("持牌者" + j);pokers.add(poker);tempList.add(poker);pokerSet.remove(poker);continue;}}System.out.println("======已发过的牌 begin======");tempList.forEach(l -> System.out.print(l.getCardSuits() + l.getCardNum() + "===="));System.out.println();System.out.println("======已发过的牌 end======");System.out.println();System.out.println("======剩余的牌 begin======");pokerSet.forEach(l -> System.out.print(l.getCardSuits() + l.getCardNum() + "===="));System.out.println();System.out.println("======剩余的牌 end======");System.out.println();peopleList.forEach(pl -> {System.out.println("======分割线======" + pl.get(0).getPeopleName());pl.forEach(poker -> System.out.print(poker.getCardSuits() + poker.getCardNum() + "===="));System.out.println();});}
}

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

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

相关文章

供应链和物流的自动化新时代

今天&#xff0c;当大多数人想到物流自动化时&#xff0c;他们会想到设备。机器人、无人机和自主卡车运输在大家的谈话中占主导地位。全自动化仓库的视频在网上流传&#xff0c;新闻主播们为就业问题绞尽脑汁。这种炒作是不完整的&#xff0c;它错过了供应链和物流公司的机会。…

Talk | PSU助理教授吴清云:AutoGen-用多智能体对话开启下一代大型语言模型应用

本期为TechBeat人工智能社区第548期线上Talk&#xff01; 北京时间11月21日(周二)20:00&#xff0c;宾夕法尼亚州立大学助理教授—吴清云的Talk已准时在TechBeat人工智能社区开播&#xff01; 她与大家分享的主题是: “ AutoGen&#xff1a;用多智能体对话开启下一代大型语言模…

4.2V升多串LED驱动升压6V9V12V恒流点灯

4.2V升多串LED驱动升压6V9V12V恒流点灯 探索WT7012&#xff0c;这款引领潮流的升压转换器&#xff0c;其强大功能将彻底改变您的LED驱动格局。可以轻松驾驭多达7串白光LED&#xff0c;展现出无与伦比的驱动能力。 无论是单节锂电池还是多节锂电池供电产品&#xff0c;宽电压3…

RISCV 工具链下载链接

Tool Chain Downloads – Embecosm

linux输出的重定无效问题和解决

我们在调试程序或者打印日志时经常会遇到重定向的问题,而有时候会遇到重定向无效的问题,下面给一个简单的例子,首先写一个简单的test.c #include <stdio.h>int main(){fprintf(stdout, "hello\n");fprintf(stderr, "world\n");return 0; }编译生…

结构体类型

结构体是一种构造数据类型&#xff0c;把不同类型的数据整合在一起&#xff0c;每一个数据都称为该结构体类型的成员。 结构体&#xff08;struct&#xff09;数据类型可以把基本数据类型和派生类组合起来&#xff0c;以描述复杂的事物。结构类型也是派生类型。 基本数据类型…

SELinux零知识学习二十四、SELinux策略语言之类型强制(9)

接前一篇文章&#xff1a;SELinux零知识学习二十三、SELinux策略语言之类型强制&#xff08;8&#xff09; 二、SELinux策略语言之类型强制 3. 访问向量规则 AV规则就是按照对客体类别的访问许可指定具体含义的规则&#xff0c;SELinux策略语言目前支持四类AV规则&#xff1a…

数据库管理变更工具

Bytebase 是一个开源的数据库管理工具&#xff0c;旨在简化团队协作和版本控制数据库架构和数据的过程。它提供了以下主要功能&#xff1a; 1. 数据库架构管理&#xff1a;Bytebase 允许用户创建和管理数据库架构&#xff0c;并支持版本控制&#xff0c;使团队成员可以协同编辑…

单链表相关面试题--5.合并有序链表

5.合并有序链表 21. 合并两个有序链表 - 力扣&#xff08;LeetCode&#xff09; /* 解题思路&#xff1a; 此题可以先创建一个空链表&#xff0c;然后依次从两个有序链表中选取最小的进行尾插操作进行合并。 */ typedef struct ListNode Node; struct ListNode* mergeTwoList…

【对象的深层拷贝】

工具函数 export function deepCloneWithReactivity(obj) {if (!obj && typeof obj ! object) {throw new Error(error arguments, deepClone);}const objClone Array.isArray(obj) ? [] : {};if (obj && typeof obj object) {for (const key in obj) {if …

使用 API 管理平台的 5 大理由

组织需要治理和控制API生态系统&#xff0c;这种治理就是API管理的作用。 Uber 使用 API​​&#xff08;应用程序编程接口&#xff09;与 Google Maps 和 Twilio 等第三方服务连接&#xff0c;这有助于改善用户体验&#xff1b; Salesforce 提供 API&#xff0c;允许开发人员…

redis的性能管理

查看内存使用指标 查看内存使用指标 info memory used_memory:1800800 redis中主句占用的内存 used_memory_rss:5783552 redis向操作系统申请的内存 used_memory_peak:1800800使用内存的峰值 系统巡检&#xff1a;硬件巡检&#xff0c;数据库&#xff0c;nginx redis docke…

虚函数可不可以重载为内联 —— 在开启最大优化时gcc、clang和msvc的表现

下面是对该问题的一种常见回答&#xff1a; 首先&#xff0c;内联是程序员对编译器的一种建议&#xff0c;因此可以在在重载虚函数时在声明处加上inline关键字来修饰&#xff0c; 但是因为虚函数在运行时通过虚函数表&#xff0c;而内联函数在编译时进行代码嵌入&#xff0c;因…

Linux wait函数用法

wait 函数是用于等待子进程结束并获取子进程的终止状态的系统调用。它在父进程中使用&#xff0c;用于等待其子进程终止并获得子进程的退出状态。 函数原型&#xff1a; pid_t wait(int *status);status 是一个指向整型的指针&#xff0c;用于存储子进程终止时的退出状态&…

redis的集群

高可用方案 1、持久化 2、高可用 主从复制 哨兵模式 集群 主从复制: 主从复制是redis实现高可用的基础&#xff0c;哨兵模式和集群都是在主从复制的基础之上实现高可用 主从复制实现数据的多机备份&#xff0c;以及读写分离&#xff08;主服务器负责写&#xff0c;从服务器…

RFID读写器在物联网中的应用与优势

随着物联网技术的不断发展&#xff0c;RFID读写器作为物联网感知层的重要组成部分&#xff0c;在各个领域得到了广泛应用。本文将介绍RFID读写器在物联网中的应用及优势。 一、RFID读写器概述 RFID&#xff08;Radio Frequency Identification&#xff09;技术是一种利用无线…

机器学习中的特征选择:方法和 Python 示例

布拉加德什桑达拉拉詹 一、说明 特征选择是机器学习流程中至关重要且经常被低估的步骤。它涉及从数据集中的原始特征集中选择最相关的特征&#xff08;输入变量或属性&#xff09;的子集。特征选择的重要性怎么强调都不为过&#xff0c;因为它直接影响机器学习模型的质量、效率…

Python遍历某一文件夹下的所有txt文件,并将这些txt文件的内容写到一个新的txt文件中

写在前面&#xff1a;最近在某视频网站学习java&#xff0c;视频中老师将所有知识点写在了当天代码文件夹下的txt文件中&#xff0c;我每天早晨复习的时候&#xff0c;要打开n多个目录才能找到要复习的全部内容&#xff0c;不胜其烦&#xff0c;因此写下此代码&#xff0c;将整…

【SA8295P 源码分析】129 - GMSL2 协议分析 之 Video Frame 帧数据结构分析 PCLK 计算公式

【SA8295P 源码分析】129 - GMSL2 协议分析 之 Video Frame 帧数据结构分析 & PCLK 计算公式 一、GMSL2 Video Frame 数据分析1.1 视频帧数据结构组成1.2 PCLK 计算公式二、GMSL2 协议 Video 数据带宽计算三、双加载模式 Double Loading Mode四、零填充模式 Zero-Padding M…

leetcode 240. 搜索二维矩阵 II

2023.11.22 本题最先想到的是暴力法和二分法&#xff0c;暴力法就不写了&#xff0c;写一下二分法的解法&#xff0c;java代码如下&#xff1a; class Solution {public boolean searchMatrix(int[][] matrix, int target) {for(int[] row : matrix){int left 0;int right r…