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

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

 具体规则:

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

最新文章

  1. ArcGIS Server开发实践之【Search Widget工具查询本地地图服务】
  2. 概率 light oj 1104
  3. Ubuntu 12.04下解决Tomcat自启动问题
  4. ADO.NET增删改-------跟查不一样
  5. npoi z
  6. 【M19】了解临时对象的来源
  7. [React Fundamentals] Composable Components
  8. VSCode
  9. 剑指offer 27二叉搜索树与双向链表
  10. AOP杂谈
  11. C#将Excel数据表导入SQL数据库的两种方法(转)
  12. 关于windows系统无法更新的解决方法
  13. 关于HTML5中的sessionStorage的会话级缓存使用
  14. 一篇关于Asp.Net Model验证响应消息的问题处理
  15. tensorflow 添加一个全连接层
  16. 20165236 2017-2018-2《Java程序设计》课程总结
  17. 云计算设计模式(二十三)——Throttling节流模式
  18. KDD 2018 | 最佳论文:首个面向Facebook、arXiv网络图类的对抗攻击研究
  19. Excel课程表
  20. JVM知识(下)

热门文章

  1. 「 JSOI2004」「LuoguP1337」平衡点 / 吊打XXX(模拟退火
  2. CRC16算法之一:CRC16-CCITT-FALSE算法的java实现
  3. Source insight 支持汇编
  4. JS加DOM理解
  5. Unity查找Editor下Project视图中特定的资源
  6. SSM之全局异常处理器
  7. ADT-Bundle--Android开发环境快速搭建
  8. VisualStudio2017中新建的ASP.NET Core项目中的各个文件的含义
  9. 讨论:研发团队到底应该是制定OKR还是制定KPI?
  10. java反射机制应用之动态代理