小明陪你编游戏系列(一)win32游戏开发快速入门
来源:互联网 发布:彩票开奖数据 编辑:程序博客网 时间:2024/06/05 15:06
也许一个人要走很长的路,经历过生命中无数突如其来的繁华和苍凉才会变的成熟。
小明陪你编游戏系列(一)win32游戏开发快速入门
小明对游戏的兴趣看看小明大学时候的挂科率便可见一斑,勉强拿到学位的小明依然对游戏热衷不改。
不得不说,小明是个很懒而且很害怕挫折的人,当然这都是程序猿们的死门,希望大家这点引以为戒,废话不多说啦,开始正题!~
游戏的结构实际上就是一个有限状态机,自动执行一部分代码,当接收到IO消息的时候,进入到另外一个状态。为了更快的进入游戏的主体的架构学习,所以小明选择暂时躲开细节实现的烦恼。
为此,小明列出了这样一款清单。
1. 游戏设计。 没什么好说的,喜欢做什么就做什么吧。
2. 游戏主体结构。就像人的骨头,没骨头,站都站不起来,少不了。
3. 图像显示。 属于细节内容,但不可或缺,暂时用简单的技术手段代替。
4. 多媒体播放。 细节内容,后续章节实现
5. 网络模块。 后续章节实现
根据这样一款清单来看,小明入门的任务很简单,第一,实现图形显示,第二实现主体架构。
(一)游戏设计
先拿一个简单的上手吧,小明设计了这么个类似贪吃蛇的游戏。
(1)剧情,五个人探险(就拿LOL的头像了,嘿嘿,谁让它好找呢),寻找自己的分身。
(2)在WIDTH(=6)*HEIGHT(=8)的长方形中,每搁S(=1)秒后,第一个向前方前进一格,后面四个移动到前面一格的位置上。
(3)撞墙则游戏失败。
(4)发现新队友时,如果新队友已存在,该角色属性值+1,如果不存在,则淘汰属性值最低的队友。
(5)当队伍总属性值超过LEVEL_VALUE的时候晋级,重新开始。nLevelValue = nLevel * 10.等级level初始值为1。
(6)其他内容待定。
(二)实现图像显示
图像显示有很多手段,直接使用Bitblt就可以,但是太繁琐不说,还有很多细节无法获得,好在gdiplus很给力,很容易上手,而且即使以后有了更高级更适合开发游戏的技术手段后,gdiplus依然很适合作为游戏的GUI。
1. 配置. ok,现在看看gdi+得有多简单吧,如果你使用的是VS2005及其以上版本,你不需要配置任何东东,如果不是,请自行到网上查找配置,很简单,不多说。
2. 包含头文件<gdiplus.h>,如果编译失败,就请包含头文件<objbase.h>,另外,需要using namespace Gdiplus。(小明额外啰嗦一句,包含头文件的时候,不区分大小写),另外,需要#pragma(lib, "gdiplus.lib")
3. 初始化gdiplus,这个代码看起来好像挺复杂, 但是喜欢copy的小明感到毫无压力,这就给各位copy一份。
GdiplusStartupInput gdiplusInput;GdiplusStartup(&m_gdiplusToken,&gdiplusInput,NULL);
只要记住保存住m_gdiplusToken就好,原因请看第4条
4. 关闭gdiplus,代码如下:
GdiplusShutdown(m_gdiplusToken);5. 初始化Graphics对象
HDC hdc;// hWnd is the handle of the current window.hdc = GetDC(m_hwnd);Graphics graphics(hdc);6.初始化图像对象,其中BG_PICTURE_DIR是图像路径,ImageNames是图像名
wstring str = BG_PICTURE_DIR;str += ImageNames[0];Image *pImage = new Image(str.c_str());
7. 可以绘制了。
graphics.DrawImage(pImage, 0, 0, WIN_WIDTH, WIN_HEIGHT);
(三) 游戏架构
这部分相对简单多了,直接建立win32 应用程序,在Init处初始化,while循环内draw,循环外关闭gdiplus即可。
好了,今天暂时先到这里,下一篇里会贴出CGame类状态机的实现以及源码下载地址。大家可以先写写看,看看效果会不会比小明的好~
小明的开发Q群欢迎所有游戏开发爱好者的加入,开发Q群:69788620
幸福就像香水,洒给别人也一定会感染自己。
- 小明陪你编游戏系列(一)win32游戏开发快速入门
- 小明陪你编游戏系列(二)简单实现
- 小明陪你编游戏系列(三)第一次重构与状态机的实现
- 小明陪你编游戏系列(四)GDI+实现双缓冲
- 游戏开发入门系列(TX Class)
- 教你如何开发VR游戏系列教程一:前言
- AndEngine游戏开发系列教程(一)
- [java游戏开发快速入门]俄罗斯方块游戏开发开篇
- [java游戏开发快速入门]俄罗斯方块游戏开发开篇
- Android游戏快速入门(一):基础储备
- Android游戏快速入门(一):基础储备
- Unity 2D游戏开发快速入门(内部资料)
- Transform组件C#游戏开发快速入门
- C#游戏开发快速入门 2.1 构建游戏场景
- iPhone开发入门、进阶、技巧、游戏系列
- cocos2d-x 游戏开发系列之二:新建win32项目
- Unity3D手游开发系列笔记(一)——前言:选择什么样的游戏引擎来开发你的游戏?
- Flash游戏开发系列一:游戏中的敌人(1)
- 用Chrome调试NodeJS
- Median of Two Sorted Arrays 两个有序数组的中位数@LeetCode
- μC/OS-II学习之:任务,信号量、邮箱、队列及其区别
- leetcode Copy List with Random Pointer
- 输入a和b两个整数,按先大后小的顺序输出a和b
- 小明陪你编游戏系列(一)win32游戏开发快速入门
- 用window live writer无法离线编辑CSDN博客
- bf533 GPIO 学习
- 回顾
- Android中ListView下拉刷新的实现
- unity各平台路径,存放数据!
- IOS: UINavigationController 视图控制器
- 缓存和内存的区别
- hdu3067 小t的游戏