游戏制作漫谈 

2006-12-08 11:42 发布

2394 0 0

   搞游戏的有很大一部分原来并不是计算机系的,所以写出来的程序比较野。尤其是业余的刚开始步入这个领域的。本人也正在经历这种转变。因此,在这里写一下我所领悟的一些东西。希望对初学者有益。

   代码组织:
      .h 中   1)
               用#ifndef xxxx 
                #define xxxx

                #endif   xxxx 来定义文件。
                
               2) 尽量少包含其他的头文件,避免物理上的硬关联。
    
    .cpp     1) 尽量在.cpp中包含其他用到的头文件,避免物理上的硬关联。

  代码风格:
   好的代码首先要有好的代码风格。因此,作为初学者相比较专业的转变的一个比较重要的是确定自己的风格。
   
    变量,函数的格式:
         如果写得比较多了,或是离的时间长了,又或是代码给别人看。那么,清楚的代码很大程度上就是靠变量函数的格式了。要让读者一目了然才行。
    
     我一般这样定义:
         类中的变量 d_ 开头(很多人喜欢用m_), 全局g_ 开头, 参数,局部变量就没有了。
         后面紧跟的是类型,如 b ---- bool, lp-----指针, sz------字符串 等等。
         再后面就是 首字母大写变量名。
         举个例子。
         d_bReady         表示类中变量, 一个bool型的, 标示着各类目前可用。

    函数这样定义:
       首字母大写。如:void DoLoop();  等等。
       
      这些自己去坚持着用去寻找自己的风格就好了。用小写加下划线不错,我喜欢。不过好像这种风格的linux下和网络下更喜欢用,windows客户端还是有些区分会比较好??这纯属个人喜好了。

    结构,enum,等等的定义都挪进类中就好了。
   如
class CFrame
{
  public:
     enum{
    DEF_ERR_NOTHING = 0,
    DEF_ERR_OUTOFMEM,
    };

   struct node
  {
   ......
   };

public:
  int GetCurErr()
  {
          return d_iErr;
  }

private:
  int d_iErr;
...
};

  调用的时候会强迫你把类的类型写上去,看上去繁琐一点,不过代码开始读会更清楚一点吧。
  如 定义一个结构指针
   CFrame:: node *    lpNode;

  代码中如:
   if(  g_frame.GetErr() == CFrame:: DEF_ERR_NOTHING  )
  {.....}

  最后聊一下程序的3种风格。
  c,带类的c,面向对象。
  其中,新人应该是对面向对象比较好奇吧。但是我感觉面向对象的的几种模式并不一定就是游戏风格的首选。例如很多情况下如单体类更像是extern xxxx。因为本身的最重要的关联关系没有做什么化解。相反程序还要多做很多工(虽然也并不多)。单体类存在的最大意义就是能保证工程中有唯一的实例。
  
  这些还是留在下次再说吧。

楼主新帖

TA的作品 TA的主页
B Color Smilies

你可能喜欢

游戏制作漫谈 
联系
我们
快速回复 返回顶部 返回列表