2D中小游戏开发C++游戏教程

这篇教程介绍了使用C++在Windows环境下开发2D游戏的基础知识,包括游戏状态管理、WinMain函数、窗口注册和创建、主事件循环等关键概念。通过学习,读者可以理解游戏程序的基本结构并创建自己的第一个窗口程序。
摘要由CSDN通过智能技术生成

初探Windows窗体程序(上)2D游戏制作从入门到入土。

这个相对于我那个小游戏入门就显得比较专业了,但是仍然会给源码,关注可以下载相应的模板,模板是给全的。###感谢老司机(一个人)###

First

了解下游戏的过程吧,一般来讲游戏分下面几种状态
游戏状态(game_state)

#define Game_Menu  0  //游戏菜单
#define Game_Ready 1  //游戏加载
#define Game_Play  2  //游戏进行
#define Game_Pause 3  //游戏暂停
#define Game_Over  4  //游戏结束

就是这几个,所以在编程中,我们可以用一个int型变量来记录当前的游戏状态:
int game_state = Game_Menu;
Game_Play可延伸为Game_Play_Common和Game_Play_Boss甚至更多,这样做可以区分普通关卡和boss关卡。读者也可以采用枚举类型(enum)来储存游戏状态。
(二)认识WINAPI WinMain函数
这个函数就类似于DOS(控制台)程序中的int main()函数一样,它是窗体程序的入口。
一般来说,WinMain里有以下三部曲:
1.注册窗口 2.创建窗口 3.进入主事件循环

让我们来看一下WINAPI WinMain的函数原型:
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
接下来让我们来看一下每个参数:

●hInstance:这是一个Windows为应用程序生成的实例句柄。句柄是什么呢?句柄是一种特殊的智能指针 。它可以指向一个窗口,一个场景设备等等,而不是我们普通的指针。当一个应用程序要引用其他系统(如数据库、操作系统)所管理的内存块或对象时,就要使用句柄。而实例句柄又是什么呢?实例就是一个用来跟踪资源的指针或数,hInstance就像一个名字或地址一样,跟踪应用程序。

●hPrevInstance:这个是Windows旧版本里使用的实例句柄,现在已经不再使用了,但在WinMain的函数头里还是没有去除。

●lpCmdLine:这是一个空值终止字符串,和main(int argc,char **argv)函数中的命令行参数相似,由于我们在游戏制作中使用得较少,这里就不详细介绍。

●nCmdShow:这个参数在启动过程中被传递给应用程序,带有如何打开主应用程序的信息,不过这个参数在游戏制作中同样使用得较少,也不详细介绍。

当然,如果现在你看不懂,可以理解,读者可以先接着看下面的内容,待会再回来消化。

  1. 注册窗口
    就像账号一样先要注册才能登录,注册窗口就是向Windows申请建立一个窗口,并且窗口的样式由制作者决定。注册窗口的过程就像填一张表格,填完之后把表格交给Windows,让Windows按照表格上的内容创建窗口。
    那这张表格是什么呢?就是WNDCLASSEX数据结构,我们看下Windows头文件的定义:
typedef struct WNDCLASSEX {
   
	UINT cbSize;
	UINT style;
	WNDPROC lpfnWndProc;
	int cbClsExtra;
	int cbWndExtra;
	HINSTANCE hInstance;
	HICON hIcon;
	HCURSOR hCursor;
	HBRUSH hbrBackground;
	LPCTSTR lpszMenuName;
	LPCTSTR lpszClassName;
	HICON hIconSm;
} WNDCLASSEX, *PWNDCLASSEX;

通过设置各个参数,就可以设置窗口的格式啦!让我们来看看是怎样的:
●cbSize:这是一个非常重要的参数,它是WNDCLASSEX结构本身的大小,可能读者会问,为什么需要知道结构的大小?原因是当这个结构作为一个指针被传递的话,其他函数在运行时就不必计算该类的大小,会提高速度。因此,我们这样写就可以了:

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值