【发布时间】:2009-08-26 03:04:40
【问题描述】:
我刚刚阅读了一些在我输入主题时出现的相关问题,所以我会尽量不重复这些问题。
我最近开始重新审视我大约两三年前开始的一个学习项目 - 洛克人引擎的 C++ 端口。是的,我使用了撕裂的精灵。我还在使用游戏引擎库来进行绘图、音乐和输入。
我的原始代码很糟糕。虽然它可以(但几乎不能)被称为 OO,但它完全没有抓住重点。我已经开始添加接口之类的东西,并删除了很多重复的代码。有些事情我不确定,因为游戏设计有时会变得非常复杂。
代表我的游戏库的对象目前是全局的(我知道全局变量通常很糟糕),因为许多对象可能会到处依赖它来加载它们的艺术或音乐。将对象拉出全局范围的最佳方法是什么,而不必将 50 个参数传递给原本会直接使用它的所有对象?
下一个问题:众所周知,洛克人会发射许多白色的小弹丸。目前,Player 对象负责他发射的 Projectile 对象,更新它们的位置等(字面意思是,在 Player::Update() 方法中为每次射击调用一次 Projectile::Update() 方法)。这是错误的方法吗?我的第一个改进是让所有这些对象都实现 DrawnObject 接口,这样我的游戏就可以绘制所有内容。对 Updates 做同样的事情意味着我从 Player 手中夺走射弹的控制权,并将其交给一些更广泛的 Game 对象。我对此犹豫不决的原因是它感觉像是上帝对象反模式。还是我误解了所说的反模式?仍然涉及到额外的复杂性 - 如果射弹离开可见屏幕,它们就会死亡,因此任何更新射弹的调用都需要调用者访问屏幕对象。
暂时就这些了,等我遇到更多问题再回来。第一篇文章结束!
【问题讨论】: