Я работаю над марио-игрой для школьного проекта, и я сталкиваюсь с проблемой. Это два моих класса, с которыми у меня проблемы. Я пытаюсь так, когда Марио умирает в классе 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 где он говорит: «Марио умер», я хочу называть это методом startGame в Game Panel, GamePanel.startGame() показывает ошибку, вынуждающую startGame() в статическую, но поскольку startGame имеет «это». в нем, он не может быть статичным .:
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 кажется? Это точный вопрос **. –