斗地主

规则:

1. 组装54张扑克牌

2. 将54张牌顺序打乱

3. 三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。

4. 查看三人各自手中的牌(按照牌的大小排序)、底牌

手中扑克牌从大到小的摆放顺序:大王,小王,2,A,K,Q,J,10,9,8,7,6,5, 4,3

分析:

准备牌:

完成数字与纸牌的映射关系:

使用双列Map(HashMap)集合,完成一个数字与字符串纸牌的对应关系(相当于一个字典)。

洗牌:

通过数字完成洗牌发牌

发牌:

将每个人以及底牌设计为ArrayList,将最后3张牌直接存放于底牌,剩余牌通过对3取模依次发牌。

存放的过程中要求数字大小与斗地主规则的大小对应。

将代表不同纸牌的数字分配给不同的玩家与底牌。

看牌:

通过Map集合找到对应字符展示。

通过查询纸牌与数字的对应关系,由数字转成纸牌字符串再进行展示。

代码:

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 pooker=new HashMap();

ArrayList pookerNumer=new ArrayList();

//封装Map

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) {

//封装Map

pooker.put(index, c+n);

//封装集合

pookerNumer.add(index);

index++;

}

}

//封装大小王

pooker.put(0, "大王");

pookerNumer.add(0);

pooker.put(1, "小王");

pookerNumer.add(1);

//System.out.println(pooker);

//System.out.println(pookerNumer);

//洗牌

Collections.shuffle(pookerNumer);

//System.out.println(pookerNumer);

//创建四个容器

ArrayList player1=new ArrayList();

ArrayList player2=new ArrayList();

ArrayList player3=new ArrayList();

ArrayList bottom=new ArrayList();

//发牌

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

if(i<3){

bottom.add(pookerNumer.get(i));

}else if(i%3==0){

player1.add(pookerNumer.get(i));

}else if(i%3==1){

player2.add(pookerNumer.get(i));

}else if(i%3==2){

player3.add(pookerNumer.get(i));

}

}

//排序

Collections.sort(player1);

Collections.sort(player2);

Collections.sort(player3);

Collections.sort(bottom);

//调用看牌的方法

look("渣渣灰",pooker,player1);

look("古天乐",pooker,player2);

look("刘嘉玲",pooker,player3);

look("底牌",pooker,bottom);

}

//看牌的方法

public static void look(String name,Map pooker,ArrayList player){

System.out.println(name+":");

for (int num : player) {

System.out.print(pooker.get(num)+" ");

}

System.out.println();

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

java斗地主代码_基于java实现斗地主代码实例解析相关推荐

  1. java 实现违章_基于JAVA的车辆违章查询数据调用代码实例

    基于JAVA的车辆违章查询数据调用代码实例 代码描述:基于JA V A的车辆违章查询数据调用代码实例 相关平台:聚合数据 import java.io.BufferedReader; import j ...

  2. java订单类_基于Java创建一个订单类代码实例

    这篇文章主要介绍了基于Java创建一个订单类代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 需求描述 定义一个类,描述订单信息 订单id 订 ...

  3. java中ssm付款代码_基于Java+SSM的网上订餐系统、基于JavaWeb的网上订餐系统

    需求分析 基于Java+SSM框架实现一个校园点餐系统,包括用户端和管理员端; 前台主要功能有用户注册, 用户登录, 我的购物车.我的订单.商品评论.校园资讯等; 管理员端主要功能有:用户管理.商品管 ...

  4. java查询序列_基于JAVA的苹果序列号查询api调用代码实例

    代码描述:基于JAVA的苹果序列号查询api调用代码实例 关联数据:苹果序列号 接口地址:http://www.juhe.cn/docs/api/id/37 1.[代码][Java]代码 import ...

  5. 医院医生评价的java代码_基于JAVA的医院信息查询接口调用代码实例

    基于JAVA的医院信息查询接口调用代码实例 import java.io.BufferedReader; import java.io.DataOutputStream; import java.io ...

  6. java找出违法车牌号代码_基于Java的全国交通违章查询示例代码-六派数据

    示例代码 本代码示例是基于Java的六派数据接口进行数据请求API服务请求的代码示例,使用前你需要: 以下是完整代码示例: /** * 主函数 * @param args */ public stat ...

  7. JAVA爬电信_基于JAVA的电信基站接口调用代码实例

    代码描述:基于JAVA的电信基站接口调用代码实例 关联数据:电信基站 接口地址:http://www.juhe.cn/docs/api/id/16 1.[代码][Java]代码 import java ...

  8. java 获取邮编_基于JAVA的根据地名查邮编api调用代码实例

    代码描述:基于JAVA的根据地名查邮编api调用代码实例 接口地址:http://www.juhe.cn/docs/api/id/66 1.[代码][Java]代码 import java.io.Bu ...

  9. javaweb 图书管理系统完整代码_基于Java web的图书管理系统

    源码编号:B-E00029点击查看(分类规则) 项目类型:Java EE项目(非开源) 项目名称:基于Java web的图书管理系统(library_system) 当前版本:V2.0.2版本 难度等 ...

  10. java如何实现qq截屏代码_基于Java的QQ屏幕截图工具的设计

    设计一款基于Java的QQ屏幕截图软件,能实现不联网也能对屏幕截图:截图是由电脑截取显示在屏幕上或其他显示设备上的可视图像,通常截图可以由操作系统或专用截图软件截取,截取的图像会有不同种的文件格式,如 ...

最新文章

  1. opencv gpu cuda项目整理
  2. linux nfs 权限设置,Linux NFS server 配置
  3. DCMTK:将标准图像格式转换为DICOM的实用程序
  4. word文档保存到服务器,读取SQL表数据保存到Word并将Word文档保存到服务器代码
  5. MATLAB遇到问题:错误使用eval,未定义与‘struct‘类型的输入参数相对应的函数‘workspacefunc‘
  6. python 自动收集经济数据_完结】数据分析思维案例实战92 用Python自动办公,做职场高手【更新中】91.一课经济...
  7. 用c 语言创建web项目,使用Maven创建Web应用程序项目
  8. es 创建索引 指定id_简单操作elasticsearch(es版本7.6)
  9. 正态总体均值的假设检验
  10. 在vs中怎样一次性的添加一个文件夹到解决方案里
  11. 翟菜花:资本退烧、开源节流时代,品质服务保障成携程终极利器
  12. 为什么正则化能减少模型过拟合程度
  13. Vue3二维码生成(简洁明了)
  14. 计算机设备信息检测,硬件信息检测软件(HiBit System Information)
  15. 2018世界人工智能大会总结
  16. opc服务器不稳定的原因,OPC Client和OPC Server容易出现通讯故障,原因是什么?
  17. 3DM:phase wrapping
  18. 米兔机器人自主编程_米兔积木机器人编程编写指南.pdf
  19. vw 前端_理解前端尺寸vw、vh、rem、em
  20. vs2015下pthread的使用

热门文章

  1. 程序员,到底要不要去外包公司?
  2. DocuWare 文件管理与工作流程自动化案例研究——DocuWare 工作流程功能使在家工作的员工能够保持沟通和高效工作,支持混合环境
  3. Linux下文件夹的移动与复制
  4. Kali Linux介绍(安装教程)
  5. ubuntu 18.04 配置opencv3.4.5+contrib
  6. 机械硕士申计算机博士,UGA机械工程博士排名,史上最有用套路
  7. ChatGPT教程之深入了解魔术背后的技术
  8. 如何让标书脱颖而出?
  9. Qt5与PyQt5UI设计界面出现控件文字显示不完全的问题
  10. python计算平方根算法_每日一程-16.python-巴比伦平方根算法