我现在在写的是一个扑克牌游戏,在实现人机对战出牌时候需要用到延时操作的时候出现了问题,希望大家帮忙咯
我本意是想 在自己出一张牌后 各电脑玩家能够相继间隔一s 然后出牌,代码如下:    
    //  用来实现电脑间隔一秒出牌
    public void playWithComputer ()
    {
     for(int i = 1 ; i <4 ; i++)
     {
     try{
     Thread.sleep(1000);   // 停一秒
     putDeck(play[i][0],i);// 出牌(putDeck函数是把牌放到相应位置)
     }
     catch(Exception e)
{
e.printStackTrace() ;
}
     }
    }
    
    public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
if(arg0.getActionCommand().equals("出牌"))
{
this.setLocation(473,354); // 把牌放到相应位置
main.playWithComputer() ;

}
    }
但实际产生的情况是, 当点击按钮 “出牌”后,过了三面后,全部的牌一起放到相应位置
自己感觉可能是什么刷新的问题。。但是不知道到底怎么回事,还有就是要怎么修改。。

解决方案 »

  1.   

    我也觉得你这样可以,你要是把sleep放到放牌后面呢
      

  2.   

    actionPerformed是单线程的 for循环三次后一起返回
    多建一线程
      

  3.   


    public void run()
    {
    for (int i = 0; i <100; i++) {

    System.out.println("线程"+Thread.currentThread().getName());
    try {
    Thread.sleep(1);
    } catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }
      

  4.   

    ls 的代码什么意思 。。不明白 。
    谢谢各位了。我先去查下定时器用法。刚学JAVA - -