上回说到我对一个五子棋游戏开发的分析,通过这个分析,是否说明在好多时候问题总是会变得越来越多,越来越严重呢?这些问题就算在美国也经常见到碰到,而且这个问题,总是会变得越来越严重。
接着上一集,回到我现在的问题。
我们根据分析出来的总题纲,进行问题分解。
1. 棋盘的管理
2. 棋子的管理
3. 游戏控制的管理
4. 游戏的AI
5. 游戏分数的管理
由于还没打算进行更细粒度的划分,所以基本上划分五个管理模块。
- <SPAN style="COLOR: #0000ff">1.棋盘的管理
- </SPAN>
棋盘在一个15X15的棋盘,主要负责控制游戏棋盘的显示与棋子的显示。棋盘由可以自适应。
- <SPAN style="COLOR: #0000ff">2.棋子的管理</SPAN>
主要负责保存棋子的坐标信息,如 qizhi('黑',3, 4),代表黑子在x=3,y=4的坐标上。
- <SPAN style="COLOR: #0000ff">3.游戏控制的管理</SPAN>
游戏的控制主要是将游戏的显示与游戏的AI进行合成,产生交互效果,设计叫这个为MVC(MVC这概念面试的时候,专门考初级程序员的题目)。
- <SPAN style="COLOR: #0000ff">4.游戏的AI</SPAN>
游戏的AI使用玩家与电脑进行对战。
- <SPAN style="COLOR: #0000ff">5.游戏分数的管理</SPAN>
在游戏总结时,赢的一方得到分数,并保存为数分和显示排名。
好了,分析到这步,是不是开始写代码了,在很多时候,我们在做项目的时候,通常进行了需求分析,数据库设计,流程设计,详细设计后,我们就进行程序开发,但通常一边开发,又一边发现‘冲突’或存在诸多疑问。
我还是用五子棋说明问题。
第一:五子棋的设计,是画出来呢,还是贴图贴出来?
第二:五子棋的棋盘的VI如何设计,棋子的图案是网上抄,还是重新设计,设计成怎么样子。
第三:AI部分,究竟用什么AI呢,是用常用的权值法,还是用遗传算法?
第四:分数,分数的计法,分数如何计呢?
第五:在开发时,归案由谁去负责,谁负责哪个模块,文档由谁业写。
……
一连串的问题,使我们通常犯错却一次又一次的犯下去。当然我这里指出的是,并不一定客观,但我只想通过这个实例说明,做一个项目,所需要的成本,往往比我们想像中的多。如何有效去约束,就是项目经理的水平所在了。在国外,有专门的写档案的印度佬,有专门做忽悠人的PA,有专门搞测试的QC/QA, 分得很细,却都很专业。我们大陆,也是这样分工的,如分售前,开发,实施,售后的分工。但通常我见得最多的是:‘又是裁判,又是运动员’。这就是我们为什么生活的很累的原因,一份精力却要两倍支出,能不累吗。特别有些(现在已经好多了,甚至搞上市)的公司(把大蛋糕吃下的那个企业)把项目给了外包公司,外包公司再找几个‘外援’,来搭个几千万的项目,就这样,这几个累的要死的‘外援’做出了几千万的项目,这就是非常有名的‘二八原理’。
所以我想总结一下:通常设计中,我们做得文档一般都不够详细,所以我们在开发的时候会发现困难重重,对于开发中途加入的开发人员,看那缺头缺尾的文档更是要‘努力’(‘要智富就要努力’不知道这句话是谁发明的,总把后面的那一句漏掉了),二是想引用站长的一句话‘珍惜生命,远离外包’来做作为这一集做的总结。
好,这一集就说到这里,谢谢。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。