我正在制作游戏,我终于完成了它的游戏方面,但是现在是我创建菜单和高分屏幕的时候了.我不完全确定如何做到这一点,游戏将处于不同的状态(MENU_STATE,GAMEPLAY_STATE,SCORESCREEN_STATE),并且在每种状态下我想要在屏幕上绘制不同的东西,我可以做这样的事情吗然后?
draw function()
{
if MENU_STATE
draw menu
if GAMEPLAY_STATE
draw game
if SCORESCREEN_STATE
draw scores
}
Run Code Online (Sandbox Code Playgroud)
我在绘制函数中一直遵循严格的逻辑,到目前为止它一直很好,但我真的无法想出一个不同的方法来做到这一点.
您可以为这三种状态使用单独的类,实现一个公共接口,而不是为状态设置常量,设置其中一个类的实例:
interface IState {
void draw();
}
class Menu implements IState {
void draw() {
// Draw menu
}
}
class Game implements IState {
void draw() {
// Draw game
}
}
void draw() {
state.draw();
}
Run Code Online (Sandbox Code Playgroud)
这仍然是不理想(你真的不希望在您的状态下画出的代码,你想要的东西多一点独立的),但是抽象是常见的一种,可能是相关的(并且很难进一步建议不知道更多的你的建筑).