文章目录
一、项目展示
二、准备
1、开发环境
在使用VS 的时候通过 win32 项目创建,这里一定不要选错,如下图
选中空项目,去掉安全开发声明周期
2、图片素材
三、整个流程
整个流程是很重要的,这里一定要懂
首先看看主函数的参数
由于这是 Win32 项目创建,所以和我们平时看的控制台 main 函数是不一样的
参数只要知道第一个就行了,和最后一个就行了,因为剩下两个也没有用到
HINSTANCE hInstance :表示该程序当前运行的实例句柄,是一个数值标识。当程序在Windows下运行时,它唯一标识运行中的实例
int nShowCmd :指定程序的窗口应该如何显示,例如最大化、最小化、隐藏等。这个参数的值由该程序的调用者所指定,应用程序通常不需要去理会这个参数的值。
然后我们在主函数中先定义一些东西,这些是必须要有的
另外也可以设置窗口的样式,以及鼠标等等,当然该项目没有用到
然后对窗口进行 注册,创建,更新
接下来是对窗口进行初始化
需要做这些东西,具体啥含义需要深究Win32,就不探讨了
然后把英雄,Boss,技能图标加载进来
首先需要定义
// 素材
//背景图片
g_backbmp = (HBITMAP)LoadImage(NULL, L"./res/bg.bmp", IMAGE_BITMAP, 800, 600, LR_LOADFROMFILE);
//技能1,2,3,4的图标
g_skillbutton1 = (HBITMAP)LoadImage(NULL, L"./res/skillbutton1.bmp", IMAGE_BITMAP, 40, 40, LR_LOADFROMFILE);
g_skillbutton2 = (HBITMAP)LoadImage(NULL, L"./res/skillbutton2.bmp", IMAGE_BITMAP, 40, 40, LR_LOADFROMFILE);
g_skillbutton3 = (HBITMAP)LoadImage(NULL, L"./res/skillbutton3.bmp", IMAGE_BITMAP, 40, 40, LR_LOADFROMFILE);
g_skillbutton4 = (HBITMAP)LoadImage(NULL, L"./res/skillbutton4.bmp", IMAGE_BITMAP, 40, 40, LR_LOADFROMFILE);
//英雄和Boss图标
g_hero = (HBITMAP)LoadImage(NULL, L"./res/1001.bmp", IMAGE_BITMAP, 3500, 250, LR_LOADFROMFILE);
g_boss = (HBITMAP)LoadImage(NULL, L"./res/BOSS.bmp", IMAGE_BITMAP, 4000, 250, LR_LOADFROMFILE);
//英雄释放技能的图标
g_heroskill1 = (HBITMAP)LoadImage(NULL, L"./res/heroslash.bmp", IMAGE_BITMAP, 364, 140, LR_LOADFROMFILE); //普通攻击
g_heroskill2 = (HBITMAP)LoadImage(NULL, L"./res/herocritical.bmp", IMAGE_BITMAP, 574, 306, LR_LOADFROMFILE);//暴击
g_heroskill3 = (HBITMAP)LoadImage(NULL, L"./res/heromagic.bmp", IMAGE_BITMAP, 100, 77, LR_LOADFROMFILE); //魔法攻击
//boss 释放技能的图标
g_bossskill1 = (HBITMAP)LoadImage(NULL, L"./res/monsterslash.bmp", IMAGE_BITMAP, 150, 120, LR_LOADFROMFILE);
g_bossskill2 = (HBITMAP)LoadImage(NULL, L"./res/monstercritical.bmp", IMAGE_BITMAP, 249, 231, LR_LOADFROMFILE);
g_bossskill3 = (HBITMAP)LoadImage(NULL, L"./res/monstermagic.bmp", IMAGE_BITMAP, 200, 131, LR_LOADFROMFILE);
//恢复气血图标
g_recover = (HBITMAP)LoadImage(NULL, L"./res/recover.bmp", IMAGE_BITMAP, 150, 150, LR_LOADFROMFILE);
//游戏结束和胜利图标
g_hGameOver = (HBITMAP)LoadImage(NULL, L"./res/gameover.bmp", IMAGE_BITMAP, 1086, 396, LR_LOADFROMFILE);
g_hVictor = (HBITMAP)LoadImage(NULL, L"./res/victory.bmp", IMAGE_BITMAP, 294, 147, LR_LOADFROMFILE);
//添加背景音乐,播放添加到资源的.wav文件,IDR_DENG代表音频资源res/wav/1.wav的编号,SND_RESOURCE代表使用资源,SND_ASYNC代表异步播放,SND_LOOP代表循环播放
PlaySound(_T("./res/梦幻西游原声-战斗1-森林.wav"), NULL, SND_ASYNC | SND_LOOP);
另外对 Boss 和 英雄的属性初始值也可以在初始化函数中赋值
当然也得定义
//初始英雄化数据
Hero.Agility = 20;
Hero.Intell = 10;
Hero.level = 6;
Hero.strength = 10;
Hero.MaxHp = 1000;
Hero.NowHp = 1000;
Hero.MaxMp = 60;
Hero.NowMp = 60;
//初始化Boss数据
Boss.Agility = 10;
Boss.Intell = 10;
Boss.level = 10;
Boss.strength = 10;
Boss.MaxHp