更新了在关卡中的复位和地图的刷新'z'或'Z',存档还是没写出来,文件操作好难!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
#include<bits/stdc++.h>
#include<windows.h>
#include<conio.h>
#include<cstdio>
using namespace std;
int a,a1,b,b1,gb,c,d;
int cd1,cd2,tc;
int ax;
int dan=0;
//1.新手教程 2.蹦床世界 3.明枪易躲,暗箭难防 4.明枪易躲,暗箭难防(2) 5.简简单单(隐藏关卡解锁关) 6.刺刺世界(隐藏)
string mapp1[2][25]={{" "," "," "," "," "," "," "," "," "," "," "," "," ----- -- -- - ----- "," - ","---- -- "," "," "," ","----^--= "," ---= "," "," |- ", " $ "," ---- ","^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^",},{" "," "," "," "," "," "," "," "," "," ==^ "," - --^ "," "," "," "," "," "," ==^ "," --- < "," < "," --- ", " -- "," -- ^ ","--^ ---- - ^ $ ", " ----= >-- ","^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^",} };
void sb_ycksbj();void sb_yd(int x,int y);void sb_yc();void g1();void g2();void sb_ycksbj()
{HANDLE hStdin=GetStdHandle(STD_INPUT_HANDLE);DWORD mode;GetConsoleMode(hStdin,&mode);mode&=~ENABLE_QUICK_EDIT_MODE; //移除快速编辑模式mode&=~ENABLE_INSERT_MODE; //移除插入模式mode&=~ENABLE_MOUSE_INPUT;SetConsoleMode(hStdin, mode);
}
void sb_yd(int x,int y) //光标移动到x,y
{HANDLE handle=GetStdHandle(STD_OUTPUT_HANDLE);COORD pos;pos.X=x;pos.Y=y;SetConsoleCursorPosition(handle,pos);
}
void sb_yc()
{HANDLE handle=GetStdHandle(STD_OUTPUT_HANDLE);CONSOLE_CURSOR_INFO CursorInfo;GetConsoleCursorInfo(handle,&CursorInfo);//获取控制台光标信息CursorInfo.bVisible=false; //隐藏控制台光标SetConsoleCursorInfo(handle,&CursorInfo);//设置控制台光标状态
}
void gq_yx(int x,int y,char z,int l)
{int x1=x,yy1=y,ax;sb_yd(x1,yy1);cout<<z;for(;;){if(kbhit()!=0){ax=getch();if(ax==224){ax=getch();if(ax==72){for(int j=1;j<=4;j++){_sleep(100);if(yy1!=0&&mapp1[l][yy1-1][x1]==' '||mapp1[l][yy1-1][x1]=='$'&&mapp1[l][yy1-1][x1]!='|'){sb_yd(x1,yy1);cout<<" ";yy1--;sb_yd(x1,yy1);cout<<z;if(kbhit()!=0){ax=getch();if(ax==224){ax=getch();if(ax==75){if(x1!=0&&mapp1[l][yy1][x1-1]==' '||mapp1[l][yy1][x1-1]=='$'&&mapp1[l][yy1][x1-1]!='|'){x1--;sb_yd(x1,yy1);cout<<z<<" ";}}if(ax==77){if(x1!=49&&mapp1[l][yy1][x1+1]==' '||mapp1[l][yy1][x1+1]=='$'&&mapp1[l][yy1][x1+1]!='|'){sb_yd(x1,yy1);cout<<" "<<z;x1++;}}}if(ax==122||ax==90){system("cls");sb_yd(0,0);for(int i=0;i<24;i++){cout<<mapp1[l][i]<<endl;}cout<<mapp1[l][24];x1=x;yy1=y;sb_yd(x1,yy1);cout<<z;}} }}}if(ax==75){if(x1!=0&&mapp1[l][yy1][x1-1]==' '||mapp1[l][yy1][x1-1]=='$'&&mapp1[l][yy1][x1-1]!='|'){x1--;sb_yd(x1,yy1);cout<<z<<" ";}}if(ax==77){if(x1!=49&&mapp1[l][yy1][x1+1]==' '||mapp1[l][yy1][x1+1]=='$'&&mapp1[l][yy1][x1+1]!='|'){sb_yd(x1,yy1);cout<<" "<<z;x1++;}}}if(ax==122||ax==90){system("cls");sb_yd(0,0);for(int i=0;i<24;i++){cout<<mapp1[l][i]<<endl;}cout<<mapp1[l][24];x1=x;yy1=y;sb_yd(x1,yy1);cout<<z;}}while(mapp1[l][yy1+1][x1]==' '||mapp1[l][yy1+1][x1]=='$'){_sleep(100);sb_yd(x1,yy1);cout<<" ";yy1+=1;sb_yd(x1,yy1);cout<<z;if(kbhit()!=0){ax=getch();if(ax==224){ax=getch();if(ax==75){if(x1!=0&&mapp1[l][yy1][x1-1]==' '||mapp1[l][yy1][x1-1]=='$'&&mapp1[l][yy1][x1-1]!='|'){x1--;sb_yd(x1,yy1);cout<<z<<" ";}}if(ax==77){if(x1!=49&&mapp1[l][yy1][x1+1]==' '||mapp1[l][yy1][x1+1]=='$'&&mapp1[l][yy1][x1+1]!='|'){sb_yd(x1,yy1);cout<<" "<<z;x1++;}}}if(ax==122||ax==90){system("cls");sb_yd(0,0);for(int i=0;i<24;i++){cout<<mapp1[l][i]<<endl;}cout<<mapp1[l][24];x1=x;yy1=y;sb_yd(x1,yy1);cout<<z;}}if(mapp1[l][yy1+1][x1]=='^'||mapp1[l][yy1][x1+1]=='<'||mapp1[l][yy1][x1-1]=='>'){sb_yd(x1,yy1);cout<<" ";x1=x;yy1=y;sb_yd(x1,yy1);cout<<z;} } if(mapp1[l][yy1+1][x1]=='='){int jc=1;for(int j=1;j<=8;j++){if(mapp1[l][yy1-1][x1]==' '){_sleep(10);sb_yd(x1,yy1);cout<<" ";yy1--;sb_yd(x1,yy1);cout<<z;if(kbhit()!=0){ax=getch();if(ax==224){ax=getch();if(ax==75){if(x1!=0&&mapp1[l][yy1][x1-1]==' '||mapp1[l][yy1][x1-1]=='$'&&mapp1[l][yy1][x1-1]!='|'){x1--;sb_yd(x1,yy1);cout<<z<<" ";}}if(ax==77){if(x1!=49&&mapp1[l][yy1][x1+1]==' '||mapp1[l][yy1][x1+1]=='$'&&mapp1[l][yy1][x1+1]!='|'){sb_yd(x1,yy1);cout<<" "<<z;x1++;}}}if(ax==122||ax==90){system("cls");sb_yd(0,0);for(int i=0;i<24;i++){cout<<mapp1[l][i]<<endl;}cout<<mapp1[l][24];x1=x;yy1=y;sb_yd(x1,yy1);cout<<z;}} }if(mapp1[l][yy1+1][x1]=='^'||mapp1[l][yy1][x1+1]=='<'||mapp1[l][yy1][x1-1]=='>'){sb_yd(x1,yy1);cout<<" ";x1=x;yy1=y;sb_yd(x1,yy1);cout<<z;}} } if(mapp1[l][yy1+1][x1]=='^'||mapp1[l][yy1][x1+1]=='<'||mapp1[l][yy1][x1-1]=='>'){sb_yd(x1,yy1);cout<<" ";x1=x;yy1=y;sb_yd(x1,yy1);cout<<z;}if(mapp1[l][yy1][x1]=='$'){_sleep(10);system("cls");sb_yd(0,0);cout<<"你赢了!"<<endl;cout<<"按空格返回。";if(getch()==' '){system("cls");sb_yd(0,0);return;}}}
}
void g1()
{cout<<endl<<endl;cout<<"\n\n\n\n\n\n\n\n\n 第一关:新手教程。";cout<<endl<<endl;_sleep(500);system("cls");for(int i=0;i<24;i++){cout<<mapp1[0][i]<<endl;}cout<<mapp1[0][24];char c='@';gq_yx(0,17,c,0);
}
void g2()
{cout<<endl<<endl;cout<<"\n\n\n\n\n\n\n\n\n 第二关:蹦床世界。"<<endl; cout<<endl<<endl;_sleep(500);system("cls");for(int i=0;i<24;i++){cout<<mapp1[1][i]<<endl;}cout<<mapp1[1][24];char c='@';gq_yx(0,21,c,1);
}
int hy()
{if(c==0){cout<<"\n\n\n\n\n\n\n\n\n\n\n\n ============欢迎============ "<<endl;c++;_sleep(1000);srand(time(0));system("cls");}cout<<"\n\n\n\n\n\n\n 首页\n\n\n\n\n";cout<<" 1.开始游戏\n\n\n\n";cout<<" 2.退出";a=0;a=getch()-'0';return a;
}
void gq()
{ for(;;) {cout<<"\n\n\n\n\n\n 关卡\n\n\n\n\n"<<endl;cout<<" 1.新手教程 2.蹦床世界\n\n\n\n"<<endl; cout<<" 3.退出";a=getch()-'0';switch(a){case 1 :{system("cls");g1(); break; }case 2 :{system("cls");g2(); break; }case 3 :{system("cls");tc=1;break; }}if(tc==1){tc=0;break;}}system("cls");return ;
}
int main()
{sb_ycksbj();sb_yc();system("title 跑酷游戏");system("mode con cols=50 lines=25");for(;;){hy();if(a==1||a==2){if(a==1){system("cls");gq();}if(a==2){system("cls");cout<<endl<<endl<<" 再见! "<<endl<<endl;_sleep(750);system("cls");exit(0);}}else{system("cls");cout<<"\n\n\n\n\n\n\n\n\n\n\n\n 请输入正确的字符!!!";system("cls");continue;}}
}