2012-02-12 21 views
1

これは私が作業を開始したJavaゲームです。私は、クリックするとプログラム全体がリセットされるというボタンを追加しようとしていました。ゲームの)。ここでJFrameをリセットする方法(ゲームを再開する)?

私のコードです:すなわち、 "PLAY" & 2つのボタンがあります "WHO WONをCHECK!" "PLAY" の場合

は、これはコードです: "!WHO WONをCHECK"

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(); 

をしかし、それはただのゲームをリセットする他の方法はありdown.Is全体のプログラムを終了します: 私が試してみましたか? 読んでいただきありがとうございます。 ご協力いただければ幸いです。

+0

良い[SSCCE](http://sscce.org/)を投稿し、新しいImageIcon( "C:\\ Users \\ COMPUTER \\ Desktop \\ deck \\ 99.png" )をクリックして画像にアクセスします。スラッシュを使用すると、これはJavaであるか、この新しいImageIcon(getClass()。getResource(...))を使用します。java.net.URLを使用してアプリケーションリソースにアクセスするには、常に良い方法です –

答えて

3

あなたは明らかに異なる状態でゲームを表現できるように更新する値を持っています。ゲームを再開するには、これらの値をすべて元の開始値に戻すだけです。これにRestartメソッドを書くことができます。

また、dispose()はウィンドウを閉じるように設計されています。

編集:プログラムをリセットするために呼び出すことのできる魔法の方法はありません。 Swingベースの容器の使用Swing Timerなくutil.Timerについて

2
  1. 、さもなければutil.Timerからの出力はout of EDTであるべきです。
  2. 古いコンテナを処分して新鮮なゲーム用の新しいアイテムを再作成する必要はありません。そのコンテンツを削除することができます。
  3. 何かはここに掲載のコードからも明らかではなく、また個別のクラスでは、ゲームの状態を保ち、新鮮なインスタンスでそれを置き換える
1

を疑問視。

+0

詳しい説明ができますか? –

+0

あなたは新しいゲームが必要なときに新しいインスタンスを作成します。 – Chriseyre2000