理解很好理解,关键是思路

按照斗地主的规则,完成洗牌发牌的动作:

 具体规则:

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) {
//1.创建扑克牌Map
Map<Integer,String> pooker=new HashMap<Integer,String>();
//创建所有key所在的容器
ArrayList<Integer> pookerNum=new ArrayList<Integer>();
//创建花色数组
String[] color={"♠","♣","♥","♦"};
//创建牌号数组
String[] number={"2","A","K","Q","J","10","9","8","7","6","5","4","3"};
//造牌并存进map集合
int index=2;
for(String n:number){
for(String c:color){
//向map中存数据
pooker.put(index,c+n);
//向所有key所在的容器存数据
pookerNum.add(index);
index++;
}
}
//存大小王
pooker.put(0, "大王");
pookerNum.add(0);
pooker.put(1, "小王");
pookerNum.add(1);
//洗牌
Collections.shuffle(pookerNum);
//System.out.println(pookerNum);
//发牌
//创建四个容器
ArrayList<Integer> bottom=new ArrayList<>();
ArrayList<Integer> player1=new ArrayList<>();
ArrayList<Integer> player2=new ArrayList<>();
ArrayList<Integer> player3=new ArrayList<>();
//开始发牌
for(int i=0;i<pookerNum.size();i++){
//将前三张给底牌
if(i<3){
bottom.add(pookerNum.get(i));
}else if(i%3==0){
player1.add(pookerNum.get(i));
}else if(i%3==1){
player2.add(pookerNum.get(i));
}else if(i%3==2){
player3.add(pookerNum.get(i));
}
}
//排序(key升序 牌从大到小)
Collections.sort(bottom);
Collections.sort(player1);
Collections.sort(player2);
Collections.sort(player3);
//看牌(调用方法)
look("刘德华",player1,pooker);
look("张家辉",player2,pooker);
look("周润发",player3,pooker);
look("底牌",bottom,pooker);
}
//看牌的方法(传参为 玩家姓名,玩家的牌即键,所有牌的键值对)
public static void look( String name,ArrayList<Integer> player,Map<Integer,String> pooker){
//打印玩家姓名
System.out.print(name+":");
//遍历所有牌号
for(int num:player){
System.out.print(pooker.get(num)+" ");
}
System.out.println();
}
}

JAVA代码之斗地主发牌的更多相关文章

  1. java集合--模拟斗地主发牌洗牌

    import java.util.*; /** * @Date: 2020/6/17 19:53 */public class Test04 { public static void main(Str ...

  2. Unity NGUI 网络斗地主 -发牌 脚本交互

    Unity NGUI 网络斗地主 -发牌 脚本交互 @By 灰太龙 Unity4.2.1f4 NGUI 3.0.4 本篇说的问题是脚本与控件的交互! 现在对界面进行了改进,先看副图! 1.制作发牌效果 ...

  3. 对一致性Hash算法,Java代码实现的深入研究

    一致性Hash算法 关于一致性Hash算法,在我之前的博文中已经有多次提到了,MemCache超详细解读一文中"一致性Hash算法"部分,对于为什么要使用一致性Hash算法.一致性 ...

  4. 怎样编写高质量的java代码

    代码质量概述     怎样辨别一个项目代码写得好还是坏?优秀的代码和腐化的代码区别在哪里?怎么让自己写的代码既漂亮又有生命力?接下来将对代码质量的问题进行一些粗略的介绍.也请有过代码质量相关经验的朋友 ...

  5. 数据结构笔记--二叉查找树概述以及java代码实现

    一些概念: 二叉查找树的重要性质:对于树中的每一个节点X,它的左子树任一节点的值均小于X,右子树上任意节点的值均大于X. 二叉查找树是java的TreeSet和TreeMap类实现的基础. 由于树的递 ...

  6. java代码的初始化过程研究

        刚刚在ITeye上看到一篇关于java代码初始化的文章,看到代码我试着推理了下结果,虽然是大学时代学的知识了,没想到还能做对.(看来自己大学时掌握的基础还算不错,(*^__^*) 嘻嘻……)但 ...

  7. JDBC——Java代码与数据库链接的桥梁

    常用数据库的驱动程序及JDBC URL: Oracle数据库: 驱动程序包名:ojdbc14.jar 驱动类的名字:oracle.jdbc.driver.OracleDriver JDBC URL:j ...

  8. 利用Java代码在某些时刻创建Spring上下文

    上一篇中,描述了如何使用Spring隐式的创建bean,但当我们需要引进第三方类库添加到我们的逻辑上时,@Conponent与@Autowired是无法添加到类上的,这时,自动装配便不适用了,我们需要 ...

  9. lombok 简化java代码注解

    lombok 简化java代码注解 安装lombok插件 以intellij ide为例 File-->Setting-->Plugins-->搜索"lombok plug ...

随机推荐

  1. setsockopt函数功能及参数详解

    Socket描述符选项[SOL_SOCKET] #include <sys/socket.h> int setsockopt( int socket, int level, int opt ...

  2. 重学JAVA基础(三):动态代理

    1.接口 public interface Hello { public void sayHello(); } 2.实例类 public class Hello2 { public void sayH ...

  3. jdbc代码

    1.jdbcutiul的代码, package gz.itcast.util; import java.io.InputStream; import java.sql.Connection; impo ...

  4. Python中with...as的用法

    原文:http://blog.csdn.net/magicharvey/article/details/20226969 这个语法是用来代替传统的try...finally语法的. with EXPR ...

  5. IOS要用到的零碎东西

    有些东西虽然不重要,但是零零碎碎会用到,就做个笔录吧: 协议中有2个关键字可以控制方法是否要实现(默认是@required),在大多数情况下, 用途在于程序员之间的交流 @required:这个方法必 ...

  6. poi解析Excel(转)

    下面是本文的项目结构: 项目中所需要的jar文件: 所用的Excel数据(2003-2007,2010都是一样的数据) 运行效果: /Excel2010/src/com/b510/common/Com ...

  7. centos6.5下PF_RING安装方法

    参考的是这个大牛的文章:http://blog.csdn.net/fan_hai_ping/article/details/6705170 系统环境:centos6.5 开发版 PF_RING版本:P ...

  8. SQL 分割字符串

    USE [AppCloud] GO /****** Object: UserDefinedFunction [dbo].[splitstr] Script Date: 12/19/2013 09:33 ...

  9. 牛客多校3 C-Shuffle Cards(rope大法解决数组分块)

    Shuffle Cards 链接:https://www.nowcoder.com/acm/contest/141/C来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 26 ...

  10. Django 之验证码实现

    1. django-simple-captcha 模块 安装 django-simple-captcha pip install django-simple-captcha pip install P ...