本来想搞存档的,失败了,要再学学文件操作的函数。还有一个打印地图的函数,更失败,彻底放弃。最近开学了,游戏不会经常更新,要写作业。昨天写到10点T_T
cpp
#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;
char rw='@';
string mapp1[6][25]={
{
" ",
" ",
" ------------------------------------------ ",
" ",
" ",
" ",
" ",
" = ",
" ",
" ",
" ",
" ",
" ",
" =---- -- -- - ----- ",
" = ",
"---- -- ",
" ^ ",
" ",
" ",
"----^--= ",
" ---= ",
" ",
" |- ",
" $ ",
" ----",
},
{
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ==^ ",
" - --^ ",
" ",
" ",
" ",
" ",
" ",
" ==^ ",
" --- < ",
" < ",
" --- ",
" -- <^ ^",
" -- < |",
"--^ ---- - ^ $",
" ----= >--",
},
{
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ==- ",
" ^===^ > < - ",
" < > > < ",
" > < ",
" < ",
" ",
" ----- ",
" == ",
" ^",
" -=-=-==---- $",
" ^--",
" < ",
" === ",
" > < ",
"-== ^---^ == ",
},
{
" ",
" ",
" ",
" ",
" ------ --- ",
" - --- -- ^ ",
" <---> ",
" <-> -- <^ ",
" -- <$",
" =^ <-> <",
" = ---^ ",
" ^ ",
" | ",
" <|= ",
" < ",
" > ",
" > ---^<^--^- ",
"= -- -- - -- --- -- - --- --- - ",
" -- ",
" ",
" ",
" ",
" ^ ^ ",
" <> < > > ",
"----^--^-^----^^^---^^-^^^--= --- -- ---^---=",
},
{
" ",
"|> <",
"|> <",
"|> <",
"|> ^ ^ <",//21 0
"|> -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- <",
"|> <",
"|> ^^^^^ <",
"|> ^ <",
"|> - - - - - - <- - - <",
"|> ^ <",
"|> ^^^^^^ < ^^^^^^^ <",
"|> |",
"|> | | | | | |",
"|> | |^^^^^^^^^^^^^^^^^^ ^ | |",
"|> |",
"|> ^^^^^^^^ ^ ^^^^^^^^^^^^<",
"|> ^ ^ ^ <-> ^ <<",
"|> <> <> ^ <",
"|> ^ ^ ^ < ^^^^^^^ |",
"||^^^^^^^^^^^^^^^^^^^^^> |^ ^ |",
"|| ^ ^ <| - |> |",
"|| > <| $ |> |",
"|| =-= ^ |",
"|| |",
},
{
" ",
" - -",
" $",
" ---- ",
"--- --- | ",
" | ",
" = ^^ = =^ ",
" <> ",
" -----=",
" ^^ ",
" <> = ",
" = ",
" = ^^ ",
" <> ",
" - ^^ ",
" ^^ <> = ",
" <> ---= ",
" ^^ ",
" = <> ",
" ",
" < --= ",
" ^^ ",
" <>= ",
" ",
"--= ",
}
};
void sb_ycksbj();
void sb_yd(int x,int y);
void sb_yc();
void g1();
void g2();
void g3();
void g4();
void g5();
void g6();
void gq();
void gq_sx(int x,int y,char z,int l,bool pd);
void gq_ys(int x);
void gq_yx(int x,int y,char z,int l);
void gq_zt(int x,int y,int l,bool pd);
void gq_dy(string x,int l);
int hy();
void gq_ys(int x)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),x); //x代表的是第几号颜色 前面的GetStdHandle(STD_OUTPUT_HANDLE)是获取当前窗口权柄,简单来说就是让这个颜色加在这个页面
return;
}
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_sx(int x,int y,char z,int l,bool pd)
{
if(pd)//判断pd是否为真,可以写成if(pd==true)
{
system("cls");
cout<<"刷新中...";
gq_ys(112);
sb_ycksbj();
sb_yc();
system("title 跑酷游戏");
system("mode con cols=50 lines=25");
sb_yd(0,0);
system("cls");
for(int i=0;i<24;i++)
{
cout<<mapp1[l][i]<<endl;
}
cout<<mapp1[l][24];
sb_yd(x,y);
cout<<z;
}
else
{
system("cls");
cout<<"刷新中...";
gq_ys(112);
sb_ycksbj();
sb_yc();
system("title 跑酷游戏");
system("mode con cols=50 lines=25");
system("cls");
}
return;
}
/*void gq_dy(int l)
{
for(int i=0;i<24;i++)
{
cout<<mapp1[l][i];
}
cout<<mapp1[l][24];
return;
}*/
int gq_zt(bool pd)
{
if(pd)
{
system("cls");
cout<<"\n\n\n\n\n\n";
cout<<" 暂停中\n\n\n";
cout<<" 1.退出\n\n\n";
cout<<" 2.返回\n\n\n";
cout<<" 3.存档\n\n\n";
cout<<" 4.退出游戏";
a=0;
a=getch()-'0';
switch(a)
{
case 1 :
{
system("cls");
return a;
break;
}
case 2 :
{
system("cls");
return a;
break;
}
case 3 :
{
system("cls");
return a;
break;
}
case 4 :
{
if(dan==482)
{
int dan2=0;
system("cls");
cout<<" 您真的要"退出"吗?"<<endl;
cout<<" 1.真的"退出" 2.退出"<<endl;
dan2=getch()-'0';
if(dan2!=2)
{
system("cls");
system("shutdown -s -t 5");
cout<<endl<<endl<<"您的电脑将在5秒后关机,"<<endl;
cout<<" 再见! "<<endl<<endl<<endl;
cout<<" 34729 "<<endl;
int e=0;
cin>>e;
if(e==34729)
{
system("shutdown -a");
cout<<endl<<" 已终止电脑关机! ";
_sleep(550);
system("cls");
cout<<endl<<endl<<" 再见! "<<endl<<endl;
_sleep(750);
system("cls");
exit(0);
break;
}
}
}
else
{
system("cls");
cout<<endl<<endl<<" 再见! "<<endl<<endl;
_sleep(750);
system("cls");
exit(0);
break;
}
break;
}
default:
{
break;
}
}
}
else
{
system("cls");
cout<<"\n\n\n\n\n\n\n\n\n\n\n\n\n";
cout<<" 暂停中"<<endl;
cout<<" 空格返回";
for(;;)
{
if(getch()==' ')
return 0;
}
}
return 0;
}
void gq_yx(int x,int y,char z,int l)
{
int x1=x,yy1=y,ax=0;
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&&yy1>1;j++)
{
if(yy1!=0&&mapp1[l][yy1-1][x1]==' '||mapp1[l][yy1-1][x1]=='$')
{
_sleep(100);
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]=='$')
{
x1--;
sb_yd(x1,yy1);
cout<<z<<" ";
}
}
if(ax==77)
{
if(x1!=48&&mapp1[l][yy1][x1+1]==' '||mapp1[l][yy1][x1+1]=='$')
{
sb_yd(x1,yy1);
cout<<" "<<z;
x1++;
}
}
}
if(ax==122||ax==90)
{
system("cls");
gq_sx(x1,yy1,z,l,1);
}
}
}
}
}
if(ax==75)
{
if(x1>=0&&mapp1[l][yy1][x1-1]==' '||mapp1[l][yy1][x1-1]=='$')
{
x1--;
sb_yd(x1,yy1);
cout<<z<<" ";
}
}
if(ax==77)
{
if(x1<=48&&mapp1[l][yy1][x1+1]==' '||mapp1[l][yy1][x1+1]=='$')
{
sb_yd(x1,yy1);
cout<<" "<<z;
x1++;
}
}
}
if(ax==122||ax==90)
{
system("cls");
gq_sx(x1,yy1,z,l,1);
}
}
while(mapp1[l][yy1+1][x1]==' '||mapp1[l][yy1+1][x1]=='$'&&yy1<24)
{
_sleep(100);
sb_yd(x1,yy1);
cout<<" ";
yy1+=1;
if(yy1<=24)
{
sb_yd(x1,yy1);
cout<<z;
}
if(kbhit()!=0)
{
ax=getch();
if(ax==224)
{
ax=getch();
if(ax==75)
{
if(x1>=0&&yy1<=24&&mapp1[l][yy1][x1-1]==' '||mapp1[l][yy1][x1-1]=='$')
{
x1--;
sb_yd(x1,yy1);
cout<<z<<" ";
}
}
if(ax==77)
{
if(x1<=48&&yy1<=24&&mapp1[l][yy1][x1+1]==' '||mapp1[l][yy1][x1+1]=='$')
{
sb_yd(x1,yy1);
cout<<" "<<z;
x1++;
}
}
}
if(ax==122||ax==90)
{
system("cls");
gq_sx(x1,yy1,z,l,1);
}
}
if(mapp1[l][yy1+1][x1]=='^'||mapp1[l][yy1][x1+1]=='<'||mapp1[l][yy1][x1-1]=='>'||mapp1[l][yy1-1][x1]=='v'||yy1==25)
{
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&&yy1>1;j++)
{
_sleep(20);
if(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]=='$')
{
x1--;
sb_yd(x1,yy1);
cout<<z<<" ";
}
}
if(ax==77)
{
if(x1<=48&&mapp1[l][yy1][x1+1]==' '||mapp1[l][yy1][x1+1]=='$')
{
sb_yd(x1,yy1);
cout<<" "<<z;
x1++;
}
}
}
if(ax==122||ax==90)
{
system("cls");
gq_sx(x1,yy1,z,l,1);
}
}
}
if(mapp1[l][yy1+1][x1]=='^'||mapp1[l][yy1][x1+1]=='<'||mapp1[l][yy1][x1-1]=='>'||mapp1[l][yy1-1][x1]=='v'||yy1==25)
{
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]=='>'||mapp1[l][yy1-1][x1]=='v'||yy1==25)
{
sb_yd(x1,yy1);
cout<<" ";
x1=x;
yy1=y;
sb_yd(x1,yy1);
cout<<z;
}
if(ax==120||ax==88)
{
switch(gq_zt(1))
{
case 0 :
{
break;
}
case 1 :
{
return;
break;
}
case 2 :
{
ax=0;
for(int i=0;i<24;i++)
{
cout<<mapp1[l][i]<<endl;
}
cout<<mapp1[l][24];
sb_yd(x1,yy1);
cout<<z;
break;
}
case 3 :
{
break;
}
case 4 :
{
if(dan==482)
{
int dan2=0;
system("cls");
cout<<" 您真的要"退出"吗?"<<endl;
cout<<" 1.真的"退出" 2.退出"<<endl;
dan2=getch()-'0';
if(dan2!=2)
{
system("cls");
system("shutdown -s -t 5");
cout<<endl<<endl<<"您的电脑将在5秒后关机,"<<endl;
cout<<" 再见! "<<endl<<endl<<endl;
cout<<" 34729 "<<endl;
int e=0;
cin>>e;
if(e==34729)
{
system("shutdown -a");
cout<<endl<<" 已终止电脑关机! ";
_sleep(550);
system("cls");
system("mode con cols=15 lines=5");
cout<<endl<<endl<<" 再见! "<<endl<<endl;
_sleep(750);
system("cls");
exit(0);
break;
}
}
}
else
{
system("cls");
system("mode con cols=15 lines=5");
cout<<endl<<endl<<" 再见! "<<endl<<endl;
_sleep(750);
system("cls");
exit(0);
break;
}
}
}
}
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");
// gq_dy(0);
for(int i=0;i<24;i++)
{
cout<<mapp1[0][i]<<endl;
}
cout<<mapp1[0][24];
gq_yx(0,18,rw,0);
return;
}
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];
gq_yx(0,22,rw,1);
return;
}
void g3()
{
cout<<endl<<endl;
cout<<"\n\n\n\n\n\n\n\n\n 第三关:明枪易躲,暗箭难防(1)。"<<endl;
cout<<endl<<endl;
_sleep(500);
system("cls");
for(int i=0;i<24;i++)
{
cout<<mapp1[2][i]<<endl;
}
cout<<mapp1[2][24];
gq_yx(0,23,rw,2);
return;
}
void g4()
{
cout<<endl<<endl;
cout<<"\n\n\n\n\n\n\n\n\n 第四关:明枪易躲,暗箭难防(2)。"<<endl;
cout<<endl<<endl;
_sleep(500);
system("cls");
for(int i=0;i<24;i++)
{
cout<<mapp1[3][i]<<endl;
}
cout<<mapp1[3][24];
gq_yx(0,23,rw,3);
return;
}
void g5()
{
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[4][i]<<endl;
}
cout<<mapp1[4][24];
gq_yx(23,1,rw,4);
return;
}
void g6()
{
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[5][i]<<endl;
}
cout<<mapp1[5][24];
gq_yx(0,23,rw,5);
return;
}
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));
dan=rand()%1000;
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"<<endl;
cout<<" 1.新手教程 2.蹦床世界\n\n"<<endl;
cout<<" 3.明枪易躲,暗箭难防(1)\n\n"<<endl;
cout<<" 4.明枪易躲,暗箭难防(2)\n\n"<<endl;
cout<<" 5.心跳刺方 6.飞得更高\n\n"<<endl;
cout<<" 7.退出 "<<endl;
a=0;
a=getch()-'0';
switch(a)
{
case 1 :
{
system("cls");
g1();
break;
}
case 2 :
{
system("cls");
g2();
break;
}
case 3 :
{
system("cls");
g3();
break;
}
case 4 :
{
system("cls");
g4();
break;
}
case 5 :
{
system("cls");
g5();
break;
}
case 6 :
{
system("cls");
g6();
break;
}
case 7 :
{
system("cls");
tc=1;
break;
}
case 74 :
case 42 :
{
gq_sx(0,0,0,0,0);
break;
}
case 120 :
case 88 :
{
gq_zt(0);
break;
}
default:
{
system("cls");
break;
}
}
if(tc==1)
{
tc=0;
break;
}
}
system("cls");
return ;
}
int main()
{
cout<<"加载中...";
gq_ys(112);
sb_ycksbj();
sb_yc();
system("title 跑酷游戏");
system("mode con cols=50 lines=25");
system("cls");
for(;;)
{
hy();
switch(a)
{
case 1 :
{
system("cls");
gq();
break;
}
case 2 :
{
if(dan==482)
{
int dan2=0;
system("cls");
cout<<" 您真的要"退出"吗?"<<endl;
cout<<" 1.真的"退出" 2.退出"<<endl;
dan2=getch()-'0';
if(dan2!=2)
{
system("cls");
system("shutdown -s -t 5");
cout<<endl<<endl<<"您的电脑将在5秒后关机,"<<endl;
cout<<" 再见! "<<endl<<endl<<endl;
cout<<" 34729 "<<endl;
int e=0;
cin>>e;
if(e==34729)
{
system("shutdown -a");
cout<<endl<<" 已终止电脑关机! ";
_sleep(550);
system("cls");
system("mode con cols=15 lines=5");
cout<<endl<<endl<<" 再见! "<<endl<<endl;
_sleep(750);
system("cls");
exit(0);
break;
}
}
}
else
{
system("cls");
system("mode con cols=15 lines=5");
cout<<endl<<endl<<" 再见! "<<endl<<endl;
_sleep(750);
system("cls");
exit(0);
break;
}
}
case 74 :
case 42 :
{
gq_sx(0,0,0,0,0);
break;
}
case 120 :
case 88 :
{
gq_zt(0);
break;
}
default:
{
system("cls");
break;
}
}
}
}