X5DIY / QQX5Tools

QQ炫舞手游工具箱,可以计算爆点、伸缩谱面等

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

QQ炫舞手游工具箱

本工具由萌泪编写,提供爆点计算、谱面伸缩等诸多实用功能。

历史背景

QQ炫舞手游出现后,排位玩家的最爱自然是精准的爆气表。 当时爆点都是大家手测的,歌曲有多,真的是耗时耗力还不准。

之后的某一天,朋友可达鸭问我,这个能不能机算而不是手测? 确实,作为一个程序猿,完全可以自己写一个程序来计算爆点! 那我为什么没想到呢?因为这是我尝试写的第一个java程序。 从这个程序我才理解了什么是面向对象,什么是面向过程。

当时官方将xml谱面文件压缩为xml.bytes格式,bytes文件再次压缩后放在安装包内。 经过不断研究,我找到了xml.bytes,并根据 QQX5FireTableGenerator 项目认识到bytes文件的本质,经过研究后成功写出了各个模式的转换方法。 通过这样的方式,我成功获取了排位歌曲谱面,剩下就是简单的计算爆点的算法了。 于是2019下半年,经过不断优化, qqx5-console 出炉了。 这是一个纯控制台程序,没有任何UI。

然而,天有不测风云,官方很快修上了这个漏洞,apk中再也没有与谱面相关的文件了。 没了谱面文件就没法机算爆点,萌泪爆气表也随之停更。

我猜测现在的谱面文件是即时下载的,所以如果您是对网络通信研究比较深刻的大佬, 希望能告知获取谱面文件的方式。联系方式:QQ605738729。

虽然爆气表无了,但爆点的算法依然会分享给任何想学习了解的人。 qqx5-console的计算结构略有混乱,包、类的划分也不尽如意,在这个程序中将会重写。 除此之外,自制谱有时会遇到需要更改bpm的情况,相关内容同样会写到本程序中。

我在刚接触图形界面时还没看到wpf,也没用过c#。 考虑到jfx画ui可以直接用写过的后端逻辑,所以决定第一个UI项目就是用jfx给qqx5-console增加图形界面。 那个项目也曾传到GitHub上,不过在发布本项目的时候,我就把它就删除了。 因为本项目的定位就是那个项目的优化版本,但是整体架构有很大区别,所以用了新的仓库。

尽管JavaFx有些小众,但我会完成它的。

运行相关

运行环境

JDK17,JavaFx17

本项目使用Maven配置JavaFx,并且使用模块化。

如何运行

使用maven指令中的javafx:run运行程序。

如何打包

说实话,我也不会。

JDK8之后的版本都难以直接用idea打包,即使用插件也是很复杂的方法。

对本项目而言,打包并非重点。

相关术语

爆气长度

爆气分为押爆和非押爆。 /**

  • 父类应在最大限度上,抽取出本质上共同的部分,比如按键分数。
  • 但是,分数还是有细微的误差。
  • 为此,我引入了 {@code mode},并重写 {@code getScore} 方法,避免了误差。
  • 用 {@link SetBasicInfo} 录入信息时,就已经得到了模式值。
  • 通过模式值来选择不同的方法,以达到正确录入信息的目的。
  • 同时,也会生成爆点描述。
  • 这样的话,在 {@code XMLInfo} 类中,只需直接调用这些信息。
  • -- 非押爆单排 --
  • 19.5拍爆气时长
  • 爆气开始或爆气结束的长条键都视作在爆气范围内
  • -- 押爆单排 --
  • 20拍爆气时长
  • 爆气开始的长条键而言,长条开头视作在爆气范围内,非长条开头视作在爆气范围外
  • 爆气结束的长条键都视作在爆气范围内
  • -- 超极限爆气 --
  • 20拍(无cool爆)至 21拍(有cool爆)爆气时长
  • 爆气开始或爆气结束的长条键都视作在爆气范围内
  • 技能为爆气时,爆气范围前后的单点也视作在爆气范围内,按照 cool 判计算
  • -- 非押爆双排 --
  • 38.5拍(存气状态)或 39拍(分开状态)爆气时长
  • 以非押爆单排数据为基础进行计算
  • 较为实用,一定程度上减小了延迟等因素的影响
  • -- 押爆双排 --
  • 39.5拍(存气状态)或 40拍(分开状态)爆气时长
  • 以押爆单排数据为基础进行计算
  • 理想状态,实际双排出现的可能性极低,仅做参考之用 */

About

QQ炫舞手游工具箱,可以计算爆点、伸缩谱面等


Languages

Language:Java 99.6%Language:CSS 0.4%