Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 游戏状态未注册_Java_Slick2d - Fatal编程技术网

Java 游戏状态未注册

Java 游戏状态未注册,java,slick2d,Java,Slick2d,我有一个叫做“我讨厌圣诞节”的游戏。游戏不会让我过渡到下一个状态。它说没有注册id为1的游戏状态。当我在game.java中运行相同的代码时,它工作正常。这是我的密码 Game.java package com.hurricane996.IHateChristmas; import java.util.logging.Level; import java.util.logging.Logger; import org.newdawn.slick.AppGameContainer; impor

我有一个叫做“我讨厌圣诞节”的游戏。游戏不会让我过渡到下一个状态。它说
没有注册id为1的游戏状态。
当我在game.java中运行相同的代码时,它工作正常。这是我的密码 Game.java

package com.hurricane996.IHateChristmas;

import java.util.logging.Level;
import java.util.logging.Logger;

import org.newdawn.slick.AppGameContainer;
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.SlickException;

import org.newdawn.slick.state.GameState;
import org.newdawn.slick.state.StateBasedGame;


public class Game extends StateBasedGame{
public static String name="I Hate Christmas";
public static Game instance=new Game(name);

public static final int MAIN_MENU=0;
public static final int GAME=1;
public Game(String name) {
    // TODO Auto-generated constructor stub
    super(name);
}

public static void main(String[] args) {
    // TODO Auto-generated method stub
    try{
        AppGameContainer agc=new AppGameContainer(new Game("Simple Slick Game"));
        agc.setDisplayMode(640, 480, false);
        agc.setShowFPS(false);
        agc.start();
    }catch(Exception e){
        Logger.getLogger(Game.class.getName()).log(Level.SEVERE, null, e);
    }

}






@Override
public void initStatesList(GameContainer arg0) throws SlickException {
    // TODO Auto-generated method stub
    this.addState( (GameState) new MainMenu());
    this.addState( (GameState) new GameScreen());
    this.enterState(GAME);
    this.enterState(MAIN_MENU);
}

}
MainMenu.java

package com.hurricane996.IHateChristmas;

import java.awt.Font;

import org.newdawn.slick.Color;
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.Input;
import org.newdawn.slick.SlickException;
import org.newdawn.slick.TrueTypeFont;
import org.newdawn.slick.geom.Rectangle;
import org.newdawn.slick.state.GameState;
import org.newdawn.slick.state.StateBasedGame;

public class MainMenu implements GameState {
Font font = new Font("Verdana", Font.BOLD, 32);
TrueTypeFont ttf = new TrueTypeFont(font, true);
public MainMenu() {
    // TODO Auto-generated constructor stub
}

@Override
public void mouseClicked(int button, int x, int y, int arg3) {
        Game.instance.enterState(Game.GAME);


}

@Override
public void mouseDragged(int arg0, int arg1, int arg2, int arg3) {
    // TODO Auto-generated method stub

}

@Override
public void mouseMoved(int arg0, int arg1, int arg2, int arg3) {
    // TODO Auto-generated method stub

}

@Override
public void mousePressed(int arg0, int arg1, int arg2) {
    // TODO Auto-generated method stub

}

@Override
public void mouseReleased(int arg0, int arg1, int arg2) {
    // TODO Auto-generated method stub

}

@Override
public void mouseWheelMoved(int arg0) {
    // TODO Auto-generated method stub

}

@Override
public void inputEnded() {
    // TODO Auto-generated method stub

}

@Override
public void inputStarted() {
    // TODO Auto-generated method stub

}

@Override
public boolean isAcceptingInput() {
    // TODO Auto-generated method stub
    return true;
}

@Override
public void setInput(Input arg0) {
    // TODO Auto-generated method stub

}

@Override
public void keyPressed(int arg0, char arg1) {
    // TODO Auto-generated method stub

}

@Override
public void keyReleased(int arg0, char arg1) {
    // TODO Auto-generated method stub

}

@Override
public void controllerButtonPressed(int arg0, int arg1) {
    // TODO Auto-generated method stub

}

@Override
public void controllerButtonReleased(int arg0, int arg1) {
    // TODO Auto-generated method stub

}

@Override
public void controllerDownPressed(int arg0) {
    // TODO Auto-generated method stub

}

@Override
public void controllerDownReleased(int arg0) {
    // TODO Auto-generated method stub

}

@Override
public void controllerLeftPressed(int arg0) {
    // TODO Auto-generated method stub

}

@Override
public void controllerLeftReleased(int arg0) {
    // TODO Auto-generated method stub

}

@Override
public void controllerRightPressed(int arg0) {
    // TODO Auto-generated method stub

}

@Override
public void controllerRightReleased(int arg0) {
    // TODO Auto-generated method stub

}

@Override
public void controllerUpPressed(int arg0) {
    // TODO Auto-generated method stub

}

@Override
public void controllerUpReleased(int arg0) {
    // TODO Auto-generated method stub

}

@Override
public void enter(GameContainer arg0, StateBasedGame arg1) throws SlickException {
    // TODO Auto-generated method stub

}

@Override
public int getID() {
    // TODO Auto-generated method stub
    return 0;
}

@Override
public void init(GameContainer arg0, StateBasedGame arg1) throws SlickException {
    // TODO Auto-generated method stub

}

@Override
public void leave(GameContainer arg0, StateBasedGame arg1) throws SlickException {
    // TODO Auto-generated method stub

}

@Override
public void render(GameContainer arg0, StateBasedGame arg1, Graphics g) throws SlickException {
    // TODO Auto-generated method stub

    g.setBackground(Color.white);
    g.setColor(Color.black);
    Rectangle button=new Rectangle(640/2-20, 480/2-10, 40, 20);
    g.fill(button);
    g.draw(button);

    ttf.drawString(640/2-ttf.getWidth("I hate Christmas")/2,480/3,"I hate Christmas",Color.black);
    g.setColor(Color.white);
    g.drawString("Play",640/2-20 ,480/2-10);


}

@Override
public void update(GameContainer arg0, StateBasedGame arg1, int arg2) throws SlickException {
    // TODO Auto-generated method stub

}

}
GameScreen.java

package com.hurricane996.IHateChristmas;

import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.Input;
import org.newdawn.slick.SlickException;
import org.newdawn.slick.state.GameState;
import org.newdawn.slick.state.StateBasedGame;

public class GameScreen implements GameState {

public GameScreen() {
    // TODO Auto-generated constructor stub
}
@Override
public void mouseClicked(int arg0, int arg1, int arg2, int arg3) {
    // TODO Auto-generated method stub

}

@Override
public void mouseDragged(int arg0, int arg1, int arg2, int arg3) {
    // TODO Auto-generated method stub

}

@Override
public void mouseMoved(int arg0, int arg1, int arg2, int arg3) {
    // TODO Auto-generated method stub

}

@Override
public void mousePressed(int arg0, int arg1, int arg2) {
    // TODO Auto-generated method stub

}

@Override
public void mouseReleased(int arg0, int arg1, int arg2) {
    // TODO Auto-generated method stub

}

@Override
public void mouseWheelMoved(int arg0) {
    // TODO Auto-generated method stub

}

@Override
public void inputEnded() {
    // TODO Auto-generated method stub

}

@Override
public void inputStarted() {
    // TODO Auto-generated method stub

}

@Override
public boolean isAcceptingInput() {
    // TODO Auto-generated method stub
    return true;
}

@Override
public void setInput(Input arg0) {
    // TODO Auto-generated method stub

}

@Override
public void keyPressed(int arg0, char arg1) {
    // TODO Auto-generated method stub

}

@Override
public void keyReleased(int arg0, char arg1) {
    // TODO Auto-generated method stub

}

@Override
public void controllerButtonPressed(int arg0, int arg1) {
    // TODO Auto-generated method stub

}

@Override
public void controllerButtonReleased(int arg0, int arg1) {
    // TODO Auto-generated method stub

}

@Override
public void controllerDownPressed(int arg0) {
    // TODO Auto-generated method stub

}

@Override
public void controllerDownReleased(int arg0) {
    // TODO Auto-generated method stub

}

@Override
public void controllerLeftPressed(int arg0) {
    // TODO Auto-generated method stub

}

@Override
public void controllerLeftReleased(int arg0) {
    // TODO Auto-generated method stub

}

@Override
public void controllerRightPressed(int arg0) {
    // TODO Auto-generated method stub

}

@Override
public void controllerRightReleased(int arg0) {
    // TODO Auto-generated method stub

}

@Override
public void controllerUpPressed(int arg0) {
    // TODO Auto-generated method stub

}

@Override
public void controllerUpReleased(int arg0) {
    // TODO Auto-generated method stub

}

@Override
public void enter(GameContainer arg0, StateBasedGame arg1) throws SlickException {
    // TODO Auto-generated method stub

}

@Override
public int getID() {
    return 1;
}

@Override
public void init(GameContainer arg0, StateBasedGame arg1) throws SlickException {
    // TODO Auto-generated method stub

}

@Override
public void leave(GameContainer arg0, StateBasedGame arg1) throws SlickException {
    // TODO Auto-generated method stub

}

@Override
public void render(GameContainer arg0, StateBasedGame arg1, Graphics arg2) throws SlickException {
    // TODO Auto-generated method stub

}

@Override
public void update(GameContainer arg0, StateBasedGame arg1, int arg2) throws SlickException {
    // TODO Auto-generated method stub

}

}
回溯:

java.lang.RuntimeException: No game state registered with the ID: 1
at org.newdawn.slick.state.StateBasedGame.enterState(StateBasedGame.java:153)
at org.newdawn.slick.state.StateBasedGame.enterState(StateBasedGame.java:131)
at com.hurricane996.IHateChristmas.MainMenu.mouseClicked(MainMenu.java:21)
at org.newdawn.slick.state.StateBasedGame.mouseClicked(StateBasedGame.java:488)
at org.newdawn.slick.Input.fireMouseClicked(Input.java:1526)
at org.newdawn.slick.Input.considerDoubleClick(Input.java:1111)
at org.newdawn.slick.Input.poll(Input.java:1233)
at org.newdawn.slick.GameContainer.updateAndRender(GameContainer.java:641)
at org.newdawn.slick.AppGameContainer.gameLoop(AppGameContainer.java:411)
at org.newdawn.slick.AppGameContainer.start(AppGameContainer.java:321)
at com.hurricane996.IHateChristmas.Game.main(Game.java:31)

您的静态游戏实例不等于在main方法中创建的实例。创建2个游戏实例,并尝试使用未初始化状态的实例

你不能这样做:

public static Game instance = new Game(name);
这是:

AppGameContainer agc = new AppGameContainer(new Game("Simple Slick Game"));
改为这样做:

AppGameContainer agc = new AppGameContainer(instance);

当调用click方法时,它使用一个没有状态的游戏实例,因为在创建游戏实例时状态没有初始化。

错误来自MainMenu。mouseClick方法?