我已经完成了游戏逻辑的实现,现在是可视化的时候了--为此我选择了SFML。然而,我陷入了一片混乱:--如何避免对游戏对象的硬编码坐标,使整个系统:
此外,我想知道在“真实”游戏和其他应用程序中使用了哪些方法。我想出的最好的解决办法是:
class Screen_promille
由游戏逻辑操作,用于将x
和y
存储为屏幕使用部分的int
程序(例如,{500, 500}
是中心点,{999, 999}
是右下角);sf::Vector2<float> convert_to_pixels(Screen_promille const)
函数,用于获取屏幕上的实际位置(可能就在绘图之前);或者可以使用Screen_promille::operator sf::Vector2<float>()
代替;sf::Rect<float> const used_screen
为后者的实现。应该是足够明智的
P. S.:
发布于 2020-04-02 15:50:26
简单地说,当你考虑到你可能遇到的所有问题时,这是不值得的。直接对坐标进行硬编码要容易得多。
解决您提出的问题的最佳解决方案是实现信箱视图。一个信箱视图应该允许您调整您的游戏舒适,没有任何视觉扭曲,它应该自我适应任何屏幕大小。
https://stackoverflow.com/questions/60990606
复制相似问题