黑马程序员技术交流社区

标题: 玩三人斗地主的发牌程序! [打印本页]

作者: 钱金磊    时间: 2016-5-8 22:58
标题: 玩三人斗地主的发牌程序!
打印一副扑克!
自从学了java基础后感觉有些喜欢上编程了!现在学到集合,有些自己对与斗地主这款游戏有些编程思路,
现在由于没有多少时间来实现这个程序,有空就把全代码给编出来!
大纲是这样的,
1.创建一副牌,
2.发给3个人牌!当然了,底牌是不给你看的(保持游戏的公平性,但是我们可以作弊嘛!)!
3.打牌的算法!      这个这个有些复杂,如计算积分(简单),打牌的规矩(有些复杂,为啥啊!你的要敲好多实现方法的代码),出牌后计算谁能下一次出牌(这个思路不是刚入门的就能够想到的!);
4.用GUI显示窗口(这个得做的可以做的好看点嘛!这个把x讯的斗地主截个图呗!)
5.你可以和你的pc一起玩了!(非常能打发时间!)
  1. import java.util.Comparator;
  2. import java.util.ArrayList;
  3. import java.util.Collections;
  4. import java.util.Set;
  5. import java.util.TreeMap;
  6. import java.util.TreeSet;
  7. public class Demo3 {
  8.         /**
  9.          * 斗地主
  10.          * 0.有一副牌!
  11.          * 1.发牌!
  12.          * 2.洗牌!
  13.          *
  14.          */
  15.         public static void main(String[] args) {
  16.                 // TODO Auto-generated method stub
  17.                 String[] packer={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
  18.                 String[] huase ={"♣","♥","♦","♠"};
  19.                 //拼牌!
  20.                 TreeMap<Integer, String> tr=new TreeMap<>();
  21.                 int i=0;
  22.                 for (int j = 0; j < packer.length; j++) {
  23.                         for (int j2 = 0; j2 < huase.length; j2++) {
  24.                                 tr.put(i++, huase[j2].concat(packer[j]));
  25.                         }
  26.                 }
  27.                 tr.put(i++, "☀");        //小王
  28.                 tr.put(i++, "☀☀");        //大王
  29.                 Set<Integer> set=tr.keySet();        //键集合
  30.                 TreeSet<Integer> tree =new TreeSet<> (new Comparator<Integer>() {

  31.                         @Override
  32.                         public int compare(Integer i1, Integer i2) {
  33.                                 // TODO Auto-generated method stub
  34.                                 int i=i1-i2;
  35.                                 return i==0?0:i;
  36.                         }
  37.                 });
  38.                 ArrayList<Integer> al=new ArrayList<>();
  39.                 al.addAll(set);        //获得键集合
  40.                
  41.                 Collections.shuffle(al);        //打乱牌
  42.                 //发牌(4组)
  43.                 ArrayList<Integer> a2=new ArrayList<>();       
  44.                 ArrayList<Integer> a3=new ArrayList<>();       
  45.                 ArrayList<Integer> a4=new ArrayList<>();       
  46.                 ArrayList<Integer> a5=new ArrayList<>();       
  47.                 for (int j = 0; j < al.size(); j++) {
  48.                         if(j>=al.size()-3)
  49.                                 a2.add(al.get(j));
  50.                         else if(j%3==0)
  51.                                 a3.add(al.get(j));
  52.                         else if(j%3==1)
  53.                                 a4.add(al.get(j));
  54.                         else
  55.                                 a5.add(al.get(j));
  56.                 }
  57.                 洗牌(tree, a5);
  58.                 洗牌(tree, a2);
  59.                 洗牌(tree, a3);
  60.                 洗牌(tree, a4);
  61.        
  62.                 //看牌了
  63.                 看牌(a2,tr);
  64.                 System.out.println();
  65.                 看牌(a3,tr);
  66.                 System.out.println();               
  67.                 看牌(a4,tr);
  68.                 System.out.println();
  69.                 看牌(a5,tr);
  70.         }

  71.         private static void 洗牌(TreeSet<Integer> tree, ArrayList<Integer> al) {
  72.                 tree.clear();
  73.                 tree.addAll(al);
  74.                 al.clear();
  75.                 al.addAll(tree);
  76.         }

  77.         private static void 看牌(ArrayList<Integer> al,
  78.                         TreeMap<Integer, String> tr) {
  79.                 // TODO Auto-generated method stub
  80.                 for (Integer i : al) {
  81.                         System.out.print(tr.get(i)+"    ");
  82.                 }
  83.         }
  84. }
  85.        
复制代码




作者: 729524251    时间: 2016-5-8 23:20
卧槽 好多大牛
作者: 放手一搏    时间: 2016-5-8 23:28
真是太厉害了  我什么时候也能变成大牛

作者: 随风而逸    时间: 2016-5-8 23:49
好赞的样子
作者: `爱吃猫的鱼    时间: 2016-5-9 09:12
求抱大腿。
作者: 董改名    时间: 2016-5-9 17:27
有用,谢谢了
作者: zhouhp    时间: 2016-5-9 17:36
这个。。。这个。。。这个。。。。。
作者: 溪溪笑    时间: 2016-5-9 21:28
看一看。。。。。。。。。。。
作者: strliu    时间: 2016-5-9 22:09
还只能说完全看不懂,加油




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