没有合适的资源?快使用搜索试试~ 我知道了~
首页C++学习进阶:超级玛丽项目实战与C++特性理解
C++学习进阶:超级玛丽项目实战与C++特性理解
1 下载量 168 浏览量
更新于2024-09-01
收藏 109KB PDF 举报
在C++的学习之旅中,作者已经跟随孙鑫老师的视频教程深入接触并掌握了基本概念,尤其是在对比C++和.NET之间的一些差异。C++的语法和.NET有所不同,例如C++需要手动管理内存,如通过析构函数释放资源,这与.NET的垃圾回收机制截然不同。作者提到Visual Assist这样的插件在提高代码提示效率方面起到了重要作用,它弥补了C++缺乏内置智能提示的不足。 在具体实践上,作者选择了制作超级玛丽游戏作为项目,以此深化对C++的理解。游戏设计被划分为三个层次:图像层、逻辑层和结构和表。图像层负责处理游戏的各种图像资源,如MYBITMAP基类及其派生类,如游戏背景、角色和动画。逻辑层涉及游戏的核心逻辑,如GAMEMAP(游戏地图)、时间处理、字体处理和角色控制等。结构和表部分定义了精灵结构、物品结构以及地图信息的组织方式。 MYBITMAP类作为图像的基础,其核心功能包括从位图文件中初始化图像,这涉及到输入参数如应用程序实例句柄。这个类展示了C++面向对象编程的特性,通过继承和封装来实现对图像数据的管理和操作。 作者计划逐步分享游戏开发过程中的更多细节,包括如何设计类的结构、如何处理游戏逻辑以及在实际编程中遇到的问题和解决方案。通过这个实际项目的分享,读者不仅能了解到C++的具体应用,也能看到一个开发者如何在实践中理解和掌握C++语言的特点。
资源详情
资源推荐
C++ 学习之旅三学习之旅三 我和超级玛丽有个约会我和超级玛丽有个约会
学习了c++有一周有余了吧,感谢孙鑫老师的视频教程,让我 对C++有了基本的了解,并理解到C++与.net 的许
许多多的区别,更要感谢网民为programaking的人,会为我提供了超级玛丽制作揭秘 这套宝贵的教程,让我 做
做出了这个项目,对c++ 有了一个更深层次的认识。我就把我做超级玛丽这个游戏的心得,体会写成博客分享
给大家把
首先,我说说对C++的最直观的感受吧!熟悉了.net 智能提示,开始一开始发现C++根本没有提示了。后来google了一下,下
载了一个visual assist 这个插件,比vs自动提示强多了。 然后,就是习惯了在.net中,把所有的声明和方法实现写在同一文件
中。可是C++不是这么回事。 他一个声明在头文件中,实现 在源文件中,说实在话,一开始并怎么习惯。后来渐渐就习惯
了。然后,写C++的文件就是真他妈的痛苦,他不比.net,微软已经比你封装好了,在C++中,好多东西需要自己写。 首先,
一个析构函数,需要自己释放资源。而.net有一个gc自动进行垃圾回收,资源释不释放,关你鸟事。没办法,只有自己释放.做
一个遵守规则的好程序员。这是我对C++最直观感受。
言归正卷,说一说这个超级玛丽的游戏。 先看看,我对游戏的类结构的分类,如果有不妥的地方,恳请大家指正。
从层次结构来看,分成这几个层①图像层,②逻辑层,③结构和表。
图像层包括①图像基类MYBITMAP,②游戏背景MYBKSKYàMYBITMAP,③游戏图片MYANIOBJàMYBITMAP,④魔法攻击
MYANIMAGICàMYBITMA.
逻辑层包括①游戏逻辑GAMEMAP,②时钟处理MYCLOCK,③字体处理MYFONT,④跟踪打印FILEREPORT,⑥玩家控制
MYROLEàMYBITMAP。
结构和表包括①精灵结构ROLE,②物品结构MapObject,③地图信息表MAPINFO。
那每个类的结构又是那么样子的,是骡子还是马拉出来溜溜。我们在往下看一看。
图像层的结构就这样简单,逻辑层只需要确定“哪个图像,哪一帧”这两个参数,就能在屏幕上绘制出所有图片。
说一说一个图片的基类。他的源代码的架构又是这个样子的。
今天先讲最基础的图像类 MYBITMAP:
成员函数功能列表:
复制代码 代码如下:
//功能 根据一个位图文件,初始化图像
//入参 应用程序实例句柄 资源ID 横向位图个数 纵向位图个数
void Init(HINSTANCE hInstance,int iResource,int row,int col);
//功能 设置环境信息
//入参 目的DC(要绘制图像的DC),临时DC,要绘制区域的宽 高
void SetDevice(HDC hdest,HDC hsrc,int wwin,int hwin);--妈的,C++中画图需要一个hdc,设备上下文需要是一种包含有关某
个设备(如显示器或打印机)的绘制属性信息的 Windows 数据结构。所有绘制调用都通过设备上下文对象进行,这些对象封
装了用于绘制线条、形状和文本的 Windows API。设备上下文允许在 Windows 中进行与设备无关的绘制。设备上下文可用于
绘制到屏幕、打印机或者图元文件。.net不需要了这个 上下文对象,他有了一个.netframework 就不需要这个屁玩意了。
//功能 设置图片位置1
//入参 设置方法 横纵坐标
void SetPos(int istyle,int x,int y);
//功能 图片显示
//入参 图片显示方式
void Draw(DWORD dwRop);
//功能 图片缩放显示
//入参 横纵方向缩放比例
void Stretch(int x,int y);
//功能 图片缩放显示
//入参 横纵方向缩放比例 缩放图像ID(纵向第几个)
void Stretch(int x,int y,int id);
//功能 在指定位置显示图片
//入参 横纵坐标
void Show(int x,int y);
//功能 横向居中显示图片
//入参 纵坐标
void ShowCenter(int y);
//功能 将某个图片平铺在一个区域内
//入参 左上右下边界的坐标 图片ID(横向第几个)
void ShowLoop(int left,int top,int right,int bottom,int iframe);
//功能 不规则图片显示
//入参 横纵坐标 图片ID(横向第几个)
void ShowNoBack(int x,int y,int iFrame);
//功能 不规则图片横向平铺
//入参 横纵坐标 图片ID(横向第几个) 平铺个数
void ShowNoBackLoop(int x,int y,int iFrame,int iNum);
//动画播放
下载后可阅读完整内容,剩余3页未读,立即下载
weixin_38748875
- 粉丝: 10
- 资源: 951
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++多态实现机制详解:虚函数与早期绑定
- Java多线程与异常处理详解
- 校园导游系统:无向图实现最短路径探索
- SQL2005彻底删除指南:避免重装失败
- GTD时间管理法:提升效率与组织生活的关键
- Python进制转换全攻略:从10进制到16进制
- 商丘物流业区位优势探究:发展战略与机遇
- C语言实训:简单计算器程序设计
- Oracle SQL命令大全:用户管理、权限操作与查询
- Struts2配置详解与示例
- C#编程规范与最佳实践
- C语言面试常见问题解析
- 超声波测距技术详解:电路与程序设计
- 反激开关电源设计:UC3844与TL431优化稳压
- Cisco路由器配置全攻略
- SQLServer 2005 CTE递归教程:创建员工层级结构
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功