很简单,每次每人发5张牌,比大小就可以.  
比如顺子大于对子 ,对子大于散牌.
一共54张,小于10张时重新发牌

解决方案 »

  1.   

    你没有说老王怎么判断,我就没办法了,写了一个,希望对你有帮助,这个程序没有对牌的比较,首先是不知道老王这两张牌你想怎么比,还有就是懒得写了.请看吧.
    import java.util.*;
    class Pockers extends Stack  //这是一副牌的类,里面有54张牌,wash方法为洗牌,继承堆栈,因为摸牌本来就是取上面一张.
    {
      public Pockers()
      {
        this.add(new Pocker(Pocker.JOCKER_BLACK));
        this.add(new Pocker(Pocker.JOCKER_RED));  //加入两个老王
        for(int i=2;i<=14;i++)
          for(int j=1;j<=4;j++)
          {
            this.add(new Pocker(i,j));     //加入牌,j为花色
          }
        for(int i=1;i<=4;i++) wash();   //洗牌四次
      }
      public void wash()
      {
        Pocker temp=null;
        Random r=new Random();
        for(int i=0;i<54;i++)
        {
          temp=(Pocker)this.pop();
          this.insertElementAt(temp,Math.abs(r.nextInt()%54));  //将第i张牌插入到这副牌随机位置
        }
      }
      public boolean needReWash()  //判断是否要重洗.
      {
        return this.elementCount<10;
      }
      
      public void output()  //这个是写程序测试用的.
      {
        for(int i=0;i<54;i++)
        {
          ((Pocker)this.get(i)).output();
        }
      }
    }class Player  //玩家类
    {
      String name;
      public Pocker[] recieve=new Pocker[5];
      public Player(int i)
      {
        if(i==1) name="玩家1";
        else name="玩家2";
      }
      public void getPocker(Pocker pocker,int queue)  //得牌一张
      {
        recieve[queue]=pocker;
      }
      public void showPocker()  //显示玩家的牌
      {
        System.out.println(name+"的牌为:");
        for(int i=0;i<5;i++)
        {
          recieve[i].output();
        }
        System.out.println();
      }
    }class Judge  //裁判
    {
      public static void compare(Player player1,Player player2)  //比较玩家的牌
      {
        
      }
      public static void give(Pockers p,Player p1,Player p2)    //发牌.
      {
        for(int i=0;i<5;i++)
        {
          p1.getPocker((Pocker)p.pop(),i);
          p2.getPocker((Pocker)p.pop(),i);
        }
      }
    }class Pocker   //一张牌类
    {
      static int BLOCK=1;
      static int FLOWER=2;
      static int HEART=3;
      static int PEACH=4;  //本来开始打算用的花色字段,可惜没有用上.唉
      static int JOCKER_RED=20;
      static int JOCKER_BLACK=10;  
      
      public int number,flower;
      public Pocker(int number,int flower)  //构造1,它是对一般牌的构造
      {
        this.number=number;
        this.flower=flower;
      }
      public Pocker(int flower) //这个构造是用来构造jocker牌的.
      {
        this(100,flower);
      }
      public void output()  //输出这一张牌,这儿用的是"(大小,花色)"格式.
      {
        System.out.print("("+number+","+flower+")");
      }
    }public class a  //游戏主函数.
    {
      public static void main(String[] args)
      {
        Pockers p=new Pockers();
        Player player1=new Player(1);
        Player player2=new Player(2);
        Judge.give(p,player1,player2);
        player1.showPocker();
        player2.showPocker();
        /*
        Judge.compare(player1,player2);  //这儿没有写比较函数,这个浪费时间,懒得写,而且你没有说明JOCKER这张牌该怎么算,写了也白写,这个要你自己去写了,呵呵,方法写在Judge类的compare方法里,你可以适当的改一下,或者新建一个类什么的.呵呵.
        */
      }
    }