C++ 面向对象 KOF-格斗游戏设计与开发
KOF 格斗游戏开发
前言
这个程序是我在大二的上学期作为期末课程设计来完成的。
实现的功能包括场景的选择,背景音乐的播放,人物的移动,人物的打斗伤害检测,人物技能的释放等等。
效果展示
实现方式
- 基于MFC开发模式
通过对于KEY_DOWN按键事件和WM_PAINT刷新事件的自定义完成整个的游戏逻辑。
- 资源导入
由于是格斗类游戏,少不了大量的人物、背景、音乐素材的导入,所以在这里对于整个的代码进行了封装。
抽象出了一个资源类,用于动态的导入资源,减少工作量,代码逻辑也更加清晰。
- 游戏的流程控制
在整个的游戏当中,需要完成对于游戏场景的选择,游戏角色的选择,涉及场景的变换,这一过程通过变量GAME_STATUS来完成对于当前游戏状态的控制。
- 人物的动作
主要包括人物的移动和打斗动作,在这里对于游戏角色抽象出一个角色类,包括角色位置,角色的动作状态,角色的生命值等等。
当我们得知当前人物的动作是什么之后,我们就可以通过画出关键动作帧的方式来画出人物的动作,从而实现人物移动的效果。
由于自己在网上找的资源是jpg格式的,有上百张,自己转成png然后再去背景显然工作量就很离谱了,所以学习了一下python,一个脚本搞定
- 双缓存
在前期开发的时候,我都是直接在画布上操作这样子,但是造成的问题是会使得画面出现闪屏的问题,体验不佳,
所以在后面使用了双缓存技术,也就是每次将所有内容都放在一个位图上,最后将这个位图贴到画布,那么对于画布来说就只有一次操作
这就使得游戏流畅了很多。
存在的问题
- 文件分离性差
整个项目就直接一个CPP,可以说没有半点分离性可言,自己当时也想将一些内容分装到独立的文件
但是在实际操作的时候,出现了问题,编译一直过不去,最后实在是迫于无奈才将所有内容写入一个文件内。