繁体   English   中英

如何重置JFrame(重启游戏)?

[英]How To Reset JFrame (Restart Game)?

这是我已经开始研究的Java游戏。我一直试图添加一个显示“ RESTART”的按钮,单击该按钮可以像按开始时一样重设整个程序(我的意思是在开始时游戏)。

这是我的代码:有2个按钮,分别是“ PLAY”和“ CHECK WHO WON!”。

对于“ PLAY”,这是代码:

    int delay = 1000;
 final Timer timer = new Timer();
  timer.schedule(new TimerTask(){
  public void run(){
  String b = "C:\\Users\\COMPUTER\\Desktop\\deck\\.png";
Random r = new Random();
r1 = r.nextInt(upplim)+lolim;
String a = Integer.toString(r1);
String c = "C:\\Users\\COMPUTER\\Desktop\\deck\\"+a+".png";
        l1.setIcon(new ImageIcon(c));  
  }
  },delay, 50);

对于“检查谁赢了!” 这是代码:

final int p = h;
System.out.println("ANSWER IS:"+p);
        int delay2 = 1000;

     for (int i = 1; i < 53; i++)
{
    while(true)
    {
         next = rng.nextInt(Ulim) + Llim;
        if (!generated.contains(next))
        {
            generated.add(next);
            break;
        }     
    }
    if ( i % 2 == 0 ) 
   {count++;
    deck1[e] = next;deck1count++;
    e++;
} 
   else {count++;
       deck2[f] = next;deck2count++;
    f++;
   }    
    System.out.println(""+next); 
        if(next==p)
        {break;}
}
 if(deck1count==deck2count)
{
count=count-2;
fcard=99;}  

 final Timer timer2 = new Timer();
         timer2.schedule(new TimerTask(){
 public void run(){  
do 
{
System.out.println("dec2       "+deck2[z]);
String a = Integer.toString(deck2[z]);
       String c = "C:\\Users\\COMPUTER\\Desktop\\deck\\"+a+".png";
       l3.setIcon(new ImageIcon(c));

System.out.println("dec1       "+deck1[z]);
String b = Integer.toString(deck1[z]);
       String d = "C:\\Users\\COMPUTER\\Desktop\\deck\\"+b+".png";
       l4.setIcon(new ImageIcon(d)); 

System.out.println("count"+count);
z++;
count=count-2;

if(fcard==99&&count<0)
{l3.setIcon(new ImageIcon("C:\\Users\\COMPUTER\\Desktop\\deck\\99.png"));
}
}while(count>0&&z==p);


if(count<0)
  {timer2.cancel();
  reschk=11;
timer2.purge();
  }
} 
  },delay2, 1000);  

在标签的MouseClicked事件上还有另一组代码,但是我认为这对您没有太大帮助。 我努力了:

classname.this.dispose();
        classname classname = new classname();

但这只是关闭了整个程序,还有其他方法可以重置游戏吗? 谢谢阅读。 任何帮助,将不胜感激。

您显然具有更新的值,以便可以在不同状态下表示游戏。 如果您想重新开始游戏,只需要将所有这些值都设置回原始的开始值即可。 您可以为此编写一个Restart方法。

另外,dispose()用于关闭窗口。

编辑:没有魔术方法可以调用来重置您的程序。

  1. 对于基于Swing的容器,请使用Swing Timer而不是util.Timer ,否则util.Timer输出应超出EDT
  2. 您无需处置旧容器并为新游戏重新创建新容器,则可以删除其内容。
  3. 从此处发布的代码中看不出其他任何内容,也没有问题

将游戏状态保持在不同的类中,并用新的实例替换。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM