用Java制作斗地主
首先,按照斗地主规则,完成洗牌发牌的动作。如图:

具体规则:
1. 组装54张扑克牌
2. 将54张牌顺序打乱
3. 三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。
4. 查看三人各自手中的牌(按照牌的大小排序)、底牌
手中扑克牌从大到小的摆放顺序:大王,小王,2,A,K,Q,J,10,9,8,7,6,5,4,3
package com.oracle.demo01; import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map; public class Doudizhu {
public static void main(String[] args) {
//定义一个map集合:用来将数字与每一张牌进行对应
Map<Integer, String> pooker=new HashMap<Integer, String>();
//一副54张的牌 ArrayList里边为0-53的数的新牌
ArrayList<Integer> pookerNumber=new ArrayList<>();
//准备花色
String[] color={"♠","♣","♦","♥"};
//准备数字
String[] number={"2","A","K","Q","J","10","9","8","7","6","5","4","3"};
int index=2;
for(String n:number){
for(String c:color){
pooker.put(index, c+n);
pookerNumber.add(index);
index++;
}
}
//加入大小王
pooker.put(0, "大王");
pooker.put(1, "小王");
pookerNumber.add(0);
pookerNumber.add(1);
//洗牌
Collections.shuffle(pookerNumber);
System.out.println(pookerNumber);
//创建三个玩家和底牌
ArrayList<Integer> player1=new ArrayList<>();
ArrayList<Integer> player2=new ArrayList<>();
ArrayList<Integer> player3=new ArrayList<>();
ArrayList<Integer> dipai=new ArrayList<>();
//遍历这副洗好的牌,遍历过程中,将牌发到三个玩家和底牌中
for(int i=0;i<pookerNumber.size();i++){
if(i<3){
dipai.add(pookerNumber.get(i));
}else if(i%3==0){
player1.add(pookerNumber.get(i));
}else if(i%3==1){
player2.add(pookerNumber.get(i));
}else if(i%3==2){
player3.add(pookerNumber.get(i));
}
}
//发完牌,对每个人手中的牌排序
Collections.sort(player1);
Collections.sort(player2);
Collections.sort(player3);
Collections.sort(dipai);
//调用方法,看查看牌
look("渣渣辉",pooker, player1);
look("古天乐",pooker, player2);
look("卢本伟",pooker, player3);
look("底牌",pooker, dipai);
}
//创建一个方法,对应数字形式的每个人手中的牌,定义字符串形式的牌
public static void look(String name,Map<Integer, String> pooker,ArrayList<Integer> player){
System.out.print(name+" :");
for(int num:player){
System.out.print(pooker.get(num)+"");
}
System.out.println();
}
}
输出请看 顶部图片
图解:

用Java制作斗地主的更多相关文章
- java制作验证码(java验证码小程序)
手动制作java的验证码 Web应用验证码的组成: (1)输入框 (2)显示验证码的图片 验证码的制作流程: 生成验证码的容器使用 j2ee的servlet 生成图片需要的类: (1) Buffere ...
- Java 制作证书(Windows 和Linux)
一.Windows数字证书 1. 生成数字证书 1.1 进入[%JAVA_HOME%]路径下 cd D:\Program Files\Java\jdk1.8.0_131 1.2 生成证书.一些命令中红 ...
- 通过Java实现斗地主
功能:洗牌,发牌,对玩家手中的牌排序,看牌 package demo06; import java.util.ArrayList; import java.util.Collections; impo ...
- java制作甘特图
今日来做一下甘特图.网上搜到了这个源码,但是导的jar包,并没有给我.swiftganttdemo但是名为swiftgantt制作:所以灵机一动在网上搜到了swiftangantt组件:在组件中找到了 ...
- 【数据结构与算法】Java制作一个简单数组类
bobo老师的玩转算法系列–玩转数据结构 简单记录 文章目录 不要小瞧数组 - 制作一个数组类 1 .使用Java中的数组 数组基础 简单使用 2.二次封装属于我们自己的数组 数组基础 制作属于我们自 ...
- java制作验证码
建立一个web工程
- 用java制作日历,想休息的时候看一看离周末还有几天!
呀!忙碌的每一天,都忘记了明天就是我们愉快周末了.今天没有朋友的闲聊的话,明天处在绷紧的状态呢!还有朋友提到,所有今天来跟大家分享一下用java来编写日历表,累了想休息了的时候,打开看看,还有几天到周 ...
- java制作简单的坦克大战
坦克大战是我们小时候玩红白机时代的经典游戏,看到有不少小伙伴都使用各种语言实现了一下,手痒痒,也使用java做的一个比较简单的坦克大战,主要面向于学过Java的人群,与学了一段时间的人,有利于面向对象 ...
- java制作图片水印
1.创建缓存图片对象 2.创建Java绘图工具对象 3.将原图绘制到缓存图片对象 4.使用工具将水印绘制到缓存图片对象 5.创建图片编码工具类 6.输出缓存图片对象到目标图片文件 BufferedIm ...
随机推荐
- Vue开发者必会的基础知识盘点
你会Vue吗,你看以下知识点你掌握了多少?实际工作中是否运用的得心应手?如果是,那么恭喜你! Vue中的数据和DOM已经被关联起来,所有的东西都是响应式的.注意我们不再和HTML直接交互.一个Vue应 ...
- Shell基本语法---case语句
case语句 格式 case 变量 in 值1 ) 执行动作1 ;; 值2 ) 执行动作2 ;; 值3 ) 执行动作3 ;; .... * ) 如果变量的值都不是以上的值,则执行此程序 ;; esac ...
- java计算下一个整5分钟时间点
需求背景 我的需求是获取当前时间之后的下一个"整5分钟时间点". 首先,那么何为"整5分钟时间点"? 满足以下两个条件的时间: 分钟数等于以下时间中的一个,且秒 ...
- vscode 无法自动补全第三方库
点击Settings 找到“Extentions”下的“Python”,点击“Auto Completes: Extra Paths”的“Edit in settings.json”,如下图: 在se ...
- SQL语句中带有EXISTS谓词的子查询的理解与使用
EXISTS:代表存在量词. 在SQL中,把具有全称量词的谓词查询问题转换成等价的存在量词的谓词查询予以实现. 如有三个表,Student(Sno,Sname),Course(Cno,Cname),S ...
- 开源项目推荐 - 巨鲸任务调度平台(Spark、Flink)
Big Whale(巨鲸),为美柚大数据研发的大数据任务调度平台,提供Spark.Flink等离线任务的调度(支持任务间的依赖调度)以及实时任务的监控,并具有批次积压告警.任务异常重启.重复应用监测. ...
- MyBatis--动态插入多条数据
MySQL支持的一种插入多行数据的INSERT语句写法是 INSERT INTO 表名 (字段名1,字段名2,字段名3) VALUES (值1,值2,值3,...),(值1,值2,值3,...)... ...
- 集合和Iterator迭代器
集合 集合是java中提供的一种容器,可以用来存储多个数据. 注意: ①.集合只能存放对象.比如你存一个 int 型数据 1放入集合中, 其实它是自动转换成 Integer 类后存入的,Java中每一 ...
- springboot 基于JS-SDK实现微信分享(一)
本文主要介绍了SpringBoot 基于JS-SDK实现自定义微信分享,并通过本地测试的方式进行调试,文中通过微信实现分享流程及示例代码进行非常详细的介绍,希望本文对开发爱好者学习或者工作具有一定的参 ...
- PHP natcasesort() 函数
定义和用法 natcasesort() 函数用"自然排序"算法对数组进行排序.键值保留它们原始的键名. 在自然排序算法中,数字 2 小于 数字 10.在计算机排序算法中,10 小于 ...