java 记牌_(笔记)JAVA--集合实现斗地主洗牌、发牌、看牌(利用TreeSet排序)

news/2024/11/17 4:58:25/

创建HashMap,键是编号,值是牌

创建ArrayList,存储编号

创建花色数组和点数数组

从0开始往HashMap里面存储编号,并存储对应的牌。同时往ArrayList里面存储编号

洗牌(洗的是编号),用Collections的shuffle()方法实现

发牌(发的也是编号,为了保证编号是排序的,创建TreeSet集合接收)

定义方法看牌(遍历TreeSet集合,获取编号,到HashMap集合找对应的牌)

调用方法

代码如下:

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,键是编号,值是牌

HashMap hm = new HashMap();

//创建ArrayList,存储编号

ArrayList arr = new ArrayList();

//创建花色数组

String[] Colors = {"♦", "♣", "♥", "♠"};

//牌数组

String[] Numbers = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "k", "A", "2"};

//从0开始往HashMap里面存储编号,并存储对应的牌。同时往ArrayList里面存储编号

int index = 0;

for (String color : Colors) {

for (String Number : Numbers) {

hm.put(index, color + Number);

//存储编号到arr集合

arr.add(index);

index++;

}

}

hm.put(index, "小王");

arr.add(index);

index++;

hm.put(index, "大王");

arr.add(index);

//洗牌、该方法随机打乱

Collections.shuffle(arr);

//发牌,为了保证编号是排序的,创建TreeSet集合接收

TreeSet lYset = new TreeSet();

TreeSet llFset = new TreeSet();

TreeSet WZXset = new TreeSet();

TreeSet DPset = new TreeSet();

for (int i = 0; i < arr.size(); i++) {

int x = arr.get(i);

//后三张为底牌

if (i >= arr.size() - 3) {

DPset.add(x);

} else if (i % 3 == 0) { //为玩家一发牌

lYset.add(x);

} else if (i % 3 == 1) {//为玩家二发牌

llFset.add(x);

} else if (i % 3 == 2) {//为玩家三发牌

WZXset.add(x);

}

}

//调用方法

lookPoker("刘洋", lYset, hm);

lookPoker("刘亦菲", llFset, hm);

lookPoker("王祖贤", WZXset, hm);

lookPoker("底牌", DPset, hm);

}

public static void lookPoker(String name, TreeSet ts, HashMap hm) {

System.out.print(name + "的牌是:");

for (Integer key : ts) {

//通过键获取对应值,即编号对应的牌

String poker = hm.get(key);

System.out.print(poker + " ");

}

System.out.println();

}

}

运行效果如下:

66a66e39b54e1c487820e0dc91d8ac4c.png


http://www.ppmy.cn/news/583561.html

相关文章

斗地主+三人+叫地主+作弊(可设置)+积分属性+记牌器(可设置)

斗地主+三人+叫地主+作弊(可设置)+积分属性+记牌器(可设置) 版权声明原作品版权声明本文版权声明一、相关文章二、新增功能记牌器 RecordCards类设置记牌 SetRecordCards类三、运行展示四、代码代码框架其余代码PlayWithLandlord_CallPoints_NoTip_HasBP_Record_V1RecordCa…

python 实现记牌器原理

python 实现记牌器原理 方案一&#xff08;减牌记牌&#xff09;方案二&#xff08;增牌记牌&#xff09;字典Update更新初学者常见报错问题 方案一&#xff08;减牌记牌&#xff09; 假设与这“333445667788QQJ”十五张牌&#xff0c;每人五张牌 a "333445667788QQJ&quo…

基于opencv2的斗地主记牌器(python)

一、开发该系统软件环境及使用的技术说明 开发环境&#xff1a;JetBrains PyCharm Community Edition 2019.2.5 x64远端仓库&#xff1a;GitHub语言版本&#xff1a;python3.7.0(Anaconda3)技术说明&#xff1a; OpenCV 4.2.0.32NumPy 1.16.5PyQt5 5.15.0PyWinMouse 1.0 &…

安卓基于图像识别和CNN做出一个通用的斗地主记牌器(一)

先放一个效果图&#xff0c;如下&#xff1a; 设计的主体思路&#xff1a; 1.图像的快速截取 2.图像的预处理 3.识别模型的设计和训练 4.图像匹配 5.业务逻辑的实现 其中&#xff0c;图像处理主要是基于安卓版opencv。识别模型是基于cnn神经网络。 难点 1.粘连图像的分…

因果推断阶段系列23[阶段2-5]----元学习器 meta-learners

因果推断阶段系列23[阶段2-5]----元学习器meta-learners 1. S-Learner(又名稳定学习器)2. T-Learner(T学习器)3. X-Learner(X学习器)小结参考文献简要回顾一下,前几节介绍了处理效应异质性,即确定不同个体对处理的反应方式。在这个框架中,估计对象是: τ ( x ) = E […

2023年第一届山东省职业技能大赛“网络安全”赛项B模块任务书

2023年第一届山东省职业技能大赛“网络安全”赛项B模块任务书 模块B-网络安全事件响应、数字取证调查和应用程序安全1竞赛项目简介:1.1 介绍:1.2 所需的设备、机械、装置和材料:1.3 评分方案:1.4 项目和任务的描述:2工作任务:2.1.1 数据包分析:2.1.2 Web 安全测试渗透测…

Intel官网资料下载链接

总链接&#xff1a; https://www.intel.com/content/www/us/en/programmable/documentation/lit-index.html eg: Pinout&#xff08;TXT/EXCEL/PDF&#xff09;: https://www.intel.com/content/www/us/en/programmable/support/literature/lit-dp.html?1