私は Java で非常に単純なゲームを開始していますが、最初のステップで既に立ち往生しています。StateBasedGame クラス (Kreations) を作成しました。このクラスは、私の BasicGameState (MenuGameState) を正常に追加して入力し、初期化します。ただし、MenuGameState の update() および render() メソッドは呼び出されません。理由がわかりません。手伝ってくれますか?コードは次のとおりです。
StateBasedGame:
import gamestates.MenuGameState;
import org.newdawn.slick.*;
import org.newdawn.slick.state.StateBasedGame;
public class Kreations extends StateBasedGame
{
public Kreations() {
super("Kreations");
}
@Override
public void update(GameContainer gc, int delta) throws SlickException
{
}
@Override
public void render(GameContainer gc, Graphics g) throws SlickException
{
}
public static void main(String[] args) throws SlickException
{
try {
AppGameContainer container = new AppGameContainer(new Kreations());
container.setDisplayMode(800,600,false);
//Make sure the logic updates consistently
container.setMinimumLogicUpdateInterval(20);
container.setMaximumLogicUpdateInterval(20);
container.start();
} catch (SlickException e) {
e.printStackTrace();
}
}
@Override
public void initStatesList(GameContainer gc) throws SlickException {
this.addState(new MenuGameState());
}
}
基本ゲーム状態:
package gamestates;
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.SlickException;
import org.newdawn.slick.state.BasicGameState;
import org.newdawn.slick.state.StateBasedGame;
public class MenuGameState extends BasicGameState {
public static final int ID = GameStates.MAIN_MENU.ordinal();
@Override
public void init(GameContainer gc, StateBasedGame sbg)
throws SlickException {
}
@Override
public void render(GameContainer gc, StateBasedGame sbg, Graphics g)
throws SlickException {
g.drawString("Hello World", 100, 100);
}
@Override
public void update(GameContainer gc, StateBasedGame sbg, int delta)
throws SlickException {
}
@Override
final public int getID() {
// TODO Auto-generated method stub
return GameStates.MAIN_MENU.ordinal();
}
public void enter(GameContainer container, StateBasedGame game) throws SlickException {
System.out.print("MenuGameState.enter() is called");
}
}