【发布时间】:2019-06-17 02:01:11
【问题描述】:
我正在制作一款游戏来练习良好的设计/架构,并且我认为我将自己编程为检查。我不确定我的架构现在是否干净,一些建议会很重要。
我有一个class Game,其中包含class GraphicsManager class InputManager 和class StateManager 的实例
图形管理器与输入管理器一样处理 sdl 内容。状态管理器是抽象类型的堆栈class GameState
每一帧,游戏都会在状态堆栈顶部的 GameState 上调用 update 并将状态管理器指针传递给该状态,以便 GameState 可以推送新状态或从堆栈中弹出自身。
GameState* currentState = stateManager.getState() //return top
currentState.update(&stateManager) // state might change here
问题是当我介绍我的class Screen 时。 Screen 应该归 GameState 的各种实现所有,所以如果我有 OpeningState,我希望它拥有 OpeningScreen。
问题是,Screen 需要访问 Graphics 实例以获取指向 SDL_Renderer 的指针,而我看不到向下传递该指针的好地方。从 Game --> GameState --> Screen 传递指针感觉有点时髦。
我觉得我需要将每个“经理”变成一个单身人士,但如果有更优雅的东西我很想学习
这是我的 ref https://github.com/MicahMartin/FightingGame/tree/master/src 的意大利面条代码
【问题讨论】:
标签: c++ oop architecture stl singleton