java中用map实现斗地主基础版
来源:互联网 发布:直播源码 诱导充值 编辑:程序博客网 时间:2024/05/18 03:21
模拟斗地主洗牌和发牌,,并对牌进行排序,具体规则:1.组装54张扑克牌2.将54张牌随机处理3.三个玩家(一个地主两个农民),三个人交替摸牌,每人17张牌,最后流三张底牌4.查看三个人各自查看手中的大小排序
- 方法1
public class TestHashMpa { /* * 初始化 */ public static Map<Integer, String> initialize(){ Map<Integer, String> map = new HashMap<>(); map.put(1, "黑桃3"); map.put(5, "黑桃4"); map.put(9, "黑桃5"); map.put(13, "黑桃6"); map.put(17, "黑桃7"); map.put(21, "黑桃8"); map.put(25, "黑桃9"); map.put(29, "黑桃10"); map.put(33, "黑桃J"); map.put(37, "黑桃Q"); map.put(41, "黑桃K"); map.put(45, "黑桃A"); map.put(49, "黑桃2"); map.put(2, "方块3"); map.put(6, "方块4"); map.put(10, "方块5"); map.put(14, "方块6"); map.put(18, "方块7"); map.put(22, "方块8"); map.put(26, "方块9"); map.put(30, "方块10"); map.put(34, "方块J"); map.put(38, "方块Q"); map.put(42, "方块K"); map.put(46, "方块A"); map.put(50, "方块2"); map.put(3, "红桃3"); map.put(7, "红桃4"); map.put(11, "红桃5"); map.put(15, "红桃6"); map.put(19, "红桃7"); map.put(23, "红桃8"); map.put(27, "红桃9"); map.put(31, "红桃10"); map.put(35, "红桃J"); map.put(39, "红桃Q"); map.put(43, "红桃K"); map.put(47, "红桃A"); map.put(51, "红桃2"); map.put(4, "梅花3"); map.put(8, "梅花4"); map.put(12, "梅花5"); map.put(16, "梅花6"); map.put(20, "梅花7"); map.put(24, "梅花8"); map.put(28, "梅花9"); map.put(32, "梅花10"); map.put(36, "梅花J"); map.put(40, "梅花Q"); map.put(44, "梅花K"); map.put(48, "梅花A"); map.put(52, "梅花2"); map.put(53,"小王"); map.put(54,"大王"); return map; } /* * 产生1-54的数,判断是否是map中的键 */ public static int random(Map<Integer, String> map){ int key=0; while(true){ key=((int)(Math.random()*54)+1); if(map.containsKey(key)){ break; } } return key; } /* * 根据键倒序排序 */ public static Comparator<Integer> compartaor(){ return new Comparator<Integer>() { @Override public int compare(Integer o1, Integer o2) { // TODO Auto-generated method stub return o2-o1; } }; } public static void main(String[] args) { Map<Integer, String> map=initialize(); TreeMap<Integer, String> dizhu=new TreeMap<>(compartaor()); TreeMap<Integer, String> nongmin1=new TreeMap<>(compartaor()); TreeMap<Integer, String> nongmin2=new TreeMap<>(compartaor()); for(int i=1;i<=17;i++){ int key=random(map); dizhu.put(key, map.get(key)); map.remove(key); key=random(map);; nongmin1.put(key, map.get(key)); map.remove(key); key=random(map); nongmin2.put(key, map.get(key)); map.remove(key); } for(Integer key:map.keySet()){ dizhu.put(key, map.get(key)); } System.out.println("地主的牌为:"); System.out.println(dizhu.values()); System.out.println("农民1的牌为:"); System.out.println(nongmin1.values()); System.out.println("农民2的牌为:"); System.out.println(nongmin2.values()); }}
2.方法二
public class DudiDemo { public static void main(String[] args) { //创建Map集合组合牌,key编号,value是牌(花色+数字) HashMap<Integer, String> mapPooker=new HashMap<>(); //创建List集合存储编号 ArrayList<Integer> listPookerNum=new ArrayList<>(); //创建花色数组 String[] colors={"♠","♥","♦","♣"}; //创建电视数组 String[] numbers={"2","A","K","Q","J","10","9","8","7","6","5","4","3"}; //拼接扑克牌 int index=0; mapPooker.put(index, "大王"); listPookerNum.add(index); index++; mapPooker.put(index, "小王"); listPookerNum.add(index); index++; for(String strNum:numbers){ for(String strColors:colors){ mapPooker.put(index, strColors+strNum); listPookerNum.add(index);//对key进行随机排序====》洗牌 index++; } } //随机洗牌 Collections.shuffle(listPookerNum); //发牌并且排序 TreeSet<Integer> play1=new TreeSet<>(); TreeSet<Integer> play2=new TreeSet<>(); TreeSet<Integer> play3=new TreeSet<>(); //存放底牌 TreeSet<Integer> buttomNum=new TreeSet<>(); for(int i=0;i<listPookerNum.size();i++){ //先拿出三张底牌 if(i<3){ buttomNum.add(listPookerNum.get(i)); }else if(i%3==0){ play1.add(listPookerNum.get(i)); }else if(i%3==1){ play2.add(listPookerNum.get(i)); }else if(i%3==2){ play3.add(listPookerNum.get(i)); } } //看牌 /* * 需要指定地主(name) * 指定那一份牌发给地主 * 地主看牌 */ lookPookers("底牌",buttomNum,mapPooker); lookPookers("农民1",play1,mapPooker); lookPookers("农民2",play2,mapPooker); //把底牌放入地主牌中 for(Integer num:buttomNum){ play3.add(num); } lookPookers("地主",play3,mapPooker); } //打印牌 public static void lookPookers(String name,TreeSet<Integer> play,HashMap<Integer, String> pooker){ System.out.print(name+":"); for(Integer key:play){ String value=pooker.get(key); System.out.print(value+" "); } System.out.println(); }}
阅读全文
0 0
- java中用map实现斗地主基础版
- 实现斗地主发牌(java)
- java中用HashMap,ArrayList,TreeMap实现一个模拟斗地主发牌的用例
- java版斗地主,一副牌实现发牌过程
- java基础7:map集合原理详解及斗地主游戏案例
- JAVA 实现斗地主分牌
- java 利用集合实现斗地主算法
- Java 实现斗地主扑克牌排序
- java案例-实现斗地主游戏案例
- Java集合实现斗地主功能
- Java实现简单的斗地主游戏
- 三人斗地主基础玩法
- java SE集合类实现斗地主洗牌、牌排序
- Java实现--模拟斗地主的洗牌和发牌
- java用ArrayList集合来实现斗地主发牌案例
- java swing实现斗地主小游戏项目源码
- 斗地主AI算法实现
- 斗地主火箭效果实现
- 字幕实现自动滚动效果 marqueemar
- 解决Raspberry系统ssh默认关闭的问题
- 环境变量
- 各种接口简介
- file上传文件操作【练习】
- java中用map实现斗地主基础版
- 最值得拥有的免费Bootstrap后台管理模板
- Windows 系统版本判断
- hdu 2085 水题
- 多线程的上手例子
- mongodb Replica Set集群修改ip
- const关键字相关
- 等价类划分:圣诞奖金
- SpringBoot+SpringBatch+Oracle配置