⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 0312890崔留强 可视化程序设计—《迷宫》.txt

📁 这是一个用VG++写的迷宫游戏的程序。
💻 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 + -