社区讨论
关于我搞了个lj 5k音游打谱器 这件事
灌水区参与者 5已保存回复 11
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 11 条
- 当前快照
- 1 份
- 快照标识符
- @lo2yvjxg
- 此快照首次捕获于
- 2023/10/23 22:02 2 年前
- 此快照最后确认于
- 2023/10/23 22:02 2 年前
rt,求助一些神犇和音游苣佬修改意见
概念版,具体玩法是在导入本地的lj谱面文件并加载后按下键盘上的12345五个键打击音轨,偏要玩的话就凑合着玩吧:D
为了加速背景进程,加载可能要一段时间
写谱格式很简单,就是第一行 表示速度( )和拍数
接下来 行,每行三个数字 表示音高,常数(非0即可,我也不知道拿来干什么的)和该音符所在轨道。如果不想在此拍安置音符,三个 即可。
CPP#include <bits/stdc++.h>
#include <windows.h>
using namespace std;
#define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0)
struct node{
int a,b;
void clear(){
a=-1,b=-1;
}
};
string io;
node pz[1000][5];
string bgs[1000][22];
double score=0;
void mset(){
for(int i=0;i<1000;i++){
for(int j=0;j<5;j++){
pz[i][j].clear();
}
}
}
void outTEXT(string s){
if(s=="ENDL"){
cout << endl;
return;
}
for(int j=0;j<s.length();j++){
cout << s[j];
Sleep(10);
}
cout << " ";
}
void ld(int now,int all){
if(now+22>all){
for(int i=21;i>=0;i--){
if(now+i+1<=all){
bgs[now][i]="| | | | | |";
for(int k=0;k<50;k++){
if(k%10==0){
continue;
}
if(pz[now+i+1][k/10].a!=-1){
bgs[now][i][k]='-';
}
}
}else{
bgs[now][i]="| | | | | |";
}
}
}else{
for(int i=21;i>=0;i--){
bgs[now][i]="| | | | | |";
for(int k=0;k<50;k++){
if(k%10==0){
continue;
}
if(pz[now+i+1][k/10].a!=-1){
bgs[now][i][k]='-';
}
}
}
}
}
void plays(string x){
int a,b;
double pm=0;
cin >> a >> b;
for(int i=0;i<b;i++){
int c,d,e;
cin >> c >> d >> e;
if(c!=-1){
pz[i][e-1].a=c;
pz[i][e-1].b=d;
pm++;
}
}
for(int i=b-1;i>=0;i--){
cout << "loading background " << (100.00-(double)i/b*100) << "%";
ld(i,b);
system("cls");
}
for(int kk=1;kk<b;kk++){
system("cls");
for(int i=21;i>=0;i--){
cout << bgs[kk][i] << endl;
cout << "| | | | | |" << endl;
}
cout << "| line1 | line2 | line3 | line4 | line5 |" << endl;
for(char cc='1';cc<='5';cc++){
if(pz[kk][cc-'0'-1].a!=-1){
Beep(pz[kk][cc-'0'-1].a,300);
}
bool flag=0;
if(KEY_DOWN(cc)){
for(int j=kk-1;j<=kk+1 && j<b;j++){
if(flag){
break;
}
if(pz[j][cc-'0'-1].b!=-1){
cout << "PERFECT" << endl;
score+=100/pm;
pz[j][cc-'0'-1].b=-1;
flag=1;
break;
}
}
for(int j=kk+2;j<=kk+4 && j<b;j++){
if(flag){
break;
}
if(pz[j][cc-'0'-1].b!=-1){
cout << "GOOD" << endl;
score+=100/(pm*2);
pz[j][cc-'0'-1].b=-1;
flag=1;
break;
}
}
for(int j=kk+5;j<=kk+6 && j<b;j++){
if(flag){
break;
}
if(pz[j][cc-'0'-1].b!=-1){
cout << "BAD" << endl;
pz[j][cc-'0'-1].b=-1;
flag=1;
break;
}
}
}
}
for(int j=0;j<5;j++){
if(pz[kk-2][j].b!=-1){
cout << "MISS" << endl;
}
}
Sleep(a);
}
}
void singlst(){
/*
outTEXT("1.new");
outTEXT("song");
outTEXT("ENDL");
outTEXT("2.test");
outTEXT("song");
outTEXT("ENDL");
*/
}
void srt(){
/*
while(true){
if(KEY_DOWN('1')){
mset();
freopen("C:\\KLOCKA USERS\\new_song.txt","r",stdin);
plays("NS");
system("cls");
cout << "your sc is:" << (double)score << endl;
break;
}else if(KEY_DOWN('2')){
mset();
freopen("C:\\KLOCKA USERS\\test_song.txt","r",stdin);
plays("NS");
system("cls");
cout << "your sc is:" << (double)score << endl;
break;
}
}
*/
}
int main(){
outTEXT("Welcome");
outTEXT("to");
outTEXT("KLOCKA");
outTEXT("ENDL");
outTEXT("Press");
outTEXT("your");
outTEXT("username");
cin >> io;
system("cls");
outTEXT("hello");
outTEXT(io);
outTEXT(",");
outTEXT("here");
outTEXT("is");
outTEXT("the");
outTEXT("list");
outTEXT("ENDL");
singlst();
srt();
return 0;
}
回复
共 11 条回复,欢迎继续交流。
正在加载回复...