📄 0312890崔留强 可视化程序设计—《迷宫》.txt
字号:
//这是一个用C++编写的程序,目的是读入一个迷宫,找出其中的通道!
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
//构造一个数组来存储迷宫信息;
void makearray(char ** &p,int row,int col)
{
p=new char* [row];
for(int i=0;i<row;i++)
p[i]=new char [col];
}
//构造一个数组来实现路径的标记;
void moveforward(char ** &p,char point,int row,int col)
{
p[row][col]=point;
}
//构造一个函数来实现新一步的寻找;
bool takestep(char ** &p,int row,int col)
{
int step_row;
int step_col;
for(int i=0;i<4;i++)
{
switch(i)
{
case 0:{step_row=row-1;step_col=col;};//向上移动
break;
case 1:{step_row=row;step_col=col-1;};//向左移动
break;
case 2:{step_row=row+1;step_col=col;};//向下移动
break;
case 3:{step_row=row;step_col=col+1;};//向右移动
break;
default:break;
}
if(p[step_row][step_col]=='x')//当找到出口的时间返回真值
return true;
if(p[step_row][step_col]=='.')
{
moveforward(p,'*',step_row,step_col);//当找到一个空的节点的时间,把该节点置为“*”;
if(takestep(p,step_row,step_col)==false)//当该节点向下寻找受阻的时间,回溯到上一步。
moveforward(p,'.',step_row,step_col);
else return true;
}
if(i==3)
return false;
}
}
//主函数进行函数的调用
void main()
{
int choice;//进行maze#1和maze#2的选择
cout<<"有两个迷宫你可以选择,输入“1”你可以得到maze#1"
"输入“2”你可以得到maze#2"<<endl;
cin>>choice;
if(choice==1)
{
ifstream in("g:\\maze#1.txt");
string s;
int row,col;
char ** p;
getline(in,s);
row=(s[0]-48)*10+s[1]-48;
col=(s[5]-48)*10+s[6]-48;
cout<<row<<" * "<<col<<endl;
makearray(p,row,col);
for(int i=0;i<row;i++)
{
getline(in,s);
for(int j=0;j<col;j++)
p[i][j]=s[j];
}
int position[2];
for(i=0;i<row;i++)
for(int j=0;j<col;j++)
{
if(p[i][j]=='e')
{
position[0]=i;
position[1]=j;
}
}
takestep(p,position[0],position[1]);
for(i=0;i<row;i++)
{
for(int j=0;j<col;j++)
cout<<p[i][j];
cout<<endl;
}
}
if(choice==2)
{
ifstream in("g:\\maze#2.txt");
string s;
int row,col;
char ** p;
getline(in,s);
row=(s[0]-48)*10+s[1]-48;
col=(s[5]-48)*10+s[6]-48;
cout<<row<<" * "<<col<<endl;
makearray(p,row,col);
for(int i=0;i<row;i++)
{
getline(in,s);
for(int j=0;j<col;j++)
p[i][j]=s[j];
}
int position[2];
for(i=0;i<row;i++)
for(int j=0;j<col;j++)
{
if(p[i][j]=='e')
{
position[0]=i;
position[1]=j;
}
}
takestep(p,position[0],position[1]);
for(i=0;i<row;i++)
{
for(int j=0;j<col;j++)
cout<<p[i][j];
cout<<endl;
}
}
if(choice!=1&&choice!=2)
cout<<"你输入了一个不合法的数字。"<<endl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -