黑马程序员技术交流社区

标题: 斗地主代码实现(方法版) [打印本页]

作者: BlackTiger    时间: 2016-8-19 18:15
标题: 斗地主代码实现(方法版)
  1. package Demo2;

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

  5. /*
  6. * 斗地主
  7. * 1,造牌
  8. * 2,洗牌
  9. * 3,发牌看牌
  10. * 将每一步封装到方法中
  11. */
  12. public class DouMethodDemo {

  13.         public static void main(String[] args) {
  14.                 HashMap<Integer,String> map=makeCard();
  15.                 ArrayList<Integer> key=sendCard();
  16.                 sendCard(map,key);
  17.         }
  18.        
  19.         private static HashMap<Integer, String> makeCard() {
  20.                 //造花色
  21.                 ArrayList<String> color=new ArrayList<String>();
  22.                 Collections.addAll(color, "♥","♣","♠","♦");
  23.                 //造牌点
  24.                 ArrayList<String> number=new ArrayList<String>();
  25.                 Collections.addAll(number, "3","4","5","6","7","8","9","10","J","Q","K","A","2");
  26.                 //将花色 和 牌点 加入Map集合中
  27.                 HashMap<Integer,String> map=new HashMap<>();
  28.                 int index=0;
  29.                 for(String num:number){
  30.                         for(String co:color){
  31.                                 map.put(index++, num+co);
  32.                         }
  33.                 }
  34.                 //加大小王
  35.                 map.put(index++, "小王");
  36.                 map.put(index++,"大王");
  37.                 return map;
  38.         }

  39.         private static ArrayList<Integer> sendCard() {
  40.                 ArrayList<Integer> key=new ArrayList<Integer>();
  41.                 for(int i=0;i<54;i++){
  42.                         key.add(i);
  43.                 }
  44.                 Collections.shuffle(key);
  45.                 return key;
  46.         }

  47.         private static void sendCard(HashMap<Integer, String> map, ArrayList<Integer> key) {
  48.                 //把54张牌发到3个玩家和底牌的集合中
  49.                 ArrayList<Integer> keyPlay1=new ArrayList<>();
  50.                 ArrayList<Integer> keyPlay2=new ArrayList<>();
  51.                 ArrayList<Integer> keyPlay3=new ArrayList<>();
  52.                 ArrayList<Integer> keyCards=new ArrayList<>();
  53.                 //把打乱数字的集合发给玩家和底牌
  54.                 for(int i=0;i<key.size();i++){
  55.                         if(i>50){
  56.                                 int num=key.get(i);
  57.                                 keyCards.add(num);
  58.                         }
  59.                         else if(i%3==0){
  60.                                 keyPlay1.add(key.get(i));
  61.                         }
  62.                         else if(i%3==1){
  63.                                 keyPlay2.add(key.get(i));
  64.                         }
  65.                         else{
  66.                                 keyPlay3.add(key.get(i));
  67.                         }
  68.                 }
  69.                 //将玩家手中的牌进行排序
  70.                 Collections.sort(keyPlay1);
  71.                 Collections.sort(keyPlay2);
  72.                 Collections.sort(keyPlay3);
  73.                 //创建玩家手中牌的集合
  74.                 ArrayList<String> valuePlay1=new ArrayList<String>();
  75.                 ArrayList<String> valuePlay2=new ArrayList<String>();
  76.                 ArrayList<String> valuePlay3=new ArrayList<String>();
  77.                 ArrayList<String> valueCards=new ArrayList<String>();
  78.                 //通过玩家集合中的key找到Map集合中的Value
  79.                 for(Integer k:keyPlay1){
  80.                         String value=map.get(k);
  81.                         valuePlay1.add(value);
  82.                 }
  83.                 for(Integer k:keyPlay2){
  84.                         valuePlay2.add(map.get(k));
  85.                 }
  86.                 for(Integer k:keyPlay3){
  87.                         valuePlay3.add(map.get(k));
  88.                 }
  89.                 for(Integer k:keyCards){
  90.                         valueCards.add(map.get(k));
  91.                 }
  92.                 //看牌
  93.                 System.out.println(valuePlay1);
  94.                 System.out.println(valuePlay2);
  95.                 System.out.println(valuePlay3);
  96.                 System.out.println(valueCards);
  97.         }
  98. }
复制代码

作者: FunnyKing    时间: 2016-8-19 22:29
66666666666666




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