2014-01-21 78 views
-3

我正在爲一個學校項目開發一款mario遊戲,並且正在運行一個問題。這些是我有兩個問題的課程。當馬里奧死於馬里奧課程時,我試圖這麼做,它會調用GamePanel類中的一個方法來開始遊戲。然而,我遇到了靜態/非靜態問題,我不安靜地確定如何解決它。調用Java類中的方法

也注意到這個項目是由我的小組中的多個人工作的。

我下調的代碼完全只的重要組成部分,我們對此深感抱歉 認準startGame法遊戲面板

public class GamePanel extends JPanel implements Runnable { 




public void restart(){ 
    startGame(); 
} 
public void addNotify() { 
    super.addNotify(); // creates the peer 
    startGame(); // start the thread 
} 

/** 
* Start the game thread. 
*/ 
public void startGame() { 
    if(animator == null || !running) { 
     animator = new Thread(this, "The Animator V 3.0"); 
     animator.start(); 
    } 
    System.out.println(this + "asdasd"); 
} 

/** 
* Stop the game. 
*/ 
public void stopGame() { running = false; } 

/** 
* Defines a single game loop. 
*/ 
public void gameAction() { 
    gameUpdate(); // Update game state. 
    gameRender(); // Draw to the double buffer. 
    paintScreen(); // Draw double buffer to screen. 
} 

/** 
* The main game loop - repeatedly update, repaint, sleep. 
*/ 
public void run() { 

    running = true; 
    while(running) { 
     if(!gameFreeze) { 
      gameAction(); 
     } 

     try { 
      Thread.sleep(period); 
     } catch(InterruptedException ex){} 
    } 
    System.exit(0); // so enclosing JFrame/JApplet exits 
} 


} 

在和馬里奧類,請認準其中的System.out.println它說「馬里奧已經死了」,我想將它稱爲Game Panel中的startGame方法,GamePanel.startGame()顯示強制將startGame()變爲靜態的錯誤,但是因爲startGame具有「this」。在裏面,它不能是靜態的:

public class Mario extends CollidableObject{ 

    // Manage collision in the Y direction. 
     boolean upperCollision = false; // will check if mario is above a tile 
    if(oldY > GameRenderer.tilesToPixels(map.getHeight()) - getHeight()) { // Off the bottom of the map. 
     System.out.println("Mario has died."); 
     GamePanel.startGame(); 
     health = 3; 
    } 

} 
+2

我覺得我今天早些時候看到這個確切的問題... –

+2

這是完全相同的用戶以及@PakkuDon –

+0

@PakkuDon似乎是?這是**完全相同的問題。 –

回答

0

你忘了實例化類GamePanel ..

更改此GamePanel.startGame();

GamePanel game = new GamePanel();

game.startGame();

希望它有幫助。