2012-02-12 4 views
1

이것은 내가 계속 작업을 시작한 자바 게임입니다. "RESTART"라는 버튼을 추가하려고 시도했습니다. 클릭하면 전체 프로그램이 시작 시점에 있었던 것처럼 재설정됩니다. 게임의).JFrame을 재설정하는 방법 (게임 다시 시작)?

내 코드는 다음과 같습니다. "PLAY"& "두 가지 버튼이 있습니다." "PLAY"를

이 코드입니다 : "WHO WON 점검"

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

들어 이 코드입니다 :이 라벨의의 mouseClicked 이벤트에 기록되는 코드의 또 다른 세트도하지만 내가 여기에 많은 도움이 될 것이라고 생각하지 않는다

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

.

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

을하지만 그것은 단지 게임을 재설정하는 다른 방법이 아래이게 전체 프로그램을 종료 : 나는 시도? 읽어 주셔서 감사합니다. 도움이 될 것입니다.

+0

게시 좋은 [SSCCE] (http://sscce.org/) 및 새 ImageIcon ("C : \\ Users \\ COMPUTER \\ Desktop \\ deck \\ 99.png")을 눌러 이미지에 액세스하십시오. 슬래시 (/)를 사용하십시오. 이것은 Java이거나 새로운 ImageIcon (getClass(). getResource (...))을 사용하십시오. java.net.URL을 사용하여 응용 프로그램 자원에 액세스하는 좋은 방법입니다. –

답변

3

분명히 다른 상태에서 게임을 나타낼 수 있도록 업데이트하는 값이 있습니다. 게임을 다시 시작하려면이 모든 값을 원래 시작 값으로 다시 설정하기 만하면됩니다. 이것에 Restart 메서드를 작성할 수 있습니다.

또한 dispose()는 창을 닫도록 설계되었습니다.

편집 : 프로그램을 재설정하기 위해 호출 할 수있는 마법 방법이 없습니다. 스윙 기반 컨테이너 사용 Swing Timer보다는 util.Timer 들어

2
  1. 달리 util.Timer로부터 출력 out of EDT이어야한다.
  2. 오래된 컨테이너를 처분하고 새로운 게임을 새로 만들 필요가 없으며 그 내용을 제거 할 수 있습니다. 다른
  3. 아무것도 코드를 여기에 게시에서 명확하지 않으며,
1

는 별개의 클래스에서 게임의 상태를 유지하고 새로운 인스턴스와 그 대체 질문.

+0

자세히 설명해 주시겠습니까? –

+0

게임을 별도의 클래스로 사용할 수 있습니다. 새 게임이 필요한 경우 새 인스턴스를 만듭니다. – Chriseyre2000