J'ai un jeu Java slick2d appelé Je déteste Noël. Le jeu ne me laissera pas passer à l'état suivant. Il dit No game state registered with id of 1.
Lorsque je cours le même code exact dans Game.java, ça marche bien. Voici mon code Game.javaÉtat du jeu SLICK2D pas enregistré
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
}
}
Le retraçage:
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)
L'erreur provient de la méthode MainMenu.mouseClick? – RPresle
Oui, c'est le cas.() –