续接上一节内容,我们截止到目前为止已经实现了输入监听、界面管理等内容,也就是说整个游戏的骨架已经构建完毕,接下来这节我们将创建各个游戏状态界面,同时为各个界面做上控制台打印标记,来测试一下我们游戏的整个控制管理流程。
首先创建类PlayState类同时让他继承自GameState然后实现内部各个方法结果如下:
public class PlayState extends GameState{
protected PlayState(GameStateManager gsm) {
super(gsm);
}
@Override
public void init() {}
@Override
public void update(float dt) {}
@Override
public void draw() {}
@Override
public void handleInput() {}
@Override
public void dispose() {}
}
然后依次创建出 MenuState 、 HighScoreState 、 GameOverState 几个类同上继承自 GameState ,并将其方法一并实现。各个方法内添加控制台打印参数,然后再打开 GameStateManager 类在 setState 方法内将各个 gamestate 参数实例化如下:
public void setState(int state){
if(gamestate!=null)gamestate.dispose();
//每次跳转页面时都会调用上一个界面内的dispose方法进行内存释放
if(state==MENU){
gamestate=new MenuState(this);
}
if(state==PLAY){
gamestate=new PlayState(this);
}
if(state==HIGHSCORE){
gamestate=new HighScoreState(this);
}
if(state==GAMEOVER){
gamestate=new GameOverState(this);
}
}
这样我们就实现了闭环的一个流程控制,现在缺少的是条件判断(输入条件、游戏结束条件、游戏开始条件等)来促使各个界面进行跳转,然而现在我们可以通过在GameStateManager类中构造函数内设置setState( PLAY/MENU/HIGHSCORE/GAMEOVER)值来选择游戏进入哪个界面,这样就可以测试一下我们各个界面是否能够正常进入,是否能够将您所添加的控制台打印参数打印出来。我测试的效果如下图所示: