没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
超级玛丽 C++编程解密源码下载地址:http://down.51cto.com/data/577409
超级玛丽 C++编程解密源码下载地址:http://down.51cto.com/data/577409
MARIO CODE INSIDE
超级玛丽制作揭秘
目 录
一、 超级玛丽制作揭秘 1 工程开始 ....................................................................................... 2
二、 超级玛丽制作揭秘 2 图片基类 MYBITMAP ................................................................ 4
三、 超级玛丽制作揭秘 3 游戏背景 类 MYBKSKY ............................................................ 7
四、 超级玛丽制作揭秘 4 图片显示 类 MYANIOBJ ............................................................ 9
五、 超级玛丽制作揭秘 5 魔法攻击 类 MYANIMAGIC.................................................... 12
六、 超级玛丽制作揭秘 6 时钟控制 类 MYCLOCK .......................................................... 14
七、 超级玛丽制作揭秘 7 字体管理 类 MYFONT ............................................................. 19
八、 超级玛丽制作揭秘 8 跟踪打印 类 FILEREPORT ...................................................... 21
九、 超级玛丽制作揭秘 9 精灵结构 struct ROLE ................................................................ 23
十、 超级玛丽制作揭秘 10 子弹的显示和帧的刷新 ........................................................... 25
十一、 超级玛丽制作揭秘 11 子弹运动和打怪 ................................................................... 27
十二、 超级玛丽制作揭秘 12 旋风攻击,小怪运动,火圈 ..................................................... 29
十三、 超级玛丽制作揭秘 13 小怪和火圈,模板 .................................................................. 33
十四、 超级玛丽制作揭秘 14 爆炸效果,金币 ...................................................................... 36
十五、 超级玛丽制作揭秘 15 金币提示,攻击提示 .............................................................. 40
十六、 超级玛丽制作揭秘 16 攻击方式切换 ....................................................................... 42
十七、 超级玛丽制作揭秘 17 地图物品 ............................................................................... 43
十八、 超级玛丽制作揭秘 18 背景物品 ............................................................................... 46
十九、 超级玛丽制作揭秘 19 视图 ....................................................................................... 47
二十、 超级玛丽制作揭秘 20 地图切换 ............................................................................... 48
二十一、 超级玛丽制作揭秘 21 游戏数据管理 ................................................................... 52
二十二、 超级玛丽制作揭秘 22 玩家角色类 MYROLE ..................................................... 57
二十三、 超级玛丽制作揭秘 23 玩家动作控制 ................................................................... 62
二十四、 超级玛丽制作揭秘 24 角色动画 ........................................................................... 67
二十五、 超级玛丽制作揭秘 25 类 GAMEMAP 全局变量 ................................................ 70
二十六、 超级玛丽制作揭秘 26 菜单控制 窗口缩放 ......................................................... 75
二十七、 超级玛丽制作揭秘 27 程序框架 WinProc ............................................................ 78
二十八、 InitInstance 函数说明 ............................................................................................. 83
二十九、 后记 ......................................................................................................................... 85
超级玛丽 C++编程解密源码下载地址:http://down.51cto.com/data/577409
超级玛丽 C++编程解密源码下载地址:http://down.51cto.com/data/577409
2
类结构
图像层:
图像基类 MYBITMAP
游戏背景 MYBKSKYMYBITMAP
游戏图片 MYANIOBJMYBITMAP
魔法攻击 MYANIMAGICMYBITMAP
逻辑层:
游戏逻辑 GAMEMAP
时钟处理 MYCLOCK
字体处理 MYFONT
跟踪打印 FILEREPORT
玩家控制 MYROLEMYBITMAP
结构和表:
精灵结构 ROLE
物品结构 MapObject
地图信息表 MAPINFO
一、 超级玛丽制作揭秘 1 工程开始
两个版本的超级玛丽下载量已超过 5000 次,谢谢大家支持。谁无法下载,请告诉我邮箱,
我直接发。现在反映两个问题,一没有帮助文档,二代码注释太少。今天起,我揭秘制作过
程,保证讲解到每一行代码,每一个变量。
代码我已经发布,可见做这样一个游戏并不难。今天讲准备工作,也就是所需要的开发工具。
代码编写调试:VC 6.0,美术工具:Windows 自带的画图(开始-程序-附件-画图)。这是最
简陋的开发工具,但已足够。最好再有 Photoshop,记事本或 UltraEdit 等等你喜欢的文本编
辑工具。
游戏代码分两部分,图像部分,逻辑部分。先说图像部分:图像分两种,矩形图片和不规则
图片。工程中的 PIC 文件夹下,可以看到所有图像资源
矩形图片有:
地面、砖块、水管、血条、血条背景。
不规则图片有:
蘑菇(玩家,敌人 1,敌人 2),子弹、旋风、爆炸效果、金币、撞击金币后的得分、攻击武
超级玛丽 C++编程解密源码下载地址:http://down.51cto.com/data/577409
超级玛丽 C++编程解密源码下载地址:http://down.51cto.com/data/577409
3
器(那个从魂斗罗里抠来的东东)、火圈 1、火圈 2、箭头(用于开始菜单选择)、树木、河
流、WIN 标志、背景图片(游戏背景和菜单背景)。
所有图片都分成几个位图 BMP 文件存储。一个文件中,每种图片,都纵向排列。每种图片
可能有多帧。比如,金币需要 4 帧图像,才能构成一个旋转的动画效果,那么,各帧图像横
向排列。
图像层的结构就这样简单,逻辑层只需要确定“哪个图像,哪一帧”这两个参数,就能在屏
幕上绘制出所有图片。
图像层的基类是:
class MYBITMAP
void Init(HINSTANCE hInstance,int iResource,int row,int col);
void SetDevice(HDC hdest,HDC hsrc,int wwin,int hwin);
void Draw(DWORD dwRop);
HBITMAP hBm;
//按照行列平均分成几个
int inum;
int jnum;
int width;
int height;
HDC hdcdest;
HDC hdcsrc;
这只是一个基类,上面是几个重要的数据成员和函数。它所描述的图片,是一个 m 行 n 列
构成的 m*n 个图片,每个图片大小一致,都是矩形。显然,这并不能满足上面的设计要求,
怎么解决呢?派生,提供更多的功能。但是,这个基类封装了足够的物理层信息:设备上下
文 HDC,和位图句柄 HBITMAP。矩形图片的显示、不规则图片的显示、图片组织排列信
息,这些功能交给它的派生类 MYANIOBJ。
还有,我们最关心的问题是图片坐标,比如,不同位置的砖块、精灵、金币,这些由逻辑层
处理,以后再讲,先到这里吧。
超级玛丽 C++编程解密源码下载地址:http://down.51cto.com/data/577409
超级玛丽 C++编程解密源码下载地址:http://down.51cto.com/data/577409
4
二、 超 级 玛 丽 制 作 揭 秘 2 图 片 基 类
MYBITMAP
先说一下代码风格,大家都说看不懂,这就对了。整套代码约有 3000 行,并不都是针对这
个游戏写的。我想把代码写成一个容易扩展、容易维护、功能全面的“框架”,需要什么功
能,就从这个框架中取出相应功能,如果是一个新的功能,比如新的图像显示、新的运动控
制,我也能方便地实现。所以,这个游戏的代码,是在前几个游戏的基础上扩充起来的。部
分函数,部分变量在这款游戏中,根本不用,但要保留,要为下一款游戏作准备。只要理解
了各个类,就理解了整个框架。
今天先讲最基础的图像类 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);
//功能 设置图片位置
//入参 设置方法 横纵坐标
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);
超级玛丽 C++编程解密源码下载地址:http://down.51cto.com/data/577409
超级玛丽 C++编程解密源码下载地址:http://down.51cto.com/data/577409
5
//功能 不规则图片横向平铺
//入参 横纵坐标 图片 ID(横向第几个) 平铺个数
void ShowNoBackLoop(int x,int y,int iFrame,int iNum);
//动画播放
//功能 自动播放该图片的所有帧,函数没有实现,但以后肯定要用:)
//入参 无
void ShowAni();
//功能 设置动画坐标
//入参 横纵坐标
void SetAni(int x,int y);
成员数据
//跟踪打印类
// FILEREPORT f;
//图像句柄
HBITMAP hBm;
//按照行列平均分成几个
int inum;
int jnum;
//按行列分割后,每个图片的宽高(显然各个图片大小一致,派生后,这里的宽高已没有使用意
义)
int width;
int height;
//屏幕宽高
int screenwidth;
int screenheight;
//要绘制图片的 dc
HDC hdcdest;
//用来选择图片的临时 dc
HDC hdcsrc;
//当前位置
int xpos;
int ypos;
//是否处于动画播放中(功能没有实现)
int iStartAni;
剩余85页未读,继续阅读
kaifaren2
- 粉丝: 17
- 资源: 40
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
- 5
前往页