音游重写计划

本篇文档为接下来的重写做准备

界面(采用 WPF)

  • 歌曲选择(同时播放对应音乐) => 开始游戏
  • 设置(按键绑定,音量调节,自定义背景皮肤)
  • 歌曲和铺面导入和删除
  • 退出游戏

游戏主体部分

  • 包含游戏信息的各种类,游戏开始时接收参数,后续绘制画面则根据接收参数决定,满足自定义效果。
  • 考虑使用 wpf media 微软参考文档有一个计时器,获取时为毫秒单位,使用 QueryPerformance((Frequency, Counter)) 更新。
  • 用 list 保存 4 个轨道。
  • 游戏开始后开启线程 while 循环不断检测和绘制。
  • 游戏正常结束时间以铺面文件为准。

检测流程

  1. 是否结束
  2. 是否暂停
  3. 更新计时器
  4. 检测判定
  5. 绘图

轨道

  • 轨道存储音符。

轨道状态

  • 轨道的按键检测有三个状态:激活,按住,松开。
  • 具体实现使用 keyPressStat 枚举类型。
  • 当对应的键按下时响应事件,对应的轨道的状态设置为激活,第一次判定扫描后将状态设置为按住。当对应键松开时,直接将状态设为松开。

轨道扫描

  • 调用每个轨道第一个 note 自己的判定方法,参数为当前时间和轨道按下状态。
  • 音符判定方法返回判定结果,由轨道处理。

音符

  • 内部存储判定所需信息。
  • 实现判断接口 interface,返回判定结果。

暂停

  • 对应键被按下后,调用函数停止音乐播放和游戏计时累加。游戏中的暂停设置被打开,此时游戏检测到暂停后不再对轨道进行检测,游戏画面绘制也暂停。

重新开始

  • 将所有状态清空,重新读取配置文件。

退出

  • 如果是主动选择,将游戏的退出设置打开。等游戏检测到时处理。
  • 退出时将所有资源释放。

奥托普雷

  • note 实现 auto() 函数返回必要信息。

回放功能

  • 记录玩家按下和松开按键时间

绘制

  • 需要信息:整个游戏。
  • 当检测到对应轨道不是松开时,绘制按下效果。有音符被击中则绘制打击动画。
  • 在游戏开始时创建绘制类,加载相关资源。
  • 绘制音符时对轨道扫描,针对不同音符绘制。
posted @ 2023-02-11 13:27  AsindE  阅读(42)  评论(1编辑  收藏  举报