主界面菜单包括四个选项
开始游戏:开始新游戏
读取存档:读取存档,继续游戏
游戏说明:显示游戏说明
退出游戏:中止退出
其他功能:
游戏中按下 m 键,自动存档
游戏中或者显示游戏说明时,按下 q 键,回到上级菜单
#include<iostream>
#include<cmath>
#include<stdlib.h>
#include<iomanip>
#include<cstdio>
#include<cstring>
#include<conio.h>
#include<windows.h>
#include<fstream>
using namespace std;
const int menumax=15;
const int showwidth=15;
void menu_show(char menu[][menumax],int n,char *arrow,int sel)
{
char s[menumax];
system("cls");
for (int i=0;i<n;i++)
{
if(i==sel)
{
strcpy(s,arrow);
strcat(s,menu[i]);
cout<<right<<setw(showwidth)<<s<<endl;
}
else
cout<<right<<setw(showwidth)<<menu[i]<<endl;
}
}//定义方向
int youxishuoming()
{
system("cls");
cout<<"自动走迷宫的游戏说明:"<<endl;
cout<<"w向上走;"<<endl;
cout<<"a向左走;"<<endl;
cout<<"s向下走;"<<endl;
cout<<"d向右走;"<<endl;
cout<<"走到E结束;"<<endl;
cout<<"注意多于23步游戏失败!"; //游戏说明
while(1)
{
if (getch()=='q')
break;
}
return 0;
}
int game(int x,int y)
{
system("cls");
char a[9][10]={"*********","* * * *","*** * * E","*** * *",
"** * * *","*** ** *","*** * *","** *","*********"};//地图
a[x][y]='o';
for(int i=0;i<9;i++)
{
cout<<a[i]<<endl;
}//地图显示
fstream file;
while(1)
{
char d;
d=getch();
if(d=='w'&&a[x-1][y]!='*')
{
a[x][y]=' ';
a[x-1][y]='o';
x--;
}//输入w若不为墙向上移动
else if(d=='s'&&a[x+1][y]!='*')
{
a[x][y]=' ';
a[x+1][y]='o';
x++;
}//s——下
else if(d=='a'&&a[x][y-1]!='*')
{
a[x][y]=' ';
a[x][y-1]='o';
y--;
}//a——左
else if(d=='d'&&a[x][y+1]!='*')
{
a[x][y]=' ';
a[x][y+1]='o';
y++;
}//d——右
else if(d=='m')
{
fstream file;
file.open("save.dat",ios::binary|ios::out);
file.write((char*)(&x),sizeof(int));
file.write((char*)(&y),sizeof(int));
file.close();
}
else if (getch()=='q')
{
break;
}
system("cls");//每次刷新
for(int i=0;i<9;i++)
{
cout<<a[i]<<endl;
if(x==2&&y==8)//到达E成功
{
system("cls");
cout<<"成功到达!";
break;
}
}
}
return 0;
}
int main()
{
int x,y;
fstream file;
char menu[4][menumax]={ "开始游戏",
"读取存档",
"游戏说明",
"退出游戏"};//界面设计
char arrow[menumax]="-->";
int sel=0;
while(1)
{
menu_show(menu,4,arrow,sel);
char action;
action=getch();
if(action=='w'||action=='W'||action==72)
{
sel--;
if(sel<0)
sel=sel+4;
menu_show(menu,4,arrow,sel);
}
else if(action=='s'||action=='S'||action==80)
{
sel++;
if(sel>=4)
sel=sel-4;
menu_show(menu,4,arrow,sel);
}//进行选择选项
else if(action==13)//进入下级界面
{
switch(sel)
{
case 0:
{
system("cls");
x=1,y=1;
game(x,y);
break;
}
case 1:
{
file.open("save.dat",ios::in|ios::binary);
file.read((char*)(&x),sizeof(int));
file.read((char*)(&y),sizeof(int));
file.close();
game(x,y);
break;
}
case 2:
youxishuoming();
break;
case 3:
system("cls");
cout<<"游戏已退出!";
return 0;
}
}
}
}
作者只是对原始的游戏进行了简单包装,读者根据自己的设想进行编写