斗地主

规则:

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();

}

}

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

原文链接:https://www.cnblogs.com/haoduoyu0512/p/13332365.html

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

  1. 基于java斗地主_基于Java的网络版斗地主

    [实例简介] 支持网络三人斗地主.有一个服务器端,同时运行三个客户端并且连接服务器端的IP就可以联机游戏了. [实例截图] [核心代码] Game └── Game ├── Client │   ├─ ...

  2. java比价_基于JAVA的慢慢买比价网api调用代码实例

    基于JA V A的慢慢买比价网api调用代码实例 代码描述:基于JA V A的慢慢买比价网api调用代码实例 代码平台:聚合数据 import java.io.BufferedReader; impo ...

  3. java调用序列_基于JAVA的苹果序列号接口调用代码实例

    [java]代码库import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; ...

  4. 租车java 查询_基于java实现租车管理系统

    概述 基于java + swing + JFrame 的图书馆管理系统,租车,还车,管理员管理用户,付款等. 部分代码 public class Login extends JFrame { priv ...

  5. java魔塔_基于java的魔塔游戏的设计与实现论文.docx

    毕业设计(论文)题目: 基于java的魔塔游戏的设计与实现 毕业设计(论文)要求及原始数据(资料): 1.了解和运用Java面向对象的特性: 2.熟练掌握模块化设计的思想,锻炼使用java语言的能力: ...

  6. 图像分割的java程序_基于java的图像分割(数字图像处理)

    [实例简介] 基于java的图像分割(数字图像处理),程序中包含 全局阈值分割,Roberts边缘检测分割,灰度图像,直方图. [实例截图] [核心代码] ImageProcess └── Image ...

  7. 抽奖功能java开发_基于Java实现抽奖系统

    摘要:这篇Java开发技术栏目下的"基于Java实现抽奖系统",介绍的技术点是"抽奖系统.Java.抽奖.基于.系统.实现",希望对大家开发技术学习和问题解决有 ...

  8. 物联网 云端java架构_基于java的物联网架构实现

    基于java的多设备类型物联网架构实现 前言:19年11月开始从 [金融]行业转 [物联网],路途坎坷,一个人摸索前进,不过也学到了很多新的东西,交了很多好朋友,在此感谢各位! 以下是一些经验分享,希 ...

  9. java 通知_基于Java API实现通知机制

    本节我们来假设这样一个场景:小伙伴们在 C语言中文网提问后,如果指定了老师回答,那么对应的老师就会收到邮件通知,这就是观察者模式的一种应用场景.看到这里,有些小伙伴可能会想到 MQ.异步队列等,其实 ...

最新文章

  1. 在智能家庭用OpenCV实现人员检测
  2. 通过IP获取地址,限制某些地址访问(GeoIp)
  3. jsp中文件下载的实现
  4. boost::sort模块spreadsort 字符串函子反向排序示例
  5. width:100vh与min-height:calc(100vh + 51px)
  6. DataTable新增列设置DefaultValue问题。
  7. ET7.0+HybridCLR(huatuo)热更教程
  8. 国内最知名的PHP开源网站管理系统,国内最强十款开源网站管理系统
  9. Android短信发送,监听,及其工具类封装
  10. JQuery实现简单小农场
  11. 【异常】Reason: Executor heartbeat timed out after 140927 ms
  12. 【机器学习】Python秘密武器之Numpy
  13. Curator实现分布式锁的基本原理
  14. FFmpeg 常用命令汇总
  15. autoexec.bat文件的所在位置
  16. 鲁宾逊微积分与“知识共享”,携手相伴进入中国
  17. 收藏本站——添加到浏览器收藏夹
  18. Swift学习笔记(5):集合类型
  19. 软件工程_东师站_第六周作业
  20. 【源码】均衡优化器Equilibrium Optimizer(EO)

热门文章

  1. InSAR-DInSAR 技术细节(七)轨道误差及其处理办法
  2. LeetCode.735 Asteriod Collision
  3. linux中的根文件系统(rootfs的原理和介绍)
  4. 著名音乐app网易云推广运营策划案
  5. 在线阅读网站|基于Springboot+Vue开发实现小说阅读网站
  6. c++十六进制字符串转int型三种方法的测试总结
  7. vb.net “已创建对嵌入的互操作程序集“stdole”的引用“警告的清除
  8. 如何提取处理网页视频中的字幕
  9. C# Url传参中文乱码
  10. 华为云杯”2020人工智能创新应用大赛总结与分析