gpt4 book ai didi

java - SLICK2D 游戏状态未注册

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:55:01 29 4
gpt4 key购买 nike

我有一个名为 I hate Christmas 的 slick2d JavaGame。游戏不会让我过渡到下一个状态。它说 没有注册 id 为 1 的游戏状态。 当我在 Game.java 中运行完全相同的代码时,它工作正常。这是我的代码游戏.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);
}

}

主菜单.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

}

}

游戏画面.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)

最佳答案

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

你不能这样做:

public static Game instance = new Game(name);

还有这个:

AppGameContainer agc = new AppGameContainer(new Game("Simple Slick Game"));

改为这样做:

AppGameContainer agc = new AppGameContainer(instance);

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

关于java - SLICK2D 游戏状态未注册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35305600/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com