java实现斗地主思路与算法
java斗地主的核心就是个算法,54张牌随机发给三个人,农民每人17张,地主20张
1.准备牌:54张牌存储到一个集合中特殊牌:大王,小王其他52张牌:定义一个数组/集合,存储4种花色;定义一个数组/集合,存储13个序号循环嵌套遍历两个数组/集合,组装52张牌2.洗牌
使用集合工具Collections的方法
static void shuffle(List<?> list)
随机打乱集合中元素的顺序3.发牌1人17张牌为底牌,轮流发牌,集合的索引(0-53)%3定义4个集合,存储3个玩家的牌和底牌4.看牌直接打印集合,遍历存储玩家和底牌的集合
发牌类,算法如下
import java.util.ArrayList;
import java.util.Collections;public class DouDiZhu {public static void main(String[] args) {//1.准备牌ArrayList<String> poker = new ArrayList<>();String[] colors = {"♥","♠","♦","♣"};String[] numbers ={"A","J","Q","K","2","3","4","5","6","7","8","9","10"};//存储大小王poker.add("大王");poker.add("小王");//循环遍历两个数组,组装52张牌for (String color : colors) {for (String number : numbers) {poker.add(color+number);}}/*2.洗牌使用集合的工具类Collections中的方法static void shuffle(List<?> list) 使用默认随机源对指定列表进行置换*/Collections.shuffle(poker);/*3.发牌*///定义4个集合,存储玩家的牌和底牌ArrayList<String> player01 = new ArrayList<>();ArrayList<String> player02 = new ArrayList<>();ArrayList<String> player03 = new ArrayList<>();ArrayList<String> dipai = new ArrayList<>();/*遍历poker集合,获取每一张牌使用poker集合的索引%3给3个玩家轮流发牌剩余3张牌给底牌注意:先判断底牌(i >=51)*/for (int i = 0;i < poker.size();i++) {String p = poker.get(i);if(i >=51) {dipai.add(p);}else if(i % 3 == 0) {player01.add(p);}else if(i % 3 == 1) {player02.add(p);}else if(i % 3 == 2) {player03.add(p);}}/*4.发牌*/System.out.println("张三" + player01);System.out.println("李四" + player02);System.out.println("王五" + player03);System.out.println("底牌" + dipai);}
}
执行main函数,控制台输入如下
-END-
关注微信公众号
java学长
学习更多java技术干货,提升职场技术水平!
java实现斗地主思路与算法相关推荐
- java快排算法解读,java 快排的思路与算法
java 快排的思路与算法 有时候面试的时候的会问道Arrays.sort()是怎么实现的,我以前根本不知道是什么东西,最近点进去看了一下.直接吓傻, //看到这个时候还是比较淡定的,可怕的事情来了. ...
- java冒泡排序实现思路_054-冒泡排序算法思路图解
2.网上数据结构和算法的课程不少,但存在两个问题: 1)授课方式单一,大多是照着代码念一遍,数据结构和算法本身就比较难理解,对基础好的学员来说,还好一点,对基础不好的学生来说,基本上就是听天书了 2) ...
- Java虚拟机规范阅读(二)IEEE754简介以及Java虚拟机中的浮点算法
什么是浮点数 在计算机系统的发展过程中,曾经提出过多种方法表达实数.典型的比如相对于浮点数的定点数(Fixed Point Number).在这种表达方式中,小数点固定的位于实数所有数字中间的某个位置 ...
- 【面试篇】Java多线程并发-Java中的CAS机制算法
Java中的CAS机制算法 a.CAS例子 再讲解CAS机制之前,先来看一道经典的并发执行1000次递增的问题: public class Test { public static int count ...
- Java 提供的默认排序算法
Java 提供的默认排序算法. 这个问题本身就是有点陷阱的意味,因为需要区分是 Arrays.sort() 还是 Collections.sort() (底层是调用 Arrays.sort()):什么 ...
- Java数据结构第一讲-排序算法
常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构) 数据结构和算法作为程序员的基本功,一定得稳扎稳打的学习,我们常见的框架底层就是各类数据 ...
- java十进制转二进制简单算法
Java十进制转二进制简单算法 一.编程思路 可以运用简单的数学的计算的方法.如下 这张图大家应该都不陌生,10(例子中的10)一直除以2,余数写在右面那一列,如果被整除右面写0,如果没有别整除,写他 ...
- 【Java校招面试】实战算法(五)——分数相加(虎牙)
目录 前言 一.题目描述 二.解题思路 三.代码实现 后记 前言 "实战算法"是本专栏的第三个部分,本篇博文是第五篇博文,主要讲解虎牙笔试题--分数相加--的解法,如有需要,可: ...
- Java编程配置思路详解
Java编程配置思路详解 SpringBoot虽然提供了很多优秀的starter帮助我们快速开发,可实际生产环境的特殊性,我们依然需要对默认整合配置做自定义操作,提高程序的可控性,虽然你配的不一定比官 ...
最新文章
- 工作笔记-2019.7.8
- 飞书上点链接怎么指定跳转浏览器_链接示例表功能还可以这样用??
- ITK:获取给定顶点周围的面孔列表
- Java SE 6 新特性: JMX 与系统管理(转载)-asp.net关注
- 【大话数据结构算法】哈夫曼树
- 【C#】VS2012+InstallShield2013制作软件更新包
- 【双百解法】剑指 Offer 15. 二进制中1的个数
- 居家洁士扫地机器人_扫地机器人哪个牌子好之科沃斯全屋清洁试用测评
- 移动端canvas_web前端开发分享-css,js移动篇
- GCC 命令行具体解释
- java 为何 无效_java – 为什么compareTo无效导致Collections.sor...
- MyBatis配置项--配置环境(environments)
- JAVA系统性能优化
- 如何复制百度文库中的内容
- 步进电机驱动C语言代码,单片机控制步进电机系统(C语言源代码)
- 基于Java实现的禁忌搜索算法
- QQ坦白说解密解决方案(二)
- 超参数(Hyperparameter)
- 虚拟电厂 3D 可视化,节能减排绿色发展
- linux drupal 7,在CentOS 7下试验Drupal 7