java实现模仿斗地主发牌
作者:罗俊-Everns 时间:2021-07-21 07:45:11
本文实例为大家分享了java斗地主发牌的具体代码,供大家参考,具体内容如下
分析
这是一个模仿斗地主发牌的例子;
按照斗地主的规则,完成洗牌发牌的动作。 具体规则:
用0~53分别对应相应的花色和牌面值;
用shuffle随机打乱排序好的数字,起到洗牌的作用;
使用54张牌打乱顺序,三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。
实现方式
准备牌:
牌可以设计为一个ArrayList,每个字符串为一张牌。 每张牌由花色数字两部分组成,我们可以使用花色集合与数字集合嵌套迭代完成每张牌的组装。 牌由Collections类的shuffle方法进行随机排序。
发牌:
将每个人以及底牌设计为ArrayList,将最后3张牌直接存放于底牌,剩余牌通过对3取模依次发牌。
看牌:
直接打印每个集合
代码实现
import java.util.ArrayList;
import java.util.Collections;
public class Poker {
public static void main(String[] args) {
/*
* 1: 准备牌操作
*/
//1.1 创建牌盒 将来存储牌面的
ArrayList<String> pokerBox = new ArrayList<String>();
//1.2 创建花色集合
ArrayList<String> colors = new ArrayList<String>();
//1.3 创建数字集合
ArrayList<String> numbers = new ArrayList<String>();
//1.4 分别给花色 以及 数字集合添加元素
colors.add("♥");
colors.add("♦");
colors.add("♠");
colors.add("♣");
for(int i = 2;i<=10;i++){
numbers.add(i+"");
}
numbers.add("J");
numbers.add("Q");
numbers.add("K");
numbers.add("A");
//1.5 创造牌 拼接牌操作
// 拿出每一个花色 然后跟每一个数字 进行结合 存储到牌盒中
for (String color : colors) {
//color每一个花色 guilian
//遍历数字集合
for(String number : numbers){
//结合
String card = color+number;
//存储到牌盒中
pokerBox.add(card);
}
}
//1.6大王小王
pokerBox.add("小☺");
pokerBox.add("大☠");
// System.out.println(pokerBox);
//洗牌 是不是就是将 牌盒中 牌的索引打乱
// Collections类 工具类 都是 静态方法
// shuffer方法
/*
* static void shuffle(List<?> list)
* 使用默认随机源对指定列表进行置换。
*/
//2:洗牌
Collections.shuffle(pokerBox);
//3 发牌
//3.1 创建 三个 玩家集合 创建一个底牌集合
ArrayList<String> player1 = new ArrayList<String>();
ArrayList<String> player2 = new ArrayList<String>();
ArrayList<String> player3 = new ArrayList<String>();
ArrayList<String> dipai = new ArrayList<String>();
//遍历 牌盒 必须知道索引
for(int i = 0;i<pokerBox.size();i++){
//获取 牌面
String card = pokerBox.get(i);
//留出三张底牌 存到 底牌集合中
if(i>=51){//存到底牌集合中
dipai.add(card);
} else {
//玩家1 %3 ==0
if(i%3==0){
player1.add(card);
}else if(i%3==1){//玩家2
player2.add(card);
}else{//玩家3
player3.add(card);
}
}
}
//看看
System.out.println("令狐冲:"+player1);
System.out.println("田伯光:"+player2);
System.out.println("绿竹翁:"+player3);
System.out.println("底牌:"+dipai);
}
}
来源:https://blog.csdn.net/Luojun13Class/article/details/86583138
标签:java,斗地主
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
java统计字符串中重复字符出现次数的方法
2022-02-15 00:52:16
Java输入输出流的使用详细介绍
2023-08-01 22:21:22
![](https://img.aspxhome.com/file/2023/0/81880_0s.jpg)
java控制台输入示例分享
2023-11-28 02:28:05
Mybatis-Plus自动填充更新操作相关字段的实现
2023-06-04 22:37:12
C#编程实现获取文件夹中所有文件的文件名
2022-11-16 07:53:10
C# 判断字符串第一位是否为数字
2023-05-29 20:06:44
Java通过jersey实现客户端图片上传示例
2022-09-17 15:44:24
![](https://img.aspxhome.com/file/2023/4/86804_0s.jpg)
Java中的synchronized关键字
2023-07-28 18:39:26
springboot 自定义异常并捕获异常返给前端的实现代码
2022-07-23 03:09:52
![](https://img.aspxhome.com/file/2023/5/71625_0s.png)
java 打造阻塞式线程池的实例详解
2022-09-13 09:50:33
浅谈SpringBoot中的@Conditional注解的使用
2021-12-07 16:47:04
![](https://img.aspxhome.com/file/2023/8/61798_0s.png)
springboot 注解方式批量插入数据的实现
2022-02-20 19:03:50
![](https://img.aspxhome.com/file/2023/2/71692_0s.jpg)
深入浅出讲解Java集合之Map接口
2023-10-14 20:52:46
![](https://img.aspxhome.com/file/2023/6/62816_0s.png)
spring boot补习系列之几种scope详解
2022-06-10 13:39:13
![](https://img.aspxhome.com/file/2023/0/78060_0s.png)
java编程之基于SpringBoot框架实现扫码登录
2023-02-14 02:39:28
![](https://img.aspxhome.com/file/2023/9/62999_0s.png)
Java实现的日期处理类完整实例
2023-12-08 00:16:10
简单谈谈java的异常处理(Try Catch Finally)
2021-08-01 12:40:02
C# 爬虫简单教程
2022-04-24 14:10:53
![](https://img.aspxhome.com/file/2023/0/72470_0s.png)
SpringMVC执行过程详细讲解
2023-06-07 10:04:54
![](https://img.aspxhome.com/file/2023/9/62359_0s.png)
Android仿微信对话列表滑动删除效果
2023-04-15 13:22:30
![](https://img.aspxhome.com/file/2023/3/88713_0s.jpg)