最近在整自制游戏,然后发现每次选选项都要输入,想做一个不要显示出来的输入,就像一些游戏里面直接按下某某键,弹出某某画面的样子。(比如mc按下e键,出现工作台,按下esc键,出现菜单?)
下面是游戏代码:
#include<bits/stdc++.h>
#include<Windows.h>
using namespace std;
struct aka{//玩家信息
int iq;//智商
int eq;//情商
int xb;//性别
int wj=80;//死亡距离
int yq;
string name;
}a;
char ZZ;
void G_B(){//忘记是用来干嘛的了,好像也是颜色
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_CURSOR_INFO cursor_info = {1,0};
SetConsoleCursorInfo(hOut,&cursor_info);
}
int sj(int n,int m){//产生n~m间的随机数(包括m和n)
srand((unsigned) time(NULL));
int rand_num=rand();
int range=m-n+1;
int result=n+rand_num % range;
return result;
}
void SetFont(int size=30){//颜色真是好文明(没用过)
CONSOLE_FONT_INFOEX cfi;
cfi.cbSize=sizeof cfi;
cfi.nFont=0;
cfi.dwFontSize.X=0;
cfi.dwFontSize.Y=size;
cfi.FontFamily=FF_DONTCARE;
cfi.FontWeight=FW_NORMAL;
SetCurrentConsoleFontEx(GetStdHandle(STD_OUTPUT_HANDLE),FALSE,&cfi);
}
void S_CLS(){//清空当前屏幕
system("cls");
}
void S_SLEEP(int SUMBER_F_ONE){//等待 0.083为一帧,0.038好用!
Sleep(SUMBER_F_ONE);
}
string wa="";
void one_second1(){
wa="你:艹你妈的,老子不干了!图图图,图你大爷的!";
for(int i=0;i<wa.size();i++){
_sleep(0.038*1000);
cout<<wa[i];
}
cout<<endl;
wa="你:";
}
void one_first(){
_sleep(0.5*1000);
S_CLS();
_sleep(0.5*1000);
wa="你:啊,老板,您要哪个图,矢量图还是标量图!那什么老板您别着急!让我...";
for(int i=0;i<wa.size();i++){
_sleep(0.03*1000);
cout<<wa[i];
}
cout<<endl;
wa="老板:我说!我的图!我的图在哪!";
for(int i=0;i<wa.size();i++){
_sleep(0.03*1000);
cout<<wa[i];
}
cout<<endl;
wa="(听上去有点瘆人呢,老板桑的声音听上去像电视里面的大丧尸一样,没有理智了呢!)" ;
for(int i=0;i<wa.size();i++){
_sleep(0.03*1000);
cout<<wa[i];
}
cout<<endl;
}
void one(){
wa="这已经是你加班的第23天了......";
for(int i=0;i<wa.size();i++){
_sleep(0.038*1000);
cout<<wa[i];
}
cout<<endl<<endl;_sleep(0.38*1000);
wa="你:MD这个傻逼老板!特码的加班不给加班费!生产队的驴都比我休息得多吧!";
for(int i=0;i<wa.size();i++){
_sleep(0.038*1000);
cout<<wa[i];
}
cout<<endl;
_sleep(0.38*1000);
wa="(电话响了,你骂骂咧咧地接起了电话)";
for(int i=0;i<wa.size();i++){
_sleep(0.038*1000);
cout<<wa[i];
}
cout<<endl;
_sleep(0.38*1000);
wa="电话对面:图!我的图呢!我的图呢!";
for(int i=0;i<wa.size();i++){
_sleep(0.038*1000);
cout<<wa[i];
}
cout<<endl;
_sleep(0.1*1000);
wa="(你看了一眼,是老板的来电)";
for(int i=0;i<wa.size();i++){
_sleep(0.038*1000);
cout<<wa[i];
}
cout<<endl;
_sleep(0.083*1000);
wa="老板:我的图呢!我的图在哪!我的图……";
for(int i=0;i<wa.size();i++){
_sleep(0.038*1000);
cout<<wa[i];
}
_sleep(0.083*1000);
cout<<endl<<"此时你会选择回答:";
_sleep(0.083*1000);
cout<<endl;
cout<<"[A]为了不扣工资,勤勤恳恳 [B]脾气火爆,老子不干了 [C]什么都不说";
cout<<endl;
cin>>ZZ;
_sleep(0.1*1000);
if(ZZ=='A'||ZZ=='a'){
_sleep(0.1*1000);
one_first();
} else if(ZZ=='B'||ZZ=='b'){
if(a.yq>=90){
a.wj-=3;
one_second1();
}else if(a.yq>=60){
a.wj-=5;
one_second1();
}else if(a.yq>=15){
a.wj-=10;
}else {
a.wj-=15;
}
_sleep(0.1*1000);
}else{
}
}
int main(){
a.yq=sj(1,100);
//加载环节
_sleep(1*1000);
cout<<endl<<"正";_sleep(0.2*1000);cout<<"在";_sleep(0.23*1000);cout<<"加";_sleep(0.15*1000);
cout<<"载";_sleep(0.2*1000);cout<<"中...";_sleep(5*1000);cout<<endl<<endl;
S_CLS();
system("mode con cols=70 lines=30");
cout<<"检测到玩家登入,即将弹出《用户协议》3s";
_sleep(1*1000);
S_CLS();
cout<<"检测到玩家登入,即将弹出《用户协议》2s";
_sleep(1*1000);
S_CLS();
cout<<"检测到玩家登入,即将弹出《用户协议》1s";
_sleep(1*1000);
S_CLS();
cout<<" 《用户协议》" ;
cout<<endl<<" 因游戏运行中容易有玩家恶意卡bug,导致游戏不能顺利运行,所以游戏推出以下几项协议";
cout<<endl<<"1.请玩家做选择时,规规矩矩地输入选项序号,否则极有可能没有存档就直接退出游戏,后果 ";
cout<<endl<<" 自负!请不要直接尝试!";
cout<<endl<<"2.知识产权,未经允许,不可随意转载!";
cout<<endl<<"3.游戏不行请不要喷,转载要标明原出处,作者玻璃心,会骂人的。";
cout<<endl<<endl<<" 同意[Y] 不同意[N]";
if(A=='N'){
return 0;
} else{
S_CLS();
cout<<"用户同意,开始跳转游戏界面!";
G_B();
srand(time(NULL));
int NUMber_ONE_FIRST = rand()%50+1;
int i;
for(i=1;i<=NUMber_ONE_FIRST;i++){
cout<<"正在下载新资源……"<<i<<"%";
S_SLEEP(0.1);
S_CLS();
}
int NUMber_TWO_SECOND = rand()%20+i+1;
for(;i<=NUMber_TWO_SECOND;i++){
cout<<"正在下载新资源……"<<i<<"%";
S_SLEEP(3);
S_CLS();
}
int NUMber_THREE_THIRD = rand()%25+i+1;
for(;i<=NUMber_THREE_THIRD;i++){
cout<<"正在下载新资源……"<<i<<"%";
S_SLEEP(8);
S_CLS();
}
i++;
for(;i<=99;i++){
cout<<"正在下载新资源……"<<i<<"%";
S_SLEEP(20);
S_CLS();
}
cout<<"正在下载新资源……"<<99<<"%";
S_SLEEP(50);
S_CLS();
cout<<"正在下载新资源……"<<100<<"%";
S_SLEEP(1000);
S_CLS();
cout<<"加载成功!!!";
S_SLEEP(2000);
S_CLS();
}
//玩家信息载入
wa="请输入玩家名(暂时不支持中文系统):";
for(int i=0;i<wa.size();i++){
_sleep(0.038*1000);
cout<<wa[i];
}
cin>>a.name;
S_CLS();
cout<<"欢迎!玩家 "<<a.name<<" 进入游戏!" ;
_sleep(1*1000);
_sleep(0.75*1000);
S_CLS();
_sleep(3*1000);
cout<<endl<<endl;
cout<<"时间:午夜 运气:"<<a.yq;
cout<<endl<<endl;
one();//正式进入主线!
/*
S_CLS();
cout<<"游戏结束,你的人生还在继续!祝您生活愉快!"<<endl<<endl<<endl;
_sleep(3*1000);
*/
return 0;
}
发现全程都需要输入,无法感应,查了一个https://blog.csdn.net/m0_62645280/article/details/120802768?ops_request_misc=&request_id=&biz_id=102&utm_term=&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-5-120802768.142^v100^pc_search_result_base4&spm=1018.2226.3001.4187#define%20dn()%20((GetAsyncKeyStat&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-5-120802768.142^v100^pc_search_result_base4,但是完全不会用,感觉和我想要的效果不一样(想要注释),希望有人指点一下(可判断的)