分享
 
 
 

开始做游戏系列——拥有你自己的游戏

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

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

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

所了解:

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的基础知识.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有