|
基本项目实现:实现横版动作类过关游戏玩法
使用技术点:游戏框架、类的继承、派生、封装,AI,控件的创建、使用
使用心得:对类的继承、派生、封装有了一定的了解,对于游戏框架有了一定的认识
游戏开始场景: 输入:鼠标左键点击[开始]:进入游戏运行场景[说明]:进入游戏帮助场景,察看游戏玩法[排名]:进入游戏得分排名场景[退出]:退出游戏游戏说明场景: 输入:鼠标左键点击[返回]:返回主菜单游戏排名: 输入:鼠标左键点击[返回]:返回主菜单游戏运行场景: 输入: A、D方向键向左和向右,S键下蹲,空格键跳跃,K键格挡。 共3关, 每关分3段, 打完怪物移动进入下一段,第3关第3段打完后 进入BOSS关卡,完成后若通关时间小于排行榜内的时间,则输入名字进入排行榜,否则不输入名字。若人物死亡,进入结束场景,选择继续关卡或者返回主菜单。游戏结束场景: 输入:鼠标左键点[continue]:继续关卡[end]:返回主菜单 [是]:返回主菜单,存储名字 框架说明:
类:MemoryPool.h和MemoryPool.cpp内存池,用于分配内存,节约内存。UI.cpp和UI.h控件类的定义与声明,在本框架中,控件被抽象出来,并且是属于场景的,也就是说一个场景有一组属于自己的控件,本类包含多个虚函数,包括了响应输入与输出的函数,具体的控件只需从其派生类实现属于自己的输入和输出即可CScene.cpp和CScene.h场景类的定义与声明,本框架中,场景被抽象出来,一个游戏是由多个场景共同组成的,也就是说一个具体的游戏类中包含多个场景,本类是抽象类,只定义了场景的初始化、运行、销毁等接口,具体的场景只需从其派生类中实现这些接口即可ReadFile.cpp、ReadFile.cpp、WriteFile.cpp和WriteFile.h
文件读写类的声明和定义,非抽象类,需要读写文件只需定义类对象,再用对象引出相关函数即可。Matrix.h
矩阵变换的声明即其内联函数,若需要对图片进行旋转处理,只需要定义类对象并调用函数即可。
CPGameInput.cpp 、CPGameInput.h、GameInput.cpp和GameInput.h鼠标和键盘输入对声明和定义,本类实现了对标准键盘的每个键的状态获取方法,状态包括持续放开、当前放开、持续按下、当前按下这4中状态,以及得到当前光标在客户区的位置的方法。GameOutput.cpp和GameOutput.h渲染管理器类的定义与声明,本类的实现基于GDI,提供对图像的加载、释放和使用等功能,图像的普通绘制、精灵绘制、Alpha混合、Alpha混合颜色、缩放,绘制文字、画线条、画圆等功能。AudioManager.cpp、AudioManager.h和fmod.h音乐管理类的定义与声明, 本类的实现基于FMOD ,提供对音乐的加载、释放和使用等功能,多线程循环播放和单次播放。Game.cpp和Game.h游戏框架类,派生自框架类,包含了游戏类。实现了对框架的初始化,运行。在该类初始化中设置,游戏要用到的各种数据。
类:S4.cpp和S4.h游戏帮助场景类,用于查看游戏相关的玩法,有返回按钮控件。S1.cpp和S1.h游戏开始场景类,包含了该场景中需要用到的开始、退出、排名、帮助4个控件类。S5.cpp和S5.h 游戏排名场景类,用于查看当前排行榜,有返回控件。g1.cpp、g1.h、g12.cpp、g2.h、s2.cpp和s2.h
游戏场景类,分别是第一关、第二关、第三关的游戏场景,包含碰撞检测,怪物设置和出场动画等。Boss.cpp和Boss.h BOSS类,BOSS相关数据,逻辑(AI)在该类中。Enemy.cpp和Enemy.h 敌人类,将敌人等基础数据抽象出来,一个游戏有多个敌人,便于用循环等方式运行,只定义了敌人等状态设置和运行,需要在派生类中实现。Monster1.cpp、Monster1.h、Monster2.cpp、Monster2.h、Monster3.cpp、Monster3.h、Monster4.cpp和Monster4.h、 分别是怪物1、怪物2、怪物3、和怪物4的类的声明和定义,包含怪物的相关数据和逻辑(AI)。S3.cpp和s3.h 游戏结束场景类,包含了该场景需要用到的继续、结束游戏、输入名字3个控件。
金山快盘附件:战斗场景1.JPG(74.53KB)
|
|