package com.biggw.day14.demo05;

 import java.util.*;

 /**
* @author gw
* @date 2019/11/6 0006 下午 17:20
*/ /*
* 斗地主
* */
public class DouDiZhu {
public static void main(String[] args) {
List<String> color = List.of("♦", "♣", "♠", "♥");
List<String> numbers = List.of("3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"); // 存储牌的索引
ArrayList<Integer> pokerIndex = new ArrayList<>();
// 存储牌的索引和组装好的牌
HashMap<Integer, String> hashMap = new HashMap<>();
int count = 0;
hashMap.put(53, "小王");
hashMap.put(54, "大王");
for (int j = 0; j < numbers.size(); j++) {
for (int i = 0; i < color.size(); i++) {
++count;
pokerIndex.add(count);
hashMap.put(count, color.get(i) + numbers.get(j));
}
}
Collections.addAll(pokerIndex, 53, 54);
System.out.println("pokerIndex = " + pokerIndex);
System.out.println("hashMap = " + hashMap); // 洗牌
Collections.shuffle(pokerIndex); ArrayList<Integer> player1 = new ArrayList<>();
ArrayList<Integer> player2 = new ArrayList<>();
ArrayList<Integer> player3 = new ArrayList<>();
ArrayList<Integer> diPai = new ArrayList<>(); ArrayList<String> player1Poker = new ArrayList<>();
ArrayList<String> player2Poker = new ArrayList<>();
ArrayList<String> player3Poker = new ArrayList<>();
ArrayList<String> diPaiPoker = new ArrayList<>(); // 发牌
for (int i = 0; i < pokerIndex.size(); i++) {
Integer index = pokerIndex.get(i);
if (i >= 51) {
diPai.add(index);
} else if (i % 3 == 0) {
player1.add(index);
} else if (i % 3 == 1) {
player2.add(index);
} else if (i % 3 == 2) {
player3.add(index);
}
}
Collections.sort(player1);
Collections.sort(player2);
Collections.sort(player3);
Collections.sort(diPai); Set<Integer> integers = hashMap.keySet();
Iterator<Integer> iterator = integers.iterator();
for (int i = 0; i < player1.size(); i++) {
player1Poker.add(hashMap.get(player1.get(i)));
}
for (int i = 0; i < player2.size(); i++) {
player2Poker.add(hashMap.get(player2.get(i)));
}
for (int i = 0; i < player3.size(); i++) {
player3Poker.add(hashMap.get(player3.get(i)));
}
for (int i = 0; i < diPai.size(); i++) {
diPaiPoker.add(hashMap.get(diPai.get(i)));
} System.out.println("player1Poker = " + player1Poker);
System.out.println("player2Poker = " + player2Poker);
System.out.println("player3Poker = " + player3Poker);
System.out.println("diPaiPoker = " + diPaiPoker);
} }

pokerIndex = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54]
hashMap = {1=♦3, 2=♣3, 3=♠3, 4=♥3, 5=♦4, 6=♣4, 7=♠4, 8=♥4, 9=♦5, 10=♣5, 11=♠5, 12=♥5, 13=♦6, 14=♣6, 15=♠6, 16=♥6, 17=♦7, 18=♣7, 19=♠7, 20=♥7, 21=♦8, 22=♣8, 23=♠8, 24=♥8, 25=♦9, 26=♣9, 27=♠9, 28=♥9, 29=♦10, 30=♣10, 31=♠10, 32=♥10, 33=♦J, 34=♣J, 35=♠J, 36=♥J, 37=♦Q, 38=♣Q, 39=♠Q, 40=♥Q, 41=♦K, 42=♣K, 43=♠K, 44=♥K, 45=♦A, 46=♣A, 47=♠A, 48=♥A, 49=♦2, 50=♣2, 51=♠2, 52=♥2, 53=小王, 54=大王}
player1Poker = [♦3, ♦5, ♣5, ♥5, ♣6, ♠6, ♣7, ♠7, ♠8, ♥9, ♥10, ♥J, ♥Q, ♠K, ♠A, ♣2, ♠2]
player2Poker = [♣3, ♦4, ♥6, ♥7, ♣8, ♥8, ♦9, ♠9, ♦10, ♣10, ♠10, ♦J, ♣J, ♠J, ♦Q, ♣Q, ♠Q]
player3Poker = [♠3, ♥3, ♣4, ♥4, ♠5, ♦6, ♦7, ♣9, ♦K, ♣K, ♦A, ♣A, ♥A, ♦2, ♥2, 小王, 大王]
diPaiPoker = [♠4, ♦8, ♥K]

Java斗地主的更多相关文章

  1. Java斗地主案例、异常和自定义异常整理

    模拟斗地主洗牌发牌 1.1 案例介绍 按照斗地主的规则,完成洗牌发牌的动作. 具体规则: 1. 组装54张扑克牌 2. 将54张牌顺序打乱 3. 三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张 ...

  2. java斗地主扑克 扑克牌 洗牌 发牌 Collection 集合练习

    package com.swift.poker; import java.util.ArrayList; import java.util.Collections; /*训练考核知识点:Collect ...

  3. java——斗地主小游戏之洗牌发牌

    遇到的问题: 1.int和Integer的区别? 1)Integer是int的包装类,int则是java的一种基本数据类型 . 2)Integer变量必须实例化后才能使用,而int变量不需要 . 3) ...

  4. java ->斗地主洗牌

    import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util ...

  5. Java斗地主(集合综合练习)

    ​ 学完了集合后我们可以开始做一个简易版的 " 斗地主 " 了,但是呢咱们这个斗地主只能实现制造牌,洗牌.发牌.看牌这几个简单的功能,并不是我们玩的 " 真人版斗地主 & ...

  6. Spark案例分析

    一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...

  7. Java基础之如何解决斗地主问题

        难的是逻辑的分析,把逻辑转化成代码是一种能力,这种能力需要多练习总结.     多多指教,共同进步. 问题: 要求实现斗地主游戏发牌过程,打印三个玩家的牌和底牌.在不看底牌的情况下,统计出三个 ...

  8. Java写的斗地主游戏源码

    源码下载在最后 我们的前年的课设要求做一个斗地主程序,当时正在愁如何做界面,当时刚好在学习C#,于是就用C#完成了这个程序.一方面,当时我C#功底还很差(其实现在也不怎么样),很多地方用了“笨办法”, ...

  9. Java基础知识强化之集合框架笔记71:模拟斗地主洗牌和发牌并对牌进行排序的案例

    1. 模拟斗地主洗牌和发牌并对牌进行排序的原理图解: 2. 代码实现: 思路: • 创建一个HashMap集合 • 创建一个ArrayList集合 • 创建花色数组和点数数组 • 从0开始往HashM ...

随机推荐

  1. Type.GetType反射的对象创建Activator.CreateInstance

    /// <summary> /// 获取对应类的实现 /// </summary> /// <param name="libname">< ...

  2. MySQL教程-MyISAM和InnoDB的区别

    MySQL的表类型MyISAM和InnoDB之间的最大区别是,InnoDB的支持事务.兄弟连教育( )来给大家做个对比: InnoDB支持一些新的功能:交易,行级锁,外键 InnoDB是高容量,高性能 ...

  3. XML DOM (Document Object Model) 定义了访问和操作 XML 文档的标准方法。

    XML DOM DOM 把 XML 文档视为一种树结构.通过这个 DOM 树,可以访问所有的元素.可以修改它们的内容(文本以及属性),而且可以创建新的元素.元素,以及它们的文本和属性,均被视为节点. ...

  4. CSS无图片三角形

    border:6px solid #f2f2f2; border-color:#999 transparent transparent transparent; border-style:solid ...

  5. 序列式容器————dequeue

    #include <deque> 双端队列,可以在队头队尾进行入队出队操作 deque<int> q; q.empty(); q.push_front(s);//将s插入到队头 ...

  6. TCP连接的11种状态,三次握手四次挥手原因

    1).LISTEN:首先服务端需要打开一个socket进行监听,状态为LISTEN. /* The socket is listening for incoming connections. 侦听来自 ...

  7. MariaDB(Mysql)-主从搭建

    卸载过程: 停止服务:systemctl stop mariadb 查询安装包:rpm -qa | grep mariadb 卸载: rpm -e mariadb-server rpm -e mari ...

  8. java开发需掌握技能1

    1.熟练掌握Java基础.语法规范.集合框架等,基础语法.Java关键字.内部类.泛型.集合类使用场景2.Java io/nio框架体系.文本文件.二进制文件读写.nio.buffer机制3.Jsp. ...

  9. 大数据笔记(二十四)——Scala面向对象编程实例

    ===================== Scala语言的面向对象编程 ======================== 一.面向对象的基本概念:把数据和操作数据的方法放到一起,作为一个整体(类 c ...

  10. Centos7系统备份与恢复教程

    原文地址:https://www.cnblogs.com/fang888/p/8473485.html Centos系统备份与恢复教程 tar: 特点 1.保留权限 2.适合备份整个目录 3.可以选择 ...