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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 黑夜中那颗星 于 2015-12-30 14:07 编辑

  1. import java.util.ArrayList;
  2. import java.util.Collections;
  3. import java.util.Comparator;
  4. import java.util.Iterator;
  5. import java.util.Map;
  6. import java.util.TreeMap;
  7. public class Ddz {
  8.         static TreeMap<Integer,String> t1 = new TreeMap<Integer,String>(new Copara());        //玩家一
  9.         static TreeMap<Integer,String> t2 = new TreeMap<Integer,String>(new Copara());        //玩家二
  10.         static TreeMap<Integer,String> t3 = new TreeMap<Integer,String>(new Copara());        //玩家三
  11.         static ArrayList<String> al = new ArrayList<String>();        //存单个牌的容器
  12.         static ArrayList<Pk> al1 = new ArrayList<Pk>();        //存一副牌的容器
  13.         public static void main(String[] args) {
  14.                 addBoard();        //所有牌,没色的
  15.                 addColour();//添加所有牌,有色的
  16.                 Collections.shuffle(al1);        //洗牌
  17.                 Fp();        //发牌
  18.                 showt(t1,"玩家一");
  19.                 showt(t2,"玩家二");
  20.                 showt(t3,"玩家三");
  21.                 System.out.print("底牌:");
  22.                 for(int x = al1.size()-3;x<al1.size();x++){
  23.                         Pk p = al1.get(x);
  24.                         System.out.print(x==al1.size()-1?p.getName():p.getName()+",");
  25.                 }
  26.         }
  27.         private static void Fp() {        //发牌
  28.                 for(int x = 0;x<al1.size()-3;){
  29.                                 Pk p = al1.get(x);
  30.                                 Pk p1 = al1.get(x+1);
  31.                                 Pk p2 = al1.get(x+2);
  32.                                 t1.put(p.getId(), p.getName());
  33.                                 t2.put(p1.getId(), p1.getName());
  34.                                 t3.put(p2.getId(), p2.getName());
  35.                                 x+=3;
  36.                 }
  37.         }
  38.         private static void showt(TreeMap<Integer, String> t,String name) {        //看牌
  39.                 StringBuilder sb = new StringBuilder();
  40.                 for(Iterator<Map.Entry<Integer,String>> it = t.entrySet().iterator();it.hasNext();){
  41.                         Map.Entry<Integer, String> map = it.next();
  42.                         sb.append(map.getValue()+",");
  43.                 }
  44.                 System.out.println(name+":"+sb.toString().substring(0,sb.length()-1));
  45.         }
  46.         private static void addColour() {        //添加所有牌
  47.                 int count = 1;
  48.                 String[] string = {"红桃","黑桃","方块","梅花"};
  49.                 for(String str:al){
  50.                         for(int x = 0;x<4;x++){
  51.                                 al1.add(new Pk(count,string[x]+str));        //给每个牌设定一个id,3是最小的所以他的id是1,然后依次升序
  52.                         }
  53.                         count++;
  54.                 }
  55.                 al1.add(new Pk(14,"小王"));
  56.                 al1.add(new Pk(15,"大王"));
  57.         }
  58.         private static void addBoard() {        //添加单个有色的牌,按照牌的大小顺序添加,除大小王
  59.                 for(int x = 3;x<=10;x++){
  60.                         al.add(x+"");
  61.                 }
  62.                 al.add("J");
  63.                 al.add("Q");
  64.                 al.add("K");
  65.                 al.add("A");
  66.                 al.add("2");
  67.         }
  68. }
  69. class Pk{        //把牌封装成一个对象,属性有id和name,id是为了方便牌的排序
  70.         private int id;
  71.         private String name;
  72.         @Override
  73.         public int hashCode() {
  74.                 final int prime = 31;
  75.                 int result = 1;
  76.                 result = prime * result + id;
  77.                 result = prime * result + ((name == null) ? 0 : name.hashCode());
  78.                 return result;
  79.         }
  80.         @Override
  81.         public boolean equals(Object obj) {
  82.                 if (this == obj)
  83.                         return true;
  84.                 if (obj == null)
  85.                         return false;
  86.                 if (getClass() != obj.getClass())
  87.                         return false;
  88.                 Pk other = (Pk) obj;
  89.                 if (id != other.id)
  90.                         return false;
  91.                 if (name == null) {
  92.                         if (other.name != null)
  93.                                 return false;
  94.                 } else if (!name.equals(other.name))
  95.                         return false;
  96.                 return true;
  97.         }
  98.         public int getId() {
  99.                 return id;
  100.         }
  101.         public String getName() {
  102.                 return name;
  103.         }
  104.         public Pk(int id, String name) {
  105.                 super();
  106.                 this.id = id;
  107.                 this.name = name;
  108.         }
  109. }
  110. class Copara implements Comparator<Integer>{        //定义一个比较器,因为TreeMap键是唯一性的,所以要稍作修改,不然的话一个牌添加不了四张
  111.         public int compare(Integer o1, Integer o2) {
  112.                 int num = o2.compareTo(o1);
  113.                 if(num==0)
  114.                         return 1;
  115.                 return num;
  116.         }
  117. }
复制代码

QQ截图20151230135829.png (88.89 KB, 下载次数: 14)

QQ截图20151230135829.png

1 个回复

倒序浏览
这个以后我们也要会的
回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马