我刚刚阅读了一些当我输入主题时出现的相关问题,所以我会尽量不要重复这些问题。C++游戏,课堂设计和责任
我最近开始重新研究一个大约两三年前开始的学习项目 - 一个Mega Man引擎的C++端口。是的,我使用了撕裂的精灵。我也正在使用一个游戏引擎库进行绘图,音乐和输入。
我原来的代码非常残酷。尽管它可以(但几乎)被称为面向对象,但它完全错过了这一点。我已经开始添加诸如接口之类的东西,并且删除了很多重复的代码。有些事情我不确定,因为有时游戏设计变得非常复杂。
代表我的游戏库的对象目前是全局的(我知道全局变量通常是不好的),因为许多对象可能会依赖它来加载它们的艺术或音乐。将对象拉出全局范围的最佳方式是什么,而不必将五十个参数传递给一切直接使用它的东西?
下一个问题:众所周知,洛克人射出许多小白色射弹。目前,Player对象负责他发射的子弹对象,更新它们的位置等等(字面上,在Player :: Update()方法内,每次击球时都调用一次Projectile :: Update()方法)。这是做错了吗?我的第一个改进是所有这些对象都实现了一个DrawnObject接口,这样我的游戏就可以绘制一切。为更新做同样的事情意味着我可以控制远离玩家的投射物并将其投放到更广泛的游戏对象。我对此犹豫不决的原因是感觉上帝反对反模式。或者我误解了这个反模式?还有额外的复杂性 - 抛射物如果离开可见屏幕就会死亡,所以任何更新炮弹的调用都需要调用者访问屏幕对象。
这就是现在,当我到达他们时我会回来更多的问题。第一篇文章结束!
谁写了SRP文章?我一直在努力寻找那本书,因为它是我真正关心的主题,你能指出我的意思吗? – Goles 2009-09-21 01:11:22
我在阅读“敏捷软件开发:原则,模式和实践”一书时第一次遇到这个词。由罗伯特C.马丁(2002年)。 Martin是Object Mentor(发布文章的网站)的创始人和总裁。 – Harry 2009-09-22 17:16:03