日期:2014-05-18  浏览次数:20919 次

qq空间游戏(非仙勿扰)外挂架构设计,欢乐讨论.


上图是我画的,整个游戏的流程就是如上图,
游戏的添加,登录,修炼,获取好友,好友斗法,等等所有功能我都可以写出来了,但有个问题,我写的代码应该是面向过程的.不知道怎么把程序架构起来.我希望可以多线程使用.
像我上图所画的这个流程,需要使用什么架构来写?

------解决方案--------------------
你这个谈不上架构,只是用朴素的方式描述了下需求。
------解决方案--------------------
既然有这问题想必开始就没考虑到多线程 重写太麻烦的话 给个建议你 
不如直接运行程序的多个实例 也就是多线程了不
------解决方案--------------------
什么叫做“面向过程的”?面向对象程序当然也是要靠调用一个个过程来执行的。面向对象编程所对立的(前身)是“结构化编程”,而不是什么“面向过程”这种莫名其妙的概念。

例如说,你的“登录游戏”和“提交任务”之间,那种耦合是堆砌的吧?!假设这个部分有n中种组合,它跟其它需求再发生联系,例如跟“数值自动平衡计算系统”(有m种组合)想关联,那么是不是就变成n*m种耦合?这还只是两类东西的复合在一起,如果是更多种东西复合在一起是不是耦合起来的业务逻辑数量就会“组合爆炸”呢?

而假设你将“任务”抽象为3类,先实现每一类的具体内容,然后其它几十种任务都是在这3类任务上简单扩展,那么几十种任务对其它层面系统的耦合就都是从父类继承的,而不直接发生关系,从而避免了业务逻辑设计上的“组合爆炸”。面向对象技术解决了这种抽象与具体化的设计中的各种问题,包括编译器如何直接了当地支持继承和多态的问题,在状态和功能计算层面如何适配对象分类的抽象的问题等等。

这是面向对象技术与结构化的主要区别。(结构化方法最不能愿意理解的是:对象的类型既可以继承父类,又可以重写父类。结构化方法不承认可以这样设计和编程)。

我不认为有什么必要搞什么“面向过程、面向逻辑”的说法。这些说法层次太低,根本不是软件工程。实际上任何编程,都要面向逻辑、调用过程,谁说面向对象设计就一定违背逻辑知识、就很少调用过程呢?
------解决方案--------------------
至于说什么“希望多线程”之类的,那是基于设计的。你让这3个父类任务被执行时跑起来,那么实例化为其子类的任务对象自然也就多线程跑起来了。
------解决方案--------------------
另外你的这个图,比如说右上角其实没有什么内涵,而右下角又过度含糊,左下角也不过是一种特殊的任务状态完全可以跟右下角合并,这些都是设计问题。

一些被你轻描淡写复杂的活动,它不是活动,而是连续变换的状态。而一旦从状态层面考虑,那么每一个状态变换都会产生一些新的对象,会改变一些旧的对象,会去计算,会去渲染,这些都是要考虑清楚才能编游戏程序的。不是拿这样简单的一张图就能作为蓝图。设计到这个程度,只能说还没有进入设计的角色里边去深入挖掘。