A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Demo_黑马 中级黑马   /  2016-5-26 18:16  /  781 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

模拟斗地主洗牌和发牌并对牌进行排序的代码实现
  1. package com.heima.test;

  2. import java.util.ArrayList;
  3. import java.util.Collections;
  4. import java.util.HashMap;
  5. import java.util.TreeSet;

  6. publicclassTest3{

  7.         /**
  8.          * * A:案例演示
  9.          * 模拟斗地主洗牌和发牌并对牌进行排序的代码实现
  10.          *
  11.          *  分析:
  12.          * 1,买一副扑克,其实就是自己创建一个集合对象,将扑克牌存储进去
  13.          * 2,洗牌
  14.          * 3,发牌
  15.          * 4,看牌
  16.          */
  17.         publicstaticvoid main(String[] args){
  18.                 //1,买一副扑克,其实就是自己创建一个集合对象,将扑克牌存储进去
  19.                 String[] num ={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
  20.                 String[] color ={"红桃","黑桃","方片","梅花"};
  21.                 HashMap<Integer,String> hm =newHashMap<>();                                        //存储索引和扑克牌
  22.                 ArrayList<Integer> list =newArrayList<>();                                        //存储索引
  23.                 int index =0;
  24.                
  25.                 //拼接扑克牌并索引和扑克牌存储在hm中
  26.                 for(String s1 : num){                                                                                        //获取数字
  27.                         for(String s2 : color){                                                                        //获取颜色
  28.                                 hm.put(index, s2.concat(s1));
  29.                                 list.add(index);                                                                                //将索引0到51添加到list集合中,注意内外层的先后顺序,外层是数字,内层是花色
  30.                                 index++;
  31.                         }
  32.                 }
  33.                 //将小王添加到双列集合中
  34.                 hm.put(index,"小王");
  35.                 list.add(index);                                                                                                //将52索引添加到集合中
  36.                 index++;
  37.                 hm.put(index,"大王");
  38.                 list.add(index);                                                                                                //将52索引添加到集合中
  39.                
  40.                 //2,洗牌
  41.                 Collections.shuffle(list);
  42.                 //3,发牌
  43.                 TreeSet<Integer> gaojin =newTreeSet<>();
  44.                 TreeSet<Integer> longwu =newTreeSet<>();
  45.                 TreeSet<Integer> me =newTreeSet<>();
  46.                 TreeSet<Integer> dipai =newTreeSet<>();
  47.                
  48.                 for(int i =0; i < list.size(); i++){
  49.                         if(i >= list.size()-3){
  50.                                 dipai.add(list.get(i));                                                        //将三张底牌存储在底牌集合中
  51.                         }elseif(i %3==0){
  52.                                 gaojin.add(list.get(i));
  53.                         }elseif(i %3==1){
  54.                                 longwu.add(list.get(i));
  55.                         }else{
  56.                                 me.add(list.get(i));
  57.                         }
  58.                 }
  59.                
  60.                 //看牌
  61.                 lookPoker(hm, gaojin,"高进");
  62.                 lookPoker(hm, longwu,"龙五");
  63.                 lookPoker(hm, me,"冯佳");
  64.                 lookPoker(hm, dipai,"底牌");
  65.         }
  66.         /*
  67.          * 看牌
  68.          * 1,返回值类型void
  69.          * 2,参数列表HashMap,TreeSet,String name
  70.          */
  71.         publicstaticvoid lookPoker(HashMap<Integer,String> hm,TreeSet<Integer> ts ,String name){
  72.                 System.out.print(name +"的牌是:");
  73.                 for(Integer i : ts){                                                //i代表双列集合中的每一个键
  74.                         System.out.print(hm.get(i)+" ");
  75.                 }
  76.                 System.out.println();
  77.         }
  78. }
复制代码
怎么样?学好集合还能偷偷地修改源码,让你把把有大小王,把把当赌神!~

4 个回复

倒序浏览
我以为你缺人呢
回复 使用道具 举报
水成这样了 你至少改下名字啊 你把冯佳至少该了吧!  不忍直视啊~~~~~~~~~~
回复 使用道具 举报

哈哈,真的缺人
回复 使用道具 举报
729524251 发表于 2016-5-26 18:22
大水B        666666666666

我不水的。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马