小白如何用C++制作经典网游DNF?C++实战教学!

news/2024/11/28 7:24:46/

在这里插入图片描述
十年前,那时候的网吧还不叫网咖,那时候没有王者荣耀也没有英雄联盟,那时候梦幻西游刚推出珍宝阁系统,那时候巫妖王的灵魂还封闭在冰封王座。

下面是小编整理好的一套C/C++资料,私信小编回复:01,获取系统性学习C/C++的学习资料

在这里插入图片描述
寻仙、穿越火线、征途、天龙八部……同时在线人数超百万的游戏纷纷涌现,那个中国网游群芳斗艳的年代,地下城与勇士无疑是最耀眼的那个。
在这里插入图片描述

DNF当年有多火?那年小编还在读初中,跟同学去网吧,一排排全是在玩DNF,当时有人爆了一把双龙魔影光剑,整个网吧都炸了,一个地主家的傻儿子当即把手机押那儿,然后冲回家再取800块,一出门就摔了一跤,滋溜就爬起来继续跑,一边跑一边喊千万别卖给别人……

在这里插入图片描述
不过呢,玩游戏不如做游戏,再牛逼的游戏号在程序员的眼里就是一堆代码,所以今天呢,小编要跟大家说说如何进行游戏开发。

作为一款横屏格斗游戏,绚丽的画面和流畅的动作是DNF的精髓,那么我们先从画面和动作着手。

关于GDI的初步认知

什么是GDI,GDI是windows与生俱来的图形设备接口(GraphicsDeviceInterface)的英文缩写,主要任务是负责系统与绘图程序之间的信息交换,处理所有Windows程序的图形和图像输出。

利用它我们可以很轻松的在屏幕上绘制图形了。也能利用它开发一些绘制要求不高的游戏,比如小时候玩的魂斗罗,超级玛丽啊等小游戏,或一些RPG(角色扮演类)小游戏,我们都是可以用GDI制作的。

虽然LOL,DNF,QQ炫舞等这些游戏是DirectX或OpenGL这类图形接口,但对新手小白来说最简单的还是GDI。

准备一张BMP格式的背景图片,创建一个窗体,在窗体上进行绘制,然后通过GetDC函数来获取窗体的设备环境DC
在这里插入图片描述

获取设备环境后,还需要在内存中创建一个设备环境,我们在内存中画图,画好以后,直接拷贝到窗体的设备环境上
在这里插入图片描述

关于初步动画实现

3D是渲染的艺术,具备动画状态机和混合树的方案在如今基本是标配,如常见的Unity的Mecanim,UE4的Animation Blueprint。

那如何利用GDI在游戏中实现动画效果呢?

2D游戏是贴图的艺术,贴图基本有两种方式,一种采用定时器,一种则是利用消息循环,目前都是采用的第二种绘制方式(消息循环),也就是说游戏中的动画都是一帧一帧的帖上去的,就像放电影一样。
在这里插入图片描述

例如这个动画(素材来自DNF),通过一个数组把他们保存起来,然后依次播放。下面是部分代码:

在这里插入图片描述
在这里插入图片描述
运行效果图:
在这里插入图片描述

是不是感觉还不错呢?其实地下城与勇士这类游戏是比较适合新手小白开发的,相比于3D游戏的骨骼动画,2D横版游戏的序列帧更简便。

在这个娱乐化时代,游戏已经融入到我们的生活成为了一种生活方式,游戏开发也是当下和未来绝对热门的行业,但是对于初学者而言呢,缺乏经验和指导往往会举步维艰。

所以今天小编特意给大家带来一堂

C++游戏实战开发直播分享课

在开发过程中,我们会用到C/C++语言、Win32窗口创建、消息机制、GDI三缓冲绘图原理等知识点。

●学习过程中你能学会:

1.使用API函数创建好Win32窗口。

2.将准备好的游戏素材加载到程序中。

3.使用GDI图形设备接口函数绘制地图与角色。

4.利用C/C++语法结合数据结构与算法算法处理游戏数据。

5.编写游戏逻辑。

●学习成效:

1.跳出控制台,在界面编程中去锻炼自己的逻辑思维能力。

2.了解windows程序设计的基本框架。

3.可尝试去开发各种界面化的程序,例如雷霆战机,俄罗斯方块,坦克大战等等。


http://www.ppmy.cn/news/350505.html

相关文章

实战开发:新手小白如何用C++制作经典网游DNF

十年前,那时候的网吧还不叫网咖,那时候没有王者荣耀也没有英雄联盟,那时候梦幻西游刚推出珍宝阁系统,那时候巫妖王的灵魂还封闭在冰封王座。 寻仙、穿越火线、征途、天龙八部……同时在线人数超百万的游戏纷纷涌现,那个…

DNF类游戏动作实现(C语言)

没有接触制作小游戏前,感觉做游戏很不可思议,游戏里的人物是怎么移动的,怎么攻击,释放技能。。。。。。现在逐渐了解到之后,发现2d游戏人物的动作更多是图片的拼接,动作是否精细,由这个动作的帧…

从汇编代码探究函数栈帧的创建和销毁的底层原理

人,只有在放弃战斗的时候才算输,只要坚持战斗,就还没输 本文收录于青花雾气-计算机基础 往期回顾 从0到1搞定在线OJ 数据在内存中的存储 计算机存储的大小端模式 目录 一、先导知识 二、函数调用堆栈 三、函数栈帧的创建 1.创建函数…

Vue2模拟俄罗斯方块小游戏

目录 一、效果展示 二、代码分享 三、原理分析 3.1、界面搭建 3.2、方块创建 3.3、方块旋转 3.4、方块移动 3.5、移动判断 3.6、下落判断与清除 3.7、得分计算 一、效果展示 二、代码分享 <template><div class"game"><div class"ga…

ipv6端口阻塞(例如比特彗星黄灯)

如果是tplink路由器&#xff0c;可能会遇到路由器自带的ipv6防火墙&#xff0c;不关闭的话永远是黄灯&#xff0c;win10系统关闭防火墙、upnp、虚拟服务器、DMZ都是没用的。5430已经在最新固件中新增手动关闭防火墙功能。5480等暂时没有&#xff0c;官方表示后续固件会更新此功…

win10,使用bitcomet外网阻塞(黄灯)的解决方法

2019独角兽企业重金招聘Python工程师标准>>> 1.路由开启UPNP功能&#xff0c;各自路由情况不一。 2.开启网络发现。 3.打开相应的端口。 转载于:https://my.oschina.net/u/261479/blog/738041

bitcomet端口阻塞解决方案

看了很多方法尝试了都不行。因为他们的环境跟我的都不一样。我比大部分网上的教程多了一个自购路由器且PC是直接用网线连接自购路由器。 因此&#xff0c;我的方法是在两个地方添加端口映射。一个是天翼网关&#xff0c;一个是附赠的路由器。 前期准备是请打电话去电信客服获取…

Windows Upnp 服务补丁——UpnpFix V1.0

先来介绍下Upnp服务是干啥的&#xff08;迅雷官网摘录&#xff09;&#xff1a; UPNP的英文全称是Universal Plug and Play&#xff0c;即通用即插即用协议,是为了实现电脑与智能的电器设备对等网络连接的体系结构。而内网地址与网络地址的转换就是基于此协议的&#xff0c;因此…