C++ 开发【梦幻西游】500多行代码实现

本文档详细介绍了使用C++开发《梦幻西游》项目的全过程,包括项目展示、开发环境配置、主函数参数解析、窗口初始化、英雄与Boss逻辑、技能绘制、死亡判断以及信息栏的实现。通过500多行代码,演示了如何构建一个简单的游戏场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、项目展示

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

二、准备

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 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿的温柔香

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值