java模仿斗地主随机洗牌 发牌,TreeMap、ArrayList、TreeSet练习
来源:互联网 发布:shell执行sql脚本 编辑:程序博客网 时间:2024/05/17 09:33
/** * 模仿斗地主洗牌,随机发牌 * 使用TreeMap、ArrayList、TreeSet * 思想: * 使用TreeMap存54张牌,每张牌作为值,key为每张牌整数编号1-54,取出键进行乱序牌, * 之后发给三个人存在TreeSet自动会排序,然后偶循环通过键获得每张牌,斗地主不考虑花色 */import java.util.ArrayList;import java.util.Collections;import java.util.Set;import java.util.TreeMap;import java.util.TreeSet;public class Poker1 {public static void main(String[] args) {// 定义点数String[] point = { "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q","K", "A", "2" };// 定义花色// String[] fC = { "红心", "方块", "黑桃", "梅花" };String[] fC = { "♥", "♦", "♠", "♣" };// 定义扑克集合TreeMap<Integer, String> mapPoker = new TreeMap<>();// 生成扑克int sum = 0;for (String s1 : point) {for (String s2 : fC) {mapPoker.put(++sum, s2.concat(s1));}}mapPoker.put(++sum, "小王");mapPoker.put(++sum, "大王");// System.out.println(mapPoker + "\n");//获取所有键Set<Integer> keys = mapPoker.keySet();//把键个封装到ArrayList集合,便于使用Collections集合工具类洗牌ArrayList<Integer> poker = new ArrayList<>();for (Integer integer : keys) {poker.add(integer);}// System.out.println("洗牌前key:" + poker);// 洗牌//使用集合工具类洗牌Collections.shuffle(poker);// System.out.println("洗牌后key:" + poker + "\n" + poker.size());// 派牌、码牌(TreeSet),定义了三个人man1、man2、man3,底牌 diPokerTreeSet<Integer> man1 = new TreeSet<>();TreeSet<Integer> man2 = new TreeSet<>();TreeSet<Integer> man3 = new TreeSet<>();ArrayList<Integer> diPoker = new ArrayList<>(poker.subList(poker.size() - 3, poker.size()));//每人一张发牌for (int i = 0; i < poker.size() - 3; i++) {Integer s = poker.get(i);if (i % 3 == 1) {man1.add(s);} else if (i % 3 == 2) {man2.add(s);} else if (i % 3 == 0) {man3.add(s);}}// 看牌//三方牌装到ArrayList便于每个man遍历打印ArrayList<Set<Integer>> sets = new ArrayList<>();sets.add(man1);sets.add(man2);sets.add(man3);//外层遍历ArrayList的man封装,内层打印牌for (int i = 0; i < sets.size(); i++) {//三目嵌套打出每个人System.out.print(i == 0 ? "man1:" : (i == 1 ? "man2:": (i == 2 ? "man3:" : "")));Set<Integer> set = sets.get(i);for (Integer te : set) {System.out.print(mapPoker.get(te) + " ");}System.out.println();}//打印底牌System.out.print("\ndiPoker:");for (Integer te : diPoker) {System.out.print(mapPoker.get(te) + " ");}}}
0 0
- java模仿斗地主随机洗牌 发牌,TreeMap、ArrayList、TreeSet练习
- Java-斗地主洗牌发牌
- java斗地主 洗牌发牌
- 斗地主:洗牌发牌
- 【Java学习笔记】16.TreeMap集合实现斗地主洗牌发牌
- JAVA学习笔记42——TreeSet、TreeMap应用+collections模拟斗地主洗牌
- java中用HashMap,ArrayList,TreeMap实现一个模拟斗地主发牌的用例
- 斗地主洗牌+发牌+排序
- 斗地主洗牌发牌案例
- 【代码练习2】模拟斗地主洗牌和发牌
- java练习:模拟试下你斗地主的洗牌、发牌、看牌功能
- java集合框架的练习之斗地主洗牌发牌的模拟(初级版)
- java集合框架的练习之斗地主洗牌发牌的模拟(升级版)
- JAVA集合练习:斗地主发牌
- 模仿斗地主游戏发牌
- Java中使用HashMap,TreeSet和List来实现模拟斗地主的洗牌和发牌的小例子
- 用java模拟斗地主洗牌和发牌
- 用java编写模拟斗地主洗牌发牌程序
- 用命令修改ip
- vim keyboard macros
- NBNC代码行统计
- 使用Event Bus模式解耦Android App组件间通信
- Intent的用法大全
- java模仿斗地主随机洗牌 发牌,TreeMap、ArrayList、TreeSet练习
- JDBC连接MySQL数据库及示例
- [Android开发] 在Android开发时,如何实现和服务器的数据同步?
- 算法思考--------生命游戏
- 将一个链式链表L分成2个链表,一个存储L的奇数位置的元素,一个存储L偶数位置的元素
- Java常见面试题
- poj3660
- 开始读英文原著Thinking in java
- uva - 10670 - Work Reduction(贪心)