简单的音乐游戏
2021-6-25 ~ 2021-10-7
(2)
介绍
这是一款十分简单的音乐游戏。
编译环境:Visual Studio 2019,EasyX_20210730
游戏说明
- 介绍:玩家需根据音乐节奏,控制方向块,接住不断靠近的 note。
- 控制:Q 逆时针旋转,W 后移,E 顺时针旋转,ESC 暂停游戏,具体可于游戏中进行设置。
- 若想游玩其他谱面可以访问 osu 或镜像站 v mirror (推荐 使用时可以下载其中的MINI谱面,减少不必要的空间占用)下载谱面 并将下载的 .osz 文件以 zip 格式打开并解压到 obm 文件夹中。
- 对于任何音乐游戏,包括该游戏都建议从最低难度开始。
项目共包含以下文件
源程序文件:
- main.cpp 主程序。
- Control.h/cpp 游戏控制部分 包含类 keycheck 单独按键控制,timer 计时器,FPSCounter 帧数计算。
- EasyGraphic.h/cpp 包含部分图形相关的函数,类 AlphaChange 图像渐变模块。
- EasyUI.h/cpp 包含类 BaseStuff 物件类的基类,StuffPoint 记录物件类指针与优先级的结构,ButtonStuff 按键物件类,StrStuff 字符串物件类,SlideStuff 进度条/滑动条物件类,Page 页面类。
- EasyUI_Block.h/cpp 对 EasyUI 的扩展,目前仅有类 ChooseBlock 选择界面物件组。
- Game.h/cpp 游戏主体部分的实现包含类 PlayerSet 保存设置信息,OsuBeatmap 保存谱面信息,GameEnvironment 游戏环境与实现游戏内容与界面,StartMenu 实现游戏开始前的界面,note 保存note信息的结构,以及其他有关函数。
- Music.h/cpp 包含音乐环境有关函数,MusicControl 音乐控制类。
- PageSet.h/cpp 包含类 GradienterPage 储存游戏全部页面信息,与页面初始化与卸载的有关函数。
游戏素材,谱面与其他文件:
- res 文件夹:界面素材。
- obm 文件夹:谱面。
- FMOD.dll,lib 与 inc 文件夹:音效引擎 FMOD 所需文件。
关于音乐播放的说明
鉴于 MCI 在部分电脑上无法正常播放音乐,且功能有限,该程序使用了 FMOD 作为音乐播放引擎,其功能强大,但目前缺少中文介绍的资料,我通过不断尝试与阅读英文文档实现了部分简单的应用,并用 MusicControl 类进行封装,使其更好理解,其他功能如 3D 效果,音效等还有待学习。
关于 x64 模式下的编译与Release版本的问题
关于 x64 模式下的编译与 Release 版本的问题,经过村长的建议 x64 模式的问题已解决,解决方案可能在下次作为教程说明。
若要将程序打包给一般用户,除必要的素材,配置文件外,Release 版本中还要有相应的 fmod.dll 文件。
关于新版本
鉴于上一版本游戏代码过于冗余且有不少问题,于是进行重写,新版本有以下改变
- 更灵活的界面设置,轨道长度与 note 大小可以调节
- note的速度与判定精度由于涉及难度将依据谱面文件中 OverallDifficulty 与 ApproachRate 调节
- 添加了命中与 miss 提示
- 添加了对准确度的计算与现实游戏进度
- 改善了页面
- 字符集改为 unicode
关于 EasyUI
为了方便未来及现在程序的页面编写,我在写该游戏前写了 EasyUI 这一基于 EasyX 的界面库。
由于编写时基本按照自己的思路来写,因此与主流界面库有一定偏差,优化也可能不完美,若无后续 BUG 计划编写教程
有兴趣可访问:https://github.com/tonyddg/EasyUI 若有有关疑问与希望参与 EasyUI 的后续编写可联系邮箱 799052200@qq.com
游戏图片
下载
Gridenter 2.1 (改正了按钮单词的拼写错误)
最后
程序还不是很完善,还将继续修改,如有 BUG,建议,欢迎指出。