c语言-哪位大神能帮忙解释一下这下面的迷宫随机生成函数吗?

问题描述

哪位大神能帮忙解释一下这下面的迷宫随机生成函数吗?
 void create(int xint y) //随机生成迷宫{    int c[4][2]={01100-1-10}; //四个方向    int ijt;        //将方向打乱    for(i=0;i<4;i++)    {        j=rand()%4;//随机生成函数,这里的作用是随机生成j        t=c[i][0];c[i][0]=c[j][0];c[j][0]=t;        t=c[i][1];c[i][1]=c[j][1];c[j][1]=t;    }    map[x][y]=Road;    for(i=0;i<4;i++)        if(map[x+2*c[i][0]][y+2*c[i][1]]==Wall)        {            map[x+c[i][0]][y+c[i][1]]=Road;            create(x+2*c[i][0]y+2*c[i][1]);        }}

看不太懂。

解决方案

 /// 随机生成x * y 的迷宫 void create(int xint y){    /// (01)(10)(0-1)(-10)四个初始方向    int c[4][2]={01100-1-10}; //四个方向    int ijt;    /// 将方向打乱    for(i=0;i<4;i++)    {        j=rand()%4;//随机生成函数,这里的作用是随机生成j                /// 将c[i][0]与c[j][0]进行交换        t=c[i][0];                c[i][0]=c[j][0];                c[j][0]=t;        /// 将c[i][1]与c[j][1]进行交换        t=c[i][1];                c[i][1]=c[j][1];                c[j][1]=t;    }        /// Warning: map Road未声明;        /// 设置map当前坐标x,y为路    map[x][y]=Road;    for(i=0;i<4;i++)        {            /// 如果map[x+2*c[i][0]][y+2c[i][1]]是墙        if(map[x+2*c[i][0]][y+2*c[i][1]]==Wall)        {                /// 设置map[x+c[i][0]][y+c[i][1]]为路            map[x+c[i][0]][y+c[i][1]]=Road;                        /// 递归地创建            create(x+2*c[i][0]y+2*c[i][1]);        }}递归分割法创建迷宫:就是把空间用十字分成四个子空间,然后在三面墙上挖洞(为了确保连通),之后对每个子空间继续做这件事直到空间不足以继续分割为止。

解决方案二:

 void create(int xint y) //随机生成迷宫{    int c[4][2]={01100-1-10}; //四个方向    int ijt;        //将方向打乱    for(i=0;i<4;i++)    {        j=rand()%4;//随机生成函数,这里的作用是随机生成j,0~3        t=c[i][0];c[i][0]=c[j][0];c[j][0]=t;//交换c[i][0]和c[j][0]        t=c[i][1];c[i][1]=c[j][1];c[j][1]=t;//交换c[i][1]和c[j][1]    }    map[x][y]=Road;//当前位置设为路    for(i=0;i<4;i++)//沿四个方向设置        if(map[x+2*c[i][0]][y+2*c[i][1]]==Wall)//沿c[i][0]、c[i][1]方向前2步如果是墙        {            map[x+c[i][0]][y+c[i][1]]=Road;//则在该方向前一步设为路            create(x+2*c[i][0]y+2*c[i][1]);//在该方向前两步继续生成地图        }}

解决方案三:

就是生成一个数组,然后利用rand函数生成一个随机数 把方向数组打乱了 最后看看你的Road和Wall定义的是什么 就知道具体的了
时间: 2016-04-14
Tags: c语言

c语言-哪位大神能帮忙解释一下这下面的迷宫随机生成函数吗?的相关文章

c++-哪位大神帮忙解释一下类成员函数后面加const什么意思

问题描述 哪位大神帮忙解释一下类成员函数后面加const什么意思 哪位大神帮忙解释一下类成员函数后面加const什么意思 尽量清晰点 谢谢大神 感觉c++好难的 附加问一句c语言数据结构c++应该怎么顺序来看这些书 解决方案 原回答中第二段代码的注释有误,应该是"常量成员函数"(提交后竟然不能再编辑修改了...). C++语言和数据结构可以同步学,数据结构中用到的语言特性并不多. 解决方案二: 函数加CONST 就是证明 这里面用到的数据成员 也都会按常量来处理,一些修改操作是不可行的

java-一段小小的代码看了一晚上了还是出不了结果,哪位大神能帮忙一下啊

问题描述 一段小小的代码看了一晚上了还是出不了结果,哪位大神能帮忙一下啊 package sjk; import java.sql.*; public class sjkText { public static void main(String[] args) { Connection ct=null; Statement sm=null; try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); ct=DriverManager.get

g++-急,哪位大神能帮忙,一个莫名其妙的错误!

问题描述 急,哪位大神能帮忙,一个莫名其妙的错误! #include <cstring>using namespace std; template <typename T>class tree_node_t{public:string &to_string(string *result int prefix = 0);void set_data(const T &data); protected:T m_data;};错误报告说:'string'不是一个类型名真的莫

string-关于java,有哪位大神能帮忙看这代码分别是什么意思吗?

问题描述 关于java,有哪位大神能帮忙看这代码分别是什么意思吗? case StreamTokenizer.TT_NUMBER: s = Double.toString(st.nval); break; case StreamTokenizer.TT_WORD: s = st.sval; // Already a String break; default: // single character in ttype s = String.valueOf((char)st.ttype); } i

求助,哪位大神能帮忙写个模拟登陆csdn的程序,我拿来做例子,研究httpclient模拟登陆,谢谢

问题描述 求助,哪位大神能帮忙写个模拟登陆csdn的程序,我拿来做例子,研究httpclient模拟登陆,谢谢 求助哪位大神能帮忙写个模拟登陆csdn的程序,我拿来做例子,研究httpclient模拟登陆,谢谢 解决方案 http://blog.csdn.net/njchenyi/article/details/38801287 解决方案二: 报错了....能直接发我个么..= =初学者,并不太懂,谢谢

arcgis engine-哪位大神能具体解释一些AE中创建泰森多边形这个函数的各个参数意义和怎么用

问题描述 哪位大神能具体解释一些AE中创建泰森多边形这个函数的各个参数意义和怎么用 void ConvertToVoronoiRegions(ESRI.ArcGIS.Geodatabase.IFeatureClass pFeatureClass , ESRI.ArcGIS.Geodatabase.ITinFilter pFilter , ESRI.ArcGIS.Geometry.IPolygon pClippingPolygon , string indexFieldName , string

小弟初来乍到 新手一枚 想请问众神点问题 希望众位大神能帮忙解决一下

问题描述 packagesystemZG;importjava.io.PrintWriter;importjava.io.StringWriter;importjava.sql.Connection;importjava.sql.DriverManager;//importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;//import

htmlcxx中css文件解析中yyparse有内存泄露,哪位大神能不能帮忙看一下

问题描述 htmlcxx中css文件解析中yyparse有内存泄露,哪位大神能不能帮忙看一下 使用最新版的htmlcxx0.85版,把内部的css解析部分抽出之后,检测出内存泄露

编程c语言-c中的null到底怎么理解?直接理解为0,可以吗,请各位大神帮忙解释

问题描述 c中的null到底怎么理解?直接理解为0,可以吗,请各位大神帮忙解释 小弟自学c语言以来,遇到各类问题,这个事比较难搞得,请各位帮忙 解决方案 首先请注意,需要大写NULL 其次,在绝大多数的系统上都可以理解为0(这货本来就是个宏定义嘛#define NULL ((void*)0)) 在绝大多数系统上,不存在变量的地址为0,因而0可以被安全地认为是一个不存在变量的地方,指向0的指针一定是个空指针 解决方案二: 不一定哦,你看 String str=null; 代表的是空值, Syste