原版视频のB站链接:https://www.bilibili.com/video/BV1Ex411m7R6?spm_id_from=333.337.search-card.all.click
emmm,平时比较喜欢打音游,在看到LeaF的单曲Aleph-0的BGA(可近似理解为MV吧)时突发奇想,用C++程序驱动做一个同样带劲的BGA会如何呢。
所以我用FL顺利获取了有关Aleph-0的部分节奏点。
6790开始
9340曲名
11650第一公式
13500第二公式
15400第三公式
17350第四公式
18340崩坏1
19400第五公式
21210第六公式
23210第七公式
25060第八公式
27100数字表 (前面的数字是歌曲开始的时间,这个比较简单,就是有点费命)
开始制作!
节奏问题我一开始使用clock()函数;程序开始运行时读一下时间,到特定点读一下时间,相减得t;当t到某个值时播放下一帧。
啊然后问题就来了:我要每时每刻都算一下当前程序的运行时间。所以我放弃了这个不好的方法,用Sleep等下一帧播放。大道至简
我想做的效果如下: 一个10*40的矩阵作为屏幕,一个数字1从屏幕顶端缓缓落下,在音乐大幅振动时干扰几下变成0的字样,那一整行从0向两边延伸出#########,再从两边收回,显示出Aleph-0.
搞到第一步就出事了。
源代码:
#include<bits/stdc++.h>
#include<conio.h>
#include<iostream>
#include<windows.h>
#include<mmsystem.h>
#include<time.h>
using namespace std;
long long mt,t,st;
int i;
int main()
{char sc[10][40]={0};//screen
for(int i=0;i<=9;i++)
for(int j=0;j<=40;j++)
sc[i][j]=' ';//定义
sc[0][28]='1';
for(i=0;i<=9;i++)
{puts(sc[i]);}//打印
Sleep(1700);//等一会
system("cls");
sc[0][28]=' ';
sc[1][28]='1';//重新绘制
for(i=0;i<=9;i++)
{puts(sc[i]);}//打印
Sleep(1700);
}
按道理讲,第一行,第29的位置应该出现1,持续1.7秒后清屏,在同一列下一行出现1才对。
however! 失败了,具体情况我嘴笨,说不好,如果有兴趣的话可以复制试试。 第一个问题就是解决如上未知bug.
第二个就是还原BGA中的公式,希望哪个大佬能提供较为独立的,相当高级的,能用键盘打出来放进程序的代码或公式。如果有兴趣或者有很强的创意的也可以来讨论一下。
原版视频のB站链接:https://www.bilibili.com/video/BV1Ex411m7R6?spm_id_from=333.337.search-card.all.click
谢谢!【合十】