黑马程序员技术交流社区

标题: 斗地主代码 模拟 发牌 洗牌 看牌 [打印本页]

作者: 马瑞_u9n12    时间: 2015-12-27 18:35
标题: 斗地主代码 模拟 发牌 洗牌 看牌
本帖最后由 马瑞_u9n12 于 2015-12-27 18:41 编辑
  1. import java.util.ArrayList;
  2. import java.util.Collections;
  3. import java.util.HashMap;
  4. import java.util.TreeSet;

  5. //* 模拟斗地主洗牌和发牌并对牌进行排序的代码实现
  6. public class Demo5 {
  7. public static void main(String[] args) {
  8.         //先定义一幅牌  用 hashmap集合 定义

  9.         String[] num = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
  10.         String[] color = {"方片","梅花","红桃","黑桃"};
  11.         HashMap<Integer, String> hm = new HashMap<>();  //存储索引和扑克牌
  12.         
  13.          ArrayList<Integer> list = new ArrayList<>();  //存储索引 洗牌 洗到低还是洗的索引值
  14.         int  index = 0 ; //定义索引值为0;
  15.          for(String s1: num){
  16.                  for(String s2: color){
  17.                          hm.put(index, s2.concat(s1) );
  18.                         //将索引和扑克牌添加到hashmap 中
  19.                          list.add(index);
  20.                  index++;
  21.          }
  22. }
  23.          hm.put(index, "小王");
  24.          list.add(index);
  25.          index++;
  26.          hm.put(index, "大王");
  27.          list.add(index);
  28.          //洗牌
  29.          Collections.shuffle(list);
  30.          //发牌 因为 treeSet 集合的 排序 和 无重复特点 所以用他
  31.          TreeSet<Integer>  gaojin = new TreeSet<>();
  32.          TreeSet<Integer>  longwu = new TreeSet<>();
  33.          TreeSet<Integer>  me     = new TreeSet<>();
  34.          TreeSet<Integer>  dipai  = new TreeSet<>();
  35.          for(Integer i: list){
  36.                  if( i >=list.size()-3){
  37.                          dipai.add(list.get(i));
  38.                  }
  39.                  else if(i%3==0){
  40.                          gaojin.add(list.get(i));
  41.                  }else if(i%3==1){
  42.                          longwu.add(list.get(i));
  43.                  }else {
  44.                          me.add(list.get(i));
  45.                  }
  46.          }
  47.          //看牌 定义方法  看牌的过程就是通过键找值的过程
  48.          //lookpai(String ,高进,hm);
  49.         /*for (Integer i : dipai) {
  50.                 System.out.println("dipaishi"+hm.get(i));
  51.         }*/
  52.          lookpai("高进",gaojin,hm);
  53.          lookpai("龙五",longwu,hm);
  54.          lookpai("我的",me,hm);
  55.          lookpai("底牌",dipai,hm);
  56.          
  57. }
  58.   public static void lookpai (String names, TreeSet<Integer> ts,  HashMap<Integer, String>hm ){
  59.           System.out.print(names+"的牌是");
  60.           for (Integer key : ts) {
  61.                  System.out.print(hm.get(key)+" ");
  62.                
  63.         }
  64.           System.out.println();
  65.   }
  66. }

复制代码


作者: 雨来    时间: 2015-12-27 18:45
没有开玩的过程,加上就更好了
作者: 王冀仁    时间: 2015-12-27 22:07
牛赞一个




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2