最近用c++制作了一个迷宫的小游戏。
代码、关数都不多,但是很好玩。有兴趣的小伙伴可以尝试一下。
废话不多说,直接上源码:
#include<bits/stdc++.h>
#include<windows.h>
#include<conio.h>
using namespace std;
const long long n=29,jg=25;
string p=" *!|-=.<^>1234567890@$%?&_~";
long long r=1;
char f='y';
void print(string a[n])
{
system("cls");
for(long long i=0;i<n;i++)
cout<<a[i]<<endl;
}
void tc()
{
system("cls");
cout<<"\n\n\n\n\n 欢迎下次再玩,拜拜!!!\n";
cout<<" 制作:饼干\n";
cout<<" (按空格结束)";
long long ok='\0';
while(ok=getch(),ok!=' ');
system("cls");
return ;
}
void hf()
{
char t='\0';
while(t!=' ')
{
system("cls");
cout<<"\n\n\n\n A D键换皮肤 空格确定\n\n";
cout<<"\n\n\n\n "<<p[r]<<"\n";
t=getch();
if(t=='a')r--;
else
if(t=='d')r++;
if(r<1)r=jg;
if(r>jg)r=1;
}
system("cls");
return ;
}
void sm()
{
system("cls");
cout<<"\n\n 说明:\n\n\n";
cout<<" 按空格开始游戏后\n";
cout<<" W\n";
cout<<" A S D\n";
cout<<" 移动\n";
cout<<" 按R键返回起点\n";
cout<<" 按P键返回主界面\n";
cout<<" 按Q键设立传送点\n";
cout<<" 按E键返回传送点\n";
cout<<" +号处为终点\n\n\n";
cout<<" 按空格继续···";
long long ok='\0';
while(ok=getch(),ok!=' ');
system("cls");
return ;
}
int main()
{
while(1)
{
long long xx=1,yy=1;
system("cls");
f='y';
cout<<"\n\n\n\n\n\n\n\n\n\n\n";
cout<<" 迷宫游戏\n";
cout<<" 按空格开始游戏\n";
cout<<" 按0退出游戏\n";
cout<<" 按1换皮肤\n";
cout<<" 按2游戏说明\n";
cout<<"\n\n\n\n\n\n\n";
cout<<" 制作:孙大帅哥";
long long ok=getch();
while(ok!='0'&&ok!='1'&&ok!='2'&&ok!=' ')ok=getch();
switch(ok)
{
case ' ':
break;
case '0':
tc();
return 0;
break;
case '1':
hf();
f='n';
break;
case '2':
sm();
f='n';
break;
}
while(f=='y')
{
system("cls");
string a[n];
long long x,y,qx,qy;
long long ch;
srand(time(0));
long long s=rand()%6+1;
switch(s)
{
case 1:
qx=1;
qy=1;
a[0]="###########";
a[1]="# # # #";
a[2]="# # # #";
a[3]="# ##### ###";
a[4]="# # ###+#";
a[5]="# # #";
a[6]="###########";
break;
case 2:
qx=8;
qy=12;
a[0]="####################";
a[1]="#+ # # #";
a[2]="# ## #### ### # #";
a[3]="# #### ##### #";
a[4]="### # # ## #";
a[5]="##### ########## # #";
a[6]="# ## ### ## #";
a[7]="## ### ### # ## ##";
a[8]="# # # #";
a[9]="####################";
break;
case 3:
qx=1;
qy=1;
a[0]="###################";
a[1]="# # # # # #";
a[2]="# # # # # # # # # #";
a[3]="# # # # # # # # # #";
a[4]="# # # # # # # # # #";
a[5]="# # # # # # # # # #";
a[6]="# # # # # # # # # #";
a[7]="# # # # # # # # # #";
a[8]="# # # # # # # # # #";
a[9]="# # # # # # # # # #";
a[10]="# # # # #+#";
a[11]="####################";
break;
case 4:
qx=1;
qy=1;
a[0]="########################################";
a[1]="# #";
a[2]="# #################################### #";
a[3]="# # # #";
a[4]="# # ###################### ##### #######";
a[5]="# # #+ # # # ### #";
a[6]="# # # # # ######### # #### ## #### ## #";
a[7]="# # # # # ## # ## ## # # #";
a[8]="# # # ### ## # # ########### ## ## # #";
a[9]="# # # # # # # # # # # # #";
a[10]="# # ### ###### ### # ######## ##### ## #";
a[11]="# # # # # # # #";
a[12]="# # # ######## ############## ##### # #";
a[13]="# # # # #";
a[14]="# # ################################## #";
a[15]="# # # #";
a[16]="# #################################### #";
a[17]="# #";
a[18]="########################################";
break;
case 5:
qx=1;
qy=1;
a[0]="########################################";
a[1]="# # #";
a[2]="# ########### ################# ###### #";
a[3]="# # # # # ## # #";
a[4]="# # # #### ## # ## # #### ##### ## # # #";
a[5]="# # # # # # # # # # # #";
a[6]="# # # #### ###### ############### # #";
a[7]="# # ## # # # # # #";
a[8]="# # #### ######## ################# # #";
a[9]="# ## # # # # ##### # # #";
a[10]="# ########## # # # ### # #";
a[11]="### # # # # ##### # # #";
a[12]="# ######################## # # # #";
a[13]="# # # # ## # ###";
a[14]="# ### #### ####### ########### #### ## #";
a[15]="# # # # +#";
a[16]="########################################";
break;
case 6:
qx=1;
qy=1;
a[0]="##################################################################################################################";
a[1]="# #";
a[2]="# # ############################################################################################################ #";
a[3]="# # ### ############# ### #";
a[4]="# ## ## ###### +# ######################################################################### # # ### # #";
a[5]="# ### # ################### # # # # # # # # # # #";
a[6]="# #### # ############################################################# # # # # # #";
a[7]="# ##################################### ################## ## # ##### # # #";
a[8]="# ###### # ##### ########## + ########################### ## ## # # #";
a[9]="# # ######### ############## ###### # ## # ##################### ############ ######### # #";
a[10]="# # ##### # ###### # # ####### ######## # ### # # #";
a[11]="# # # ###### # #### ##### ########## # # # ##### ############## ###################### # ###";
a[12]="# ##### # # ## # #### ## # ##### ############# ####### # # # # #";
a[13]="# # # # # ## # ## # ############ ## # # # # ############# ###### ################ # # #";
a[14]="# # # # ##### ## # ## ## # # # # ## # # # ###### # ######### # ############# ######## ### #";
a[15]="# # # # ## # # # # # # ##### # # # # ############### # # #";
a[16]="# ### ########## # # #################################### # ##################################### ############# #";
a[17]="# # # ## # #### #";
a[18]="# # ####################### ################################################################# ################## #";
a[19]="# # # +#";
a[20]="##################################################################################################################";
break;
}
xx=x=qx,yy=y=qy;
a[x][y]=p[r];
print(a);
while(a[x][y]!='+')
{
ch=getch();
if(ch=='q')
{
xx=x;
yy=y;
}
if(ch=='e')
{
a[x][y]=' ';
a[xx][yy]=p[r];
x=xx;
y=yy;
}
if(ch=='r')
{
a[x][y]=' ';
a[qx][qy]=p[r];
x=qx;
y=qy;
}
if(ch=='p')
{
f='n';
break;
}
if((ch=='a'&&a[x][y-1]=='+')||(ch=='d'&&a[x][y+1]=='+')||(ch=='s'&&a[x+1][y]=='+')||(ch=='w'&&a[x-1][y]=='+'))
{
break;
}
if(ch==27)break;
if(ch==97&&a[x][y-1]==' '||a[x][y-1]=='|')
{
a[x][y]=' ';
y--;
a[x][y]=p[r];
}
if(ch==100&&a[x][y+1]==' '||a[x][y+1]=='|')
{
a[x][y]=' ';
y++;
a[x][y]=p[r];
}
if(ch==115&&a[x+1][y]==' '||a[x+1][y]=='|')
{
a[x][y]=' ';
x++;
a[x][y]=p[r];
}
if(ch==119&&a[x-1][y]==' '||a[x-1][y]=='|')
{
a[x][y]=' ';
x--;
a[x][y]=p[r];
}
print(a);
}
system("cls");
if(f=='n')break;
cout<<"you win!!!"<<endl;
cout<<"按空格继续···";
ok='\0';
while(ok=getch(),ok!=' ');
system("cls");
cout<<"是否继续(y/n)";
while(f=getch(),f!='y'&&f!='n');
}
}
return 0;
}