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

📄 simplegeneratemaze.cpp

📁 maze目录下包含了4个迷宫相关的源代码:简单的迷宫生成算法、复杂的迷宫生成算法、简单的迷宫搜索算法、复杂的迷宫搜索算法
💻 CPP
字号:
// SimpleGenerateMaze.cpp : Defines the entry point for the console application.
//
/************************** A* Algorithm Copyright**************************/
/*You can distributed this algorithm as you like only saving this declaration above*/
/********************Date: 2004.7.18    Author: caucy*************************/

#include "stdafx.h"
#include "stdlib.h"
#include "iostream.h"
#include "time.h"


#define SIZEX_MAZE 30
#define SIZEY_MAZE 40
int maze[SIZEX_MAZE][SIZEY_MAZE];

//出口点
#define EXIT_ROW SIZEX_MAZE-2
#define EXIT_COL SIZEY_MAZE-2


void GenerateMaze()
{
	//设置种子
	srand(time(NULL));

	int i,j;
	int k;
	//Step1:  初始设置迷宫为不可走通
	for(i=0;i<SIZEX_MAZE;i++)
		for(j=0;j<SIZEY_MAZE;j++)
			maze[i][j]=1;
	i=1;j=1;

	//Step2:  设置迷宫入口点在(1,1)位置
	maze[i][j]=0;

	//Step3:  探索一条通路出来
	while(i!=EXIT_ROW||j!=EXIT_COL)
	{
		//Step3.1:  如果到了行墙边,则沿着墙边打通墙
		if(i==EXIT_ROW)
		{
			while(j!=EXIT_COL)
				maze[i][++j]=0;
			break;
		}

		//Step3.2:  如果到了列墙边,则沿着墙边打通墙
		if(j==EXIT_COL)
		{
			while(i!=EXIT_ROW)
				maze[++i][j]=0;
			break;
		}

		//Step3.3:  产生一个随机运动的方向
		k=rand()%3;

		//打通向下方向的墙
		if(k==0)
		{
			maze[++i][j]=0;
			continue;
		}

		//打通向右方向的墙
		if(k==1)
		{
			maze[i][++j]=0;
			continue;
		}

		/*如果采用8连通的迷宫,则还需要加入右下方的通路

		//打通向右下方向的墙
		if(k==2)
		{
			maze[++i][++j]=0;
			continue;
		}

		*/
	}

	//Step4:  加入随机通路
	k=0;
	while(k<SIZEX_MAZE)
	{
		i=rand()%EXIT_ROW;
		j=rand()%EXIT_COL;
		maze[i][j]=0;
		k++;
	}
}
void ShowMaze()
{
	int i,j;
	for(i=0;i<SIZEX_MAZE;i++)
	{
		for(j=0;j<SIZEY_MAZE;j++)
		{
			cout<<maze[i][j];
		}
		cout<<endl;
	}
}
int main(int argc, char* argv[])
{
	GenerateMaze();
	ShowMaze();	
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -