博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
开始做游戏系列——拥有你自己的游戏(转)
阅读量:2450 次
发布时间:2019-05-10

本文共 3194 字,大约阅读时间需要 10 分钟。

开始做游戏系列——拥有你自己的游戏(转)[@more@]

  上次我们讨论了游戏领域里面的几种职业,以后我会说明他们是如何一起工作完成一个游戏的。今天呢,就要

  

  实现大家的梦想,拥有一个自己的游戏;甭管自己多菜,先做出来个游戏先;不过还是要对一些常见的游戏有

  

  所了解:

  

  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,选择是,就不需要手动添加;你会发现 工具--&gt选择--&gt目录中 路径里面,Direct X SDK的头文件和库文件已经被添加进去了;

  安装CDX的时候就没有这么智能,你需要自己手动添加,不会的话,回复我的时候说一声;

  好了,假设你一切搞定;

  现在打开cdx安装目录下的"gameslasterBlaster.dsp",将会打开工程,这就是我向大家推荐的第一个游戏;确切点说,是我们要修改这个游戏,不过前提是,我们要能够编译运行通过,而且能够了解这个游戏的来龙去脉。对了,cdx默认安装在 c:cdx文件夹

  

  迈出第一步通常是很难的,不过迈出第一步后就很轻松了;你可能会发现你还是不能运行,常见的错误是找不到"cdxd.lib",没关系,我们只要稍微修改就可以了,在 工程--&gt设置--&gtLink中 模块库里,看有没有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的基础知识

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8225414/viewspace-951449/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/8225414/viewspace-951449/

你可能感兴趣的文章
如何使用Python的Flask和Google App Engine构建网络应用
查看>>
gettext 国际化_如何使用Gettext在Phoenix应用程序中执行本地化
查看>>
heroku_Heroku Connect的美丽:简化数据库同步
查看>>
fitbit手表中文说明书_我如何分析FitBit中的数据以改善整体健康状况
查看>>
css一行点点点_如何通过一点点创意使CSS成为不可能
查看>>
java学习免费课程_这些是帮助您学习Java 8和Java 9的最佳免费课程
查看>>
托管非托管_如何利用Kubernetes的力量来优化您的托管成本
查看>>
区块链应用开发人员_每个区块链开发人员都应该了解这些Web3和Metamask用例
查看>>
如何在React Native中构建项目并管理静态资源
查看>>
请使用recaptcha_如何在30分钟内使用ReCaptcha和PHP构建Bootstrap电子邮件表单
查看>>
在Unterfranken中搜索河流:如何使用Elasticsearch在地图上查找要素
查看>>
奈飞文化集:自由与责任_如何与自由客户合作:最好的合同就是您永远不必执行的合同...
查看>>
手动创建线程更好哦_如何通过创建更好的工作流程找到下一个大想法
查看>>
如何使用Node.js构建完整的GraphQL服务器
查看>>
mvp内粗泄露问题_如何在一小时内启动MVP服务器
查看>>
css实现列表下拉菜单_逐行:点击打开下拉列表和菜单的高级CSS技巧
查看>>
xamarin_如何实现声明性Xamarin表单验证
查看>>
项目使用ts辅助_如何在10天内启动辅助项目
查看>>
gradle kotlin_我对Gradle Kotlin DSL的第一印象
查看>>
开发人员kpi怎么写_为什么开发人员应该知道怎么写
查看>>