暴米花 发表于 2006-12-8 11:42:00

游戏制作漫谈

<strong><br/></strong>&nbsp;&nbsp;&nbsp;搞游戏的有很大一部分原来并不是计算机系的,所以写出来的程序比较野。尤其是业余的刚开始步入这个领域的。本人也正在经历这种转变。因此,在这里写一下我所领悟的一些东西。希望对初学者有益。 <p></p><p>&nbsp;&nbsp;&nbsp;代码组织:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.h&nbsp;中&nbsp;&nbsp;&nbsp;1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;用#ifndef&nbsp;xxxx&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#define&nbsp;xxxx</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#endif&nbsp;&nbsp;&nbsp;xxxx&nbsp;来定义文件。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2)&nbsp;尽量少包含其他的头文件,避免物理上的硬关联。<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;.cpp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1)&nbsp;尽量在.cpp中包含其他用到的头文件,避免物理上的硬关联。</p><p>&nbsp;&nbsp;代码风格:<br/>&nbsp;&nbsp;&nbsp;好的代码首先要有好的代码风格。因此,作为初学者相比较专业的转变的一个比较重要的是确定自己的风格。<br/>&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;变量,函数的格式:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果写得比较多了,或是离的时间长了,又或是代码给别人看。那么,清楚的代码很大程度上就是靠变量函数的格式了。要让读者一目了然才行。<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;我一般这样定义:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;类中的变量&nbsp;d_&nbsp;开头(很多人喜欢用m_),&nbsp;全局g_&nbsp;开头,&nbsp;参数,局部变量就没有了。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;后面紧跟的是类型,如&nbsp;b&nbsp;----&nbsp;bool,&nbsp;lp-----指针,&nbsp;sz------字符串&nbsp;等等。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;再后面就是&nbsp;首字母大写变量名。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;举个例子。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d_bReady&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;表示类中变量,&nbsp;一个bool型的,&nbsp;标示着各类目前可用。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;函数这样定义:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;首字母大写。如:void&nbsp;DoLoop();&nbsp;&nbsp;等等。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这些自己去坚持着用去寻找自己的风格就好了。用小写加下划线不错,我喜欢。不过好像这种风格的linux下和网络下更喜欢用,windows客户端还是有些区分会比较好??这纯属个人喜好了。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;结构,enum,等等的定义都挪进类中就好了。<br/>&nbsp;&nbsp;&nbsp;如<br/>class&nbsp;CFrame<br/>{<br/>&nbsp;&nbsp;public:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;enum{<br/>&nbsp;&nbsp;&nbsp;&nbsp;DEF_ERR_NOTHING&nbsp;=&nbsp;0,<br/>&nbsp;&nbsp;&nbsp;&nbsp;DEF_ERR_OUTOFMEM,<br/>&nbsp;&nbsp;&nbsp;&nbsp;};</p><p>&nbsp;&nbsp;&nbsp;struct&nbsp;node<br/>&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;......<br/>&nbsp;&nbsp;&nbsp;};</p><p>public:<br/>&nbsp;&nbsp;int&nbsp;GetCurErr()<br/>&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;d_iErr;<br/>&nbsp;&nbsp;}</p><p>private:<br/>&nbsp;&nbsp;int&nbsp;d_iErr;<br/>...<br/>};</p><p>&nbsp;&nbsp;调用的时候会强迫你把类的类型写上去,看上去繁琐一点,不过代码开始读会更清楚一点吧。<br/>&nbsp;&nbsp;如&nbsp;定义一个结构指针<br/>&nbsp;&nbsp;&nbsp;CFrame::&nbsp;node&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;lpNode;</p><p>&nbsp;&nbsp;代码中如:<br/>&nbsp;&nbsp;&nbsp;if(&nbsp;&nbsp;g_frame.GetErr()&nbsp;==&nbsp;CFrame::&nbsp;DEF_ERR_NOTHING&nbsp;&nbsp;)<br/>&nbsp;&nbsp;{.....}</p><p>&nbsp;&nbsp;最后聊一下程序的3种风格。<br/>&nbsp;&nbsp;c,带类的c,面向对象。<br/>&nbsp;&nbsp;其中,新人应该是对面向对象比较好奇吧。但是我感觉面向对象的的几种模式并不一定就是游戏风格的首选。例如很多情况下如单体类更像是extern&nbsp;xxxx。因为本身的最重要的关联关系没有做什么化解。相反程序还要多做很多工(虽然也并不多)。单体类存在的最大意义就是能保证工程中有唯一的实例。<br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;这些还是留在下次再说吧。</p>
页: [1]
查看完整版本: 游戏制作漫谈