将游戏逻辑放在绘图函数中是否可以?

Joe*_*Joe 4 language-agnostic

我正在制作游戏,我终于完成了它的游戏方面,但是现在是我创建菜单和高分屏幕的时候了.我不完全确定如何做到这一点,游戏将处于不同的状态(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)

我在绘制函数中一直遵循严格的逻辑,到目前为止它一直很好,但我真的无法想出一个不同的方法来做到这一点.

And*_*ett 5

您可以为这三种状态使用单独的类,实现一个公共接口,而不是为状态设置常量,设置其中一个类的实例:

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)

这仍然是不理想(你真的不希望在您的状态下画出的代码,你想要的东西多一点独立的),但是抽象是常见的一种,可能是相关的(并且很难进一步建议不知道更多的你的建筑).