您现在的位置: 中国IT实验室 >> 游戏开发 >> 初学入门 >> 文章正文
开始做游戏系列——拥有你自己的游戏
来源:ChinaITLab 收集整理 作者: 时间:2005-4-14


  上次我们讨论了游戏领域里面的几种职业,以后我会说明他们是如何一起工作完成一个游戏的。今天呢,就要
  
  实现大家的梦想,拥有一个自己的游戏;甭管自己多菜,先做出来个游戏先;不过还是要对一些常见的游戏有
  
  所了解:
  
  RPG: Role Play Game    角色扮演类游戏    天之痕
  FPS: First Person Shoot  第一人称射击游戏   Counterstrike
  Puzzle Games        棋牌类游戏      五子棋
  Sports Game         体育运动类     极品飞车、Fifa
  Action Game          动作类       格斗
  还有很多,例如冒险类、休闲类、网游类;分类标准不同,不能一一说明,只是想对游戏一无所知的人临时充
  
  充电。选择一个尽量简单的游戏,我的建议是越简单越好,RPG游戏不要去想,我们现在做个自己的第一个游戏
  
  只是想对游戏有所了解,不是拿去卖;也不要高深的人工智能(这样的话,当然也要把棋牌类游戏排除),先把
  
  时间花费在程序结构上面去,算法当然重要,不是我们现在所要考虑的;而我常常很多人建议新手去编五子棋
  
  ,我想这绝对是个误导。
  
  那你可能在想,我们现在能做什么呢?既然你想跟着我来做游戏,那么我想一些知识你是需要掌握的,关于c++
  
  、VC和Direct X的知识:
  1、能够区分MFC 和win32 app,能建立工程、能在工程中添加文件、能设置头文件和库文件的路径、能向工程中
  
   添加库,基本的调试程序的能力;
  2、有类、对象、接口、指针的概念
  3、有独立下载Direct X SDK(3.0--9.0)和CDX 库(我这里有cdx 3.1)的能力;cdx开发库是开放源代码的,所以以后如果有兴趣,可以研究一下他们是怎么封装的;
    cdx可以在http://www.cdxlib.com/找到
  
  4、会安装并在VC++ 6.0中设置Direct X SDK(3.0--9.0)和CDX库.
  
  不过要提醒一下,安装direct sdk前,先要把VC++ 6.0关掉。Direct SDK会询问你是不是要关联到VC++ 6.0,选择是,就不需要手动添加;你会发现 工具-->选择-->目录中 路径里面,Direct X SDK的头文件和库文件已经被添加进去了;
  安装CDX的时候就没有这么智能,你需要自己手动添加,不会的话,回复我的时候说一声;
  好了,假设你一切搞定;
  现在打开cdx安装目录下的"games\blaster\Blaster.dsp",将会打开工程,这就是我向大家推荐的第一个游戏;确切点说,是我们要修改这个游戏,不过前提是,我们要能够编译运行通过,而且能够了解这个游戏的来龙去脉。对了,cdx默认安装在 c:\cdx文件夹
  
  迈出第一步通常是很难的,不过迈出第一步后就很轻松了;你可能会发现你还是不能运行,常见的错误是找不到"cdxd.lib",没关系,我们只要稍微修改就可以了,在 工程-->设置-->Link中 模块\库里,看有没有cdxd.lib?如果有的话(呵呵,当然是有的),改成cdx.lib
  
  这样就万事大吉了,再编译运行,应该没错了把?还有??!!那提出来,看我能不能帮你解决;遇到困难不要急,到ogdev论坛里来问一下,基本上你遇到的问题我也会遇到过,我会给你建议;我每天都来上网,你的问题会很快解决,这个不要担心。
  
  那么我们现在就要看代码了:
  游戏结构代码:
  
  /////////////////////////////////////////////////////////////////////////////////////////////
  // GAME.CPP     游戏的框架,不同的是UpdateGame()实现不同
  /////////////////////////////////////////////////////////////////////////////////////////////
  
  
  void FiniApp()
  {
  //代码略
      //游戏结束的清理工作
  }
  
  /////////////////////////////////////////////////////////////////////////////////////////////
  // WinProc     窗口消息处理函数,一般不处理游戏的事件
  /////////////////////////////////////////////////////////////////////////////////////////////
  long PASCAL WinProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
  {
  switch(message)           //消息处理函数做了很少的工作,主要工作是在没消息的                       //时候的空闲处理函数里做的
  {
  case WM_ACTIVATEAPP:
      bActive = wParam;
  break;
  
  case WM_KEYDOWN:
  switch(wParam)
  {    //ESC键使游戏结束
  case VK_ESCAPE:
  PostMessage(hWnd, WM_CLOSE, 0, 0);
  break;
  }
  break;
  
  case WM_DESTROY:
  FiniApp();
  PostQuitMessage(0);
  break;
  }
  
  return DefWindowProc(hWnd, message, wParam, lParam);
  }
  
  /////////////////////////////////////////////////////////////////////////////////////////////
  // InitApp     产生窗口,初始化游戏
  /////////////////////////////////////////////////////////////////////////////////////////////
  BOOL InitApp(HINSTANCE hInst, int nCmdShow)
  {
  //注册窗口类,创建窗口,窗口句柄hWnd
  
  if(!hWnd) return FALSE;
  
  ShowWindow(hWnd, nCmdShow);
  UpdateWindow(hWnd);
  
  InitGame();
  Input.Create(hInst, hWnd);
  
  return TRUE;
  }
  
  /////////////////////////////////////////////////////////////////////////////////////////////
  // WinMain     程序的入口位置
  /////////////////////////////////////////////////////////////////////////////////////////////
  int PASCAL WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nCmdShow)
  {
  MSG msg;
      //这里调用初始化窗口和游戏
  if(!InitApp(hInst, nCmdShow)) return FALSE;
  
  while(1)
  {
  if(PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE))
  {
  if(!GetMessage(&msg, NULL, 0, 0 )) return msg.wParam;
  TranslateMessage(&msg);
  DispatchMessage(&msg);
  }
  else if(bActive)        //bActive标志游戏是否在运行
  {
  UpdateGame();       //这个函数起了很大的作用,更新输入和游戏
  }
  else WaitMessage();
  }
  }
  
  上面也是基本的win32 application的基础知识.
收藏本文 责编:admin 


相关文章
独家专访网易游戏策划是怎样炼成的
游戏私服安全攻防技巧之高级篇
游戏私服安全攻防技巧之中级篇 
游戏私服安全攻防技巧之初级篇
将GAPI游戏从纵向模式移植到方形屏幕
推荐文章


 精彩友情推荐
·神州数码交换机
·神州数码交换机价格
·神州数码网络交换机
·netgear交换机
·网件交换机
·IDC资讯大全
·机房品质万里行
·IDC托管必备知识
·全国IDC报价
·网站推广优化
 基础入门  开发文档
 最新推荐
  多数的Windows程序都需要Windows.h和Windowsx.h这两个头文件,要确保使用它们。当然,你还需要其它......
游戏引擎演化史
在Windows上安装OGRE的方法
关于滤镜遮罩概念,Sobel 遮罩
游戏开发新手入门之Windows编程
游戏开发新手入门之位图化图形
教你实现卡通渲染的另类勾边方法
游戏设计大师谈如何成为一名游戏设
Visual C#编写 3D游戏框架示例
真正的 Java 学习从入门到精通
游戏开发经验——游戏开发的基本常
  针对于移动新出台的政策,需要尽快地把我们公司的游戏对应到不同的手机平台,这是针对市场策略的有利调整............
Quake-III代码里神奇的浮点开方函数
基于Dialogue的MFC程序调用DirectX
关于Kjava手机平台移植可行性报告
网络游戏的数据传输处理和防火墙穿
浅谈网游的数据传输处理和防火墙穿
向量几何在游戏编程中的使用(六)
向量几何在游戏编程中的使用(五)
向量几何在游戏编程中的使用(四)
向量几何在游戏编程中的使用(三)
向量几何在游戏编程中的使用(二)
  培训中心