-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;
}
}
我覺得我今天早些時候看到這個確切的問題... –
這是完全相同的用戶以及@PakkuDon –
@PakkuDon似乎是?這是**完全相同的問題。 –