超级玛丽详细设计

Posted 尘埃未定

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了超级玛丽详细设计相关的知识,希望对你有一定的参考价值。

 

 

 课题名称:     超级玛丽小游戏开发          

  

 一、 课程设计的目的:

1、 通过本次课程设计,加深对数据结构这么课程的中基础理论的理解以及能够对一些常用数据结构的熟练应用,理论与实践相结合,达到学以致用的目的。

2、 通过小组形式一起开发,从中培养团结、合作、沟通、理解的精神。

二、 选择的课题:超级玛丽小游戏开发

 

 

 

 

三、 应用到的知识:

链表的操作、

win32 sdk基础、

DirectDraw基础、

基础物理力学、

初等数学中的向量学

 

 

 设计流程图:

 

 

 

 

 

 

四、 详细设计流程:

1、 定义一些用于判断游戏各种状态、和图片物品位置索引的枚举变量和结构体和一些宏常量:

其中枚举变量的有:

运动方向DIRECTION、

动作状态ACTION、

怪的类型、

碰撞类型、

物质类型

结构体的有:

用于图片索引定位的结构体SPRITE_BM、

各个物块的边界信息结构体BOX、

用于分析碰撞结果的结构体COLLISION

一些宏、常量:

游戏起始位置:PLAYER_STARTX PLAYER_STARTY

重力加速度:GRAVITY

屏幕长和宽:SCREEN_W SCREEN_H

瓷砖长和宽:TILE_W、TILE_H

 

2、设计基类:CSprite

属性:

类型m_type、

是否已死m_active、

横坐m_x、

纵坐标m_y、

宽m_width、

高m_height、

是否在地上m_onground、

图片张数m_nBitmaps、

图片帧计数m_count、

当前图片索引m_curBitmap、

图片索引m_sbm、

方向m_dir、

行为m_action(方向和行为用于索引图片和游戏逻辑判断)、

X轴速度m_xv、

Y轴速度m_yv、

X加速度m_xa、

Y加速度m_ya、

移动路程m_relSwitch

方法:

创建方法Create、

贴图索引BitBlt、

换帧方法AdvanceBitmap、

是否在地面上的检测方法CheckBottom、

改变方向ChangeDirection、

设置行为动作SetAction、

碰撞方法(通过行进路线采用向量法检测)Collide

虚方法有:获取边界信息方法GetBounds、移动方法Move、显示方法Draw

 

2、 设计派生类:

金币类CCoin、

子弹类CBullet、

爆炸类CExplode、

蘑菇类CMushroom、

玩家类CPlayer

实现各自相应的虚方法、并为玩家类添加以下方法:

变大GrowUp、

变小Shrink、

防御Shield、

撞击BeenHit、

发弹的方法Fire

3、 设计链表类:CSpriteList

存储节点类型为基类CSprite、

方法有:

构造方法、

添加方法Add、

删除方法Delete、

清空方法Destroy

4、 定义全局变量:

CBitmap类型的有:

g_bmTile、g_bmPlayer、g_bmGhost、g_bmTurtle、g_bmCoin、g_bmMushroom、g_bmDebris、g_bmBullet、g_bmExplode、g_bmFlower

   CPlane类型的有:g_plane

   CPlayer类型的有:g_player

   CSpriteList类的有:g_sprites

   输入信息类:g_input

   其它逻辑判断的全局变量:

是否暂停g_bPaused

是否显示状态信息g_bShowStats

等级g_level、

背景是否为黑夜g_darken

5、 定义全局方法:

添加金币方法AddCoin

添加怪的方法AddGhost

添加乌龟的方法AddTurtle

 

五、 技术要点:

1、 链表操作:

建立(添加)

a、  头指针m_head = NULL

b、 循环以下步骤:

(1)、新建节点:

(2)、添加到链表中:

 

 删除:

(1) 双指针遍历找到要删除的节点

(2) 前指针pre所指的节点指针域跨过要删除的节点指向下个节点

(若是首元节点删除则直接使用头指针指向下个节点即可)

 

 

 

3、物理模型之重力加速度

简单来说,重力加速度就是物体因受到重力的影响而产生的一种向下的加速度,如下图所示:

 

 

这种会令物体加速往下掉的加速度是因为重力而产生的,所以在物理上称这种加速度为“重力加速度”,它是一个常量。

如同前面所说的一样,物体在运动时,我们要为其加上一个重力加速度常量,如下所示:

x=x+ =+ y=y+

X方向速度常量,Y方向速度常量;为的速度常量。

这样我们就能够更加真实地表现物体由高空中往下掉的视觉效果了。

 

 

 

 

结束语:通过这次课程设计,使我充分的了解了数据结构的理论与实践相结合的重要性,在充分的理论基础上必须有实际上的应用,才能灵活应用课堂上所学的理论知识。我们不仅能够把以前所学的知识联系起来,并且学会了一些新的知识。虽然我们小组的分工明确,但是每一个人对设计的各个阶段都相当的了解。

此次的课程设计中给我体会最深的是我们的协作关系。我们是一个整体,通过互相学习,互相帮助,翻阅大量资料完成了这次有意义的超级玛丽游戏设计。不仅增强了我们彼此之间的友谊,更让我们了解到团体力量的伟大。

在本系统的开发过程中,在知识、经验方面都存在着不足。今后会通过我们的努力进一步完善超级玛丽游戏。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

以上是关于超级玛丽详细设计的主要内容,如果未能解决你的问题,请参考以下文章

阿里P8面试官:如何设计一个扛住千万级并发的架构(超级详细)-续

JAVA 实现《超级玛丽升级版》游戏

史上超级详细:java程序设计第三版课后答案

教程 | 超级详细的sketch超写实教程

简化分支判断的设计模式

阿里P8面试官:如何设计一个扛住千万级并发的架构(超级详细)