<分区>
在过去的几周里,我一直在尝试利用业余时间开发一款等距的、基于图 block 的大亨风格的制作游戏(实际上只是为了看看我是否有能力),但我遇到了一个设计我正在努力应对的挑战。我已经使用 Tile 类(保存在 Map 类中)成功地实现了地砖并绘制它们等等,但我现在希望能够在地砖上添加对象。
我已经能够使用相当笨重的调试类来创建和呈现对象(如表格),该调试类作为 std::map<int, Object>
包含在 Map 类中。并为对象提供 X/Y 坐标,以便 Map 可以将它们呈现在正确的位置。所有这一切,虽然可能不是最好的方法,但在我尝试子类化对象以赋予它们不同的功能之前都是有效的。
我曾(错误地)假设我能够为 map 上的所有对象提供某种异构容器,我可以在游戏循环中循环并运行特定于对象类型的逻辑。我还没有完全确定游戏的范围,所以目前我只是给不同的对象不同的成员变量——比如一个有容量的容器对象,一个有能量等级的加热器对象,等等。我的第一个测试是能够将项目放置在 map 上,然后能够查询容器对象的所有容量的总和 - 只是为了确保它在继续下一步之前有效.
我一直在尝试使用 OpenTTD 和一些 Habbo Hotel 模拟器等开源项目来解决所有这些问题,但无济于事。我很想听听其他人认为解决这个问题的最佳方法是什么。
我试验过 dynamic_cast
在我的 map 中使用指针,但从我看到的其他答案来看,这似乎不是一个特别好的方法。我是否应该创建一个相同类型的对象池,然后在游戏循环期间遍历每个池以使事情变得更简单?