1、 有一副扑克牌(52张),发到4个人手中,
要求:
1) 点击开始按钮,开始发牌,点击洗牌重新开始
2) 每半秒发一张牌,从第一个人开始发,界面上显示4个人得到的牌(排好序),不,4个人得到的牌不能有重复
提示:
1) 给扑克牌类加一个标志,表示该张牌是否已用
2) 定义52大小的扑克牌数组,先生成完整的52张牌
3) 给四个人定义四个13大小的数组,当发到某个人,可以随机发一张牌,检查该牌是否已用,若没有,则发给这个人,并且将这个人得到的牌排序,(repaint())显示到界面上,并且将这个牌置为已用;否则再随机发一张牌。
4)参考thinking in java 第14章 多线程例子,Counter2.java,主界面由Applet来实现,
发牌由“class SeparateSubTask extends Thread” 来实现,注意发牌线程类构造函数中的参数:SeparateSubTask(Counter2 c2),参数使用主界面类的对象,这样在发牌线程中就可以操作主界面上的元素。框架:
import java.awt.*;
import java.awt.event.*;
import java.applet.*;class Play extends Thread {  private Mainpanel m;  public SeparateSubTask(Mainpanel m) {
    this.m = m;
    start();
  }  public void run() {
    while (true)
{
      try 
  {
          sleep(500);
      } catch (InterruptedException e){}
      //随机产生一张牌
  //发给某一个人 m.man1,m.man2,,,,,
  //对m.man1,m.man2,m.man3,m.man4,排序
  //调用m.repaint()重画主界面
    }
  }
} public class Mainpanel extends Applet {  private Play pl = null;
  private Button 
    onOff = new Button("suffle"),
    start = new Button("Start");
 Card c=new Card[52];
 Card man1=new Card[13];
 Card man2=new Card[13];
 Card man3=new Card[13];
 Card man4=new Card[13];  public void init() { for()
{
//初始化52张纸牌
}
    add(t);                                        //请问哪来的t?
    start.addActionListener(new StartL());
    add(start);
    onOff.addActionListener(new OnOffL());
    add(onOff);
  }
  class StartL implements ActionListener {
    public void actionPerformed(ActionEvent e) {
      if(pl == null)
        pl = new Play(Counter2.this);
    }
  }
 
  public void paint(Graphics g)
  {
     //根据man1,man2,man3,man4画出牌
  }
  public static void main(String[] args) {
    Mainpanel applet = new Mainpanel();
    Frame aFrame = new Frame("Counter2");
    aFrame.addWindowListener(
      new WindowAdapter() {
        public void windowClosing(WindowEvent e) {
          System.exit(0);
        }
      });
    aFrame.add(applet, BorderLayout.CENTER);
    aFrame.setSize(300,200);
    applet.init();
    applet.start();                          //请问applet哪有start()方法,Play才有啊。
    aFrame.setVisible(true);
  }
}