예제 #1
0
    void GetSpeMapSetPos(List <string> speMapFXArr, string CMapLJFX, string cZXMapName, string newMapName)
    {
        for (int i = 0; i < speMapFXArr.Count; i++)
        {
            if (KeLianJieFX(speMapFXArr[i], CMapLJFX) != null)
            {
                //string _zb = GetZBByFX(cZXMapName,CMapLJFX);
                ////判断 其他方向没有 地图
                //if (!IsOtherFXHasNoMap(speMapFXArr, speMapFXArr[i],_zb))
                //{
                //    return;
                //}
                CreateMapImgByFX(cZXMapName, CMapLJFX, newMapName);
                return;
            }
        }
        //如果没有地方安置特殊数组
        maxI++;
        string _newMapName = "map_" + cMapNum + "-" + (maxI + 1);

        if (GlobalMapDate.IsSpeMapByName(_newMapName))
        {
            List <string> speMapFXList = GlobalMapDate.GetFXListByName(_newMapName);
            GetSpeMapSetPos(speMapFXList, CMapLJFX, cZXMapName, _newMapName);
        }
        else
        {
            CreateMapImgByFX(cZXMapName, CMapLJFX, _newMapName);
        }
    }
예제 #2
0
    GameObject GetGKImgAndPosition(string _name, float px = 0, float py = 0)
    {
        GameObject gkImg = GlobalTools.GetGameObjectByName("gkImg");

        gkImg.transform.parent   = _canva.transform;
        gkImg.transform.position = new Vector2(px, py);

        gkImg.name = _name;

        string _zb = GetCurrentMapZBByName(_name);

        if (GlobalMapDate.IsSpeMapByName(_name))
        {
            gkImg.GetComponent <gkImgTextTest>().GetText("<color=#ff1111>speMap</color>   " + _zb);
        }
        else
        {
            gkImg.GetComponent <gkImgTextTest>().GetText("<color=#000000>speMap</color>   " + _zb);
        }



        imgMapObjArr.Add(gkImg);

        return(gkImg);
    }
예제 #3
0
    void CreateMapByKyFXArr(List <string> tempKyFXArr, string cZXMapName)
    {
        tempSpeMapList.Clear();
        int createMapNums;

        for (int c = 0; c < tempKyFXArr.Count; c++)
        {
            maxI = GetMapZBArrMaxNum(mapZBArr);
            //maxI  取mapZBArr中的名字最大值
            createMapNums = maxI + 1;
            int nums = GetNotUseNums(mapZBArr);
            if (nums != 1)
            {
                createMapNums = nums;
            }
            //print(" ----------->中心地图 名字    "+ cZXMapName+ "     创建了几个分支   "+ tempKyFXArr.Count+"     当前生成分支方向 "+ tempKyFXArr[c]);
            //如果大于最大的  并且中心地图不是特殊地图  数组数  直接跳出  没有分支了    特殊地图除外
            if (createMapNums > MaxMapNums && !GlobalMapDate.IsSpeMapByName(cZXMapName))
            {
                return;
            }
            else
            {
                //if(createMapNums > MaxMapNums) print("中心地图是特殊地图 " + cZXMapName + "  最大nums    " + MaxMapNums + " createMapNums    " + createMapNums);
            }
            //maxI = theMapArr.Count;
            //createMapNums = maxI+1;
            //获得名字  先查找名字是否被占用
            string _newMapName = "map_" + cMapNum + "-" + createMapNums;

            //判断名字是否被占用?? 特殊地图会直接走完 不会超出数组长度 这里不需要判断 名字不会被占用?
            _newMapName = IsMapNameHasMapGetNewName(_newMapName);

            //如果是 特殊 数组 看看能不能连上 中心数组  不能的话怎么办?
            if (GlobalMapDate.IsSpeMapByName(_newMapName))
            {
                //print(" ********** 新创建的 分支 地图是 特殊地图 " + _newMapName);
                //获取 特殊 数组的 方向 数组
                //List<string> speMapFXList = GlobalMapDate.GetFXListByName(_newMapName);

                //只连特殊 数组了 可以 直接 return了
                tempSpeMapList.Add(_newMapName);
                //CreateSpeMap();

                //GetSpeMapSetPos(speMapFXList, tempKyFXArr[c], cZXMapName, _newMapName);
                continue;
            }

            //print("创建的 " + tempKyFXArr[c] + "分支 地图名字  " + _newMapName);
            //创建地图 生成名字 和坐标 存入两个数组
            CreateMapImgByFX(cZXMapName, tempKyFXArr[c], _newMapName);
        }

        //如果有特殊 数组  记录特殊数组 位置

        //if (IsTeShuMapLianzaiyiqi && tempSpeMapList.Count > 0)
        //{
        //    CreateSpeMap();
        //}
    }
예제 #4
0
 void CreateSpeMapByName(string speMapName)
 {
     //寻找适合位置
     //获取特殊地图 方向数组
     List <string> SpeMapFXArr = GlobalMapDate.GetFXListByName(speMapName);
     //1该方向上 有空位  2该空位 特殊地图的连接线可以连(先找特殊地图  普通地图 直接连   特殊地图的话看看是否能连 能连直接连  不能连就换位置)
     string mapName = FindLJSpeMapDeMap(SpeMapFXArr, speMapName);
 }
예제 #5
0
    void OnTriggerEnter2D(Collider2D Coll)
    {
        //print(Coll.tag + "  --  " + Coll.transform.tag);
        if (Coll.tag == "Player")
        {
            GetGC();
            //这里判断 是否要进随机的大地图  小地图

            //这里判断 地图类型 如果 特殊地图类型是 Boss  CD  或者JY   就改为 自动地图(自动地图的,特殊地图)

            //Boss 有boss名 直接用boss名 没有 直接随机  全局记录 当前关卡 有boss  过关再次进入 要删除boss

            //另外生成一个 特殊地图的 信息列表 来匹配 特殊地图 是否有  有的话生成 特殊地图
            //eg   12!boss^boss_test!db^2!qj^2!jqj^2!bg^2 等11!cundang    9!juqing^juqingjueseming

            print("***  ReMapName????? " + ReMapName + "  GoScreenName  " + GoScreenName);

            Globals.IsHitDoorStop = true;
            if (HitChangeGlobalMapType != 0)
            {
                Globals.mapTypeNums = HitChangeGlobalMapType;
            }
            GlobalMapDate.ClearGlobalCurrentMapMsg();

            if (ReMapName == "" && IsSpeMap(GoScreenName))
            {
                ReMapName = GlobalMapDate.CurrentSpelMapName;
                GlobalSetDate.instance.GetMapMsgByName(ReMapName, MenFX, DangQianMenWeizhi);
                //print("*** ReMapName "+ ReMapName);
            }
            else if (ReMapName != "")
            {
                print("说明是 从 特殊地图 跳到 随机里面   " + ReMapName + "  MenFX   " + MenFX);
                GlobalSetDate.instance.GetMapMsgByName(ReMapName, MenFX, DangQianMenWeizhi);
                //return;
            }
            else
            {
                GlobalSetDate.instance.GetInMenWeizhi(DangQianMenWeizhi);
            }



            if (Coll.transform.GetComponent <RoleDate>().isDie)
            {
                return;
            }
            ChangeScreen();
            Coll.GetComponent <GameBody>().GetStand();

            //查找地图数据

            //if (!IsHitGo) return;
        }
    }
예제 #6
0
    string IsMapNameHasMapGetNewName(string _mapName)
    {
        for (int i = 0; i < mapZBArr.Count; i++)
        {
            if (_mapName == mapZBArr[i].Split('!')[0] || GlobalMapDate.IsSpeMapByName(_mapName))
            {
                _mapName = _mapName.Split('-')[0] + "-" + (int.Parse(_mapName.Split('-')[1]) + 1);
                return(IsMapNameHasMapGetNewName(_mapName));
            }
        }

        return(_mapName);
    }
예제 #7
0
 string GetMapNameByZB(string zb)
 {
     for (int i = 0; i < mapZBArr.Count; i++)
     {
         if (mapZBArr[i].Split('!')[1] == zb)
         {
             //判断 如果是特殊地图
             if (GlobalMapDate.IsSpeMapByName(mapZBArr[i].Split('!')[0]))
             {
                 return(mapZBArr[i].Split('!')[0]);
             }
             return(mapZBArr[i].Split('!')[0]);
         }
     }
     return(null);
 }
예제 #8
0
 string IsSpeMapNewFZMapNameIsSpeName(string speFZMapName)
 {
     //判断名字是否被占用
     if (GlobalMapDate.IsSpeMapByName(speFZMapName))
     {
         if (!tempSpeMapList.Contains(speFZMapName))
         {
             tempSpeMapList.Add(speFZMapName);
         }
         speFZMapName = speFZMapName.Split('-')[0] + "-" + (int.Parse(speFZMapName.Split('-')[1]) + 1);
         if (GlobalMapDate.IsSpeMapByName(speFZMapName))
         {
             IsSpeMapNewFZMapNameIsSpeName(speFZMapName);
         }
     }
     speFZMapName = IsMapNameHasMapGetNewName(speFZMapName);
     return(speFZMapName);
 }
예제 #9
0
    //根据坐标和方向 获取改位置的 地图名字(用于 判断该方向上是否有地图)  返回特殊地图的名字和信息 还有方位
    string GetMapNameAndMsgByZBAndFX(string zb, string fx)
    {
        //string getMapName = "";
        string _zb = GetNewZBByFX(zb, fx);

        for (int i = 0; i < mapZBArr.Count; i++)
        {
            if (mapZBArr[i].Split('!')[1] == _zb)
            {
                //判断 如果是特殊地图
                if (GlobalMapDate.IsSpeMapByName(mapZBArr[i].Split('!')[0]))
                {
                    return(mapZBArr[i] + "=" + fx);
                }
            }
        }
        return(null);
    }
예제 #10
0
 string IsSpeMapAddMaxI(string newMapName)
 {
     //先判断 名字是否被占用
     newMapName = IsMapNameHasMapGetNewName(newMapName);
     if (GlobalMapDate.IsSpeMapByName(newMapName))
     {
         //要判断 数组中是否已经有该特殊数组了
         if (!tempSpeMapList.Contains(newMapName))
         {
             tempSpeMapList.Add(newMapName);
         }
         newMapName = newMapName.Split('-')[0] + "-" + (int.Parse(newMapName.Split('-')[1]) + 1);
         print("newMapName 1     " + newMapName);
         if (GlobalMapDate.IsSpeMapByName(newMapName))
         {
             print("特殊地图  " + newMapName);
             return(IsSpeMapAddMaxI(newMapName));
         }
     }
     //print("------生成的名字   "+newMapName);
     return(newMapName);
 }
예제 #11
0
    string FindLJSpeMapDeMap(List <string> SpeMapFXArr, string speMapName)
    {
        string findFX = "";

        //string findZB = "";
        for (int i = mapZBArr.Count - 1; i >= 0; i--)
        {
            for (int j = 0; j < SpeMapFXArr.Count; j++)
            {
                //寻找放置方向
                if (SpeMapFXArr[j] == "l")
                {
                    findFX = "r";
                }
                else if (SpeMapFXArr[j] == "d")
                {
                    findFX = "u";
                }
                else if (SpeMapFXArr[j] == "u")
                {
                    findFX = "d";
                }
                else if (SpeMapFXArr[j] == "r")
                {
                    findFX = "l";
                }

                string cMapName = mapZBArr[i].Split('!')[0];
                string _cMapZB  = mapZBArr[i].Split('!')[1];

                //如果是特殊地图就跳出当前循环
                if (GlobalMapDate.IsSpeMapByName(cMapName))
                {
                    break;
                }

                //根据 findFX 找到 适合的 地图  1.该方向上有空位
                if (!IsHasMap(findFX, cMapName))
                {
                    //这里 要找  这个坐标 特殊地图 另外几个方向上 是否 有地图  有的话要判断是否允许连接  能连就连接 不能就另外找地方连

                    print("  特殊地图 找到的 可以连接的 中心地图 名字 " + cMapName);
                    //获取这个空位坐标
                    string _zb = GetZBByFX(findFX, cMapName); //这个坐标上面没有地图  这个坐标就是特殊地图 选的位置
                    //2.空位上 特殊地图的方向 没有特殊地图
                    //特殊地图的方向数组
                    List <string> SpeMapFXList = GlobalMapDate.GetFXListByName(speMapName);
                    //查找方向上是否有    特殊地图 数组 有的话就跳过
                    if (IsFXHasSpeMap(_zb, SpeMapFXList))
                    {
                        continue;                                  //这里不能用break
                    }
                    //---------------------------------------------------------------找到可以放特殊地图的位置坐标


                    //找到院地图的OBJECY


                    //如果 周围 连线路上 没有其他特殊地图  就安插这个特殊地图

                    //获取当前地图对象 _currentMap  根据坐标获取 地图块对象
                    GameObject _currentMap = GetMapImgObjByZB(_cMapZB);
                    //创建地图的特殊地图块
                    GameObject speMapObj = CreateOutMap(_currentMap, findFX, speMapName, cMapName);
                    print("------------------------------------------------------------------------------坐标  " + _zb);
                    speMapObj.GetComponent <gkImgTextTest>().GetText("<color=#ff1111>speMap</color>   " + _zb);
                    //链接特殊地图块的各个方向
                    //获取 特殊地图方向数组
                    List <string> speMapFXArr = GlobalMapDate.GetFXListByName(speMapName);
                    //获取这个特殊地图已经连接的方向  这个方向要剔除
                    string hasLianJieFX = SpeMapFXArr[j];
                    //获取剩余方向数组  在上面创建分支 如果遇到特殊地图 就将特殊数组存进临时数组   (计数 如果在特殊数组后开始 就连接上了)

                    speMapFXArr = RemoveHasLJFXInFXList(speMapFXArr, hasLianJieFX);

                    CreateSpeMapFZByFXList(speMapFXArr, speMapName, speMapObj);
                    return(null);
                }
            }
        }
        return(null);
    }
예제 #12
0
    //创建一个大关卡的地图  map1_1,map1_2...
    public void CreateCustomAllMap()
    {
        //有几个小地图组成? 最少10个 +随机
        int n       = (int)UnityEngine.Random.Range(0, 4);
        int mapsNum = 6 + n;

        //查找 是否有特别地图 以及特别地图位置编号
        string[] smapArr;
        if (GlobalMapDate.IsHasSpecialMap())
        {
            smapArr = GlobalMapDate.GetCSpeicalMapNameArr();
            //print("特殊地图数组:  "+smapArr.Length);
            //if (smapArr.Length!= 0){
            //    foreach(string ns in smapArr)
            //    {
            //        print("------特殊地图名字:   "+ns);
            //    }
            //}
        }



        for (int i = 0; i < mapsNum; i++)
        {
            mapName  = "map_" + GlobalMapDate.CCustomStr;
            mapName += "-" + (i + 1);

            if (i == 0)
            {
                //首个地图
                currentMap = GetGKImgAndPosition(mapName, 400, 200);
                mapZBArr.Add(mapName + "!0#0" + "!400#200");
                theMapArr.Add(currentMap);
                currentMapNameZu = mapName;
                //创建分支
                CreateMapFenZhi(i + 1, mapName);
            }
            else if (i == mapsNum - 1)
            {
                //最后一个地图
                print("最后是哪个地图!!!!!!!!!!!!!!!!!!!!!!" + (i + 1));
            }
            else
            {
                currentMap = GetCurrentMapObjZBByName(mapName);
                if (currentMap == null)
                {
                    continue;
                }
                if (mapName != currentMap.name)
                {
                    print("数据错误!!!!!!!!!!!!!!!");
                    return;
                }
                currentMapNameZu += "|" + mapName;
                CreateMapFenZhi(i + 1, mapName);
            }
        }

        //生成地图 要带入 门的方向 信息  找相对方向的门   右进左出 左进右出   给选择 右的 是 进场触发 碰到切换场景 记录 门的朝向 再生成对向的门

        //先要有数据  再根据数据生成 地图  不要一上来就 生成地图
        print(" 地图坐标list 长度: " + mapZBArr.Count);


        print("  生成的地图数据  " + currentMapNameZu);
    }
예제 #13
0
    //创建地图的分支 上下左右
    void CreateMapFenZhi(int i, string cZXMapName)
    {
        List <string> tempKyFXArr = new List <string> {
        };
        bool isSepMap             = false;

        isSepMap = GlobalMapDate.IsSpeMapByName(cZXMapName);
        //判断是否是特殊地图
        if (isSepMap)
        {
            print("特殊地图名字------------------------------------------------------------->     " + cZXMapName);
            //tempKyFXArr = GlobalMapDate.GetFXListByName(cZXMapName);
            //判断各个方向是否有地图 有的话连接
            return;
        }
        else
        {
            //这个地图衍生几个方向 去探索 当i越大 多方向概率越小
            //10 15 20 25
            int      fxNums = 1;
            int      jl     = (int)UnityEngine.Random.Range(0, 100);
            string[] jvArr  = duozhiJL.Split('-');

            //扩展几个边界
            if (jl < int.Parse(jvArr[0]) * (100 - i) / 100)
            {
                fxNums = 3;
            }
            else if (jl < int.Parse(jvArr[1]) * (100 - i) / 100)
            {
                fxNums = 2;
            }



            //判断周围 看看是否坐标被占用 找出空位比较 空地
            List <string> fxArr = new List <string> {
                "l", "u", "d", "r"
            };
            int maxNum = 4;
            kyFXArr.Clear();
            for (int c = 0; c < fxArr.Count; c++)
            {
                //查询该坐标是否已经有地图
                if (IsHasMap(fxArr[c], cZXMapName))
                {
                    maxNum--;
                }
                else
                {
                    kyFXArr.Add(fxArr[c]);
                }
            }

            //print("剩余方向数maxNum:  " + maxNum + "  扩展方向数fxNums: " + fxNums);
            print("当前中心地图名字 " + cZXMapName);
            print("扩展数量------->fxNums:   " + fxNums);
            foreach (var stu in kyFXArr)
            {
                //print("  kyFXArr:   " + stu);
            }


            if (maxNum <= fxNums)
            {
                //如果最大的空位 小于扩展数  则直接用数组里面的位置来 生成地图
                tempKyFXArr = kyFXArr;
            }
            else
            {
                //方向的比重
                List <string> fxzhi = new List <string> {
                    "l-5", "d-10", "u-15", "r-70"
                };
                //随机选取方向 生成方向数组
                tempKyFXArr = ChoseFXArr(fxzhi, kyFXArr, fxNums);
            }



            foreach (var stu2 in tempKyFXArr)
            {
                print("  ----------------------------->   可以扩展的方向:   " + stu2);
            }
        }

        //获取最大地图的名字
        maxI = theMapArr.Count;
        //maxI = int.Parse(theMapArr[theMapArr.Count-1].name.Split('-')[1]);
        CreateMapByKyFXArr(tempKyFXArr, cZXMapName);
        return;
    }
예제 #14
0
    string FindLJSpeMapDeMap(List <string> _SpeMapFXArr, string speMapName)
    {
        string        findFX      = "";
        List <string> SpeMapFXArr = new List <string> {
        };

        //string findZB = "";
        //print("speMapName    "+ speMapName);
        for (int i = mapZBArr.Count - 1; i >= 0; i--)
        {
            SpeMapFXArr = _SpeMapFXArr;
            for (int j = SpeMapFXArr.Count - 1; j >= 0; j--)
            {
                //寻找放置方向
                if (SpeMapFXArr[j] == "l")
                {
                    findFX = "r";
                }
                else if (SpeMapFXArr[j] == "d")
                {
                    findFX = "u";
                }
                else if (SpeMapFXArr[j] == "u")
                {
                    findFX = "d";
                }
                else if (SpeMapFXArr[j] == "r")
                {
                    findFX = "l";
                }

                string cMapName = mapZBArr[i].Split('!')[0];
                string _cMapZB  = mapZBArr[i].Split('!')[1];

                //如果是特殊地图就跳出当前循环  特殊地图是不能增加连接的  因为 门数量固定了
                if (GlobalMapDate.IsSpeMapByName(cMapName))
                {
                    break;
                }

                //根据 findFX 找到 适合的 地图  1.该方向上有空位

                //1判断 该位置 是否有 地图了 2判断特殊 地图在该位置 各个方向 是否有地图


                if (!IsHasMap(findFX, cMapName))
                {
                    //这里 要找  这个坐标 特殊地图 另外几个方向上 是否 有地图    有的话就 continue



                    //print("  特殊地图 找到的 可以连接的 中心地图 名字 " + cMapName);
                    //获取这个空位坐标
                    string _zb = GetZBByFX(findFX, cMapName); //这个坐标上面没有地图  这个坐标就是特殊地图 选的位置


                    //除开一个 fx
                    List <string> shengyuFXArr = SpeMapFXArr;
                    //print("中心地图是 " + cMapName + "  找到的给特殊地图 " + speMapName + "可以用的 zb " + _zb + "    移除的方向是    " + SpeMapFXArr[j]);
                    shengyuFXArr.Remove(SpeMapFXArr[j]);
                    //print("剩余 几个方向: "+ shengyuFXArr.Count);

                    //foreach(string fx in shengyuFXArr)
                    //{
                    //    print(fx);
                    //}

                    if (shengyuFXArr.Count != 0 && IsZXMapFXHasMap(shengyuFXArr, _zb))
                    {
                        continue;
                    }


                    List <string> speMapFXArr = GlobalMapDate.GetFXListByName(speMapName);
                    //print(speMapName+"   分支数量  " +speMapFXArr.Count);

                    //print(cMapName+" fx "+ findFX+"  j "+j+"  length  "+ shengyuFXArr.Count +"   ??特殊地图名字   "+ speMapName);
                    //print("  ??  "+ speMapFXArr[j]);
                    //获取这个特殊地图已经连接的方向  这个方向要剔除
                    string hasLianJieFX = speMapFXArr[j];
                    //获取剩余方向数组  在上面创建分支 如果遇到特殊地图 就将特殊数组存进临时数组   (计数 如果在特殊数组后开始 就连接上了)
                    speMapFXArr.Remove(hasLianJieFX);


                    //获取中心地图信息
                    string zxMapMsg = GetMapMsgByName(cMapName);
                    //跟新 地图信息 中心地图 新加一个地图
                    GXZXMapMsg(zxMapMsg, findFX, speMapName);
                    //记录 特殊 地图信息
                    TianjiaNewMapMsgInMapArr(cMapName, findFX, speMapName, _zb);

                    //创建分支数据
                    CreateSpeMapFZByFXList(speMapFXArr, speMapName);

                    return(null);
                }
            }
        }
        return(null);
    }
예제 #15
0
    public List <string> GetMaps()
    {
        for (var i = 1; i <= MaxMapNums; i++)
        {
            cMapName = "map_" + cMapNum + "-" + i;

            string cMapMsg = cMapName;
            if (i == 1)
            {
                cMapMsg = cMapName + "!" + _qishiZB;
                mapZBArr.Add(cMapMsg);

                //保留方向 入场  根据角色进场来 保留  如果角色进来是 右进 这里保留左
                CreateMapFenZhi(i, cMapName);
            }
            else
            {
                if (GlobalMapDate.IsSpeMapByName(cMapName))
                {
                    CreateSpeMapByName(cMapName);
                }
                else
                {
                    if (i == mapZBArr.Count)
                    {
                        CreateMapFenZhi(i, cMapName);
                    }

                    //要判断 地图数组里面 是否已经有了 地图i
                    if (i == MaxMapNums)
                    {
                        //最后一个 地图
                        print("生成最后一个 地图");

                        //MapListMsgStr += "|" + cMapMsg;
                    }
                    else
                    {
                        //MapListMsgStr += "|"+cMapMsg;
                    }
                }
            }
        }



        //多关卡 取到新的关卡参数 开始新一轮循环
        //当前关卡有几个 分支  分支的 主要方向
        //如果只有一个分支 就直接在最后的 地图上 num最大值  否则在中间开始找 两边随机 避开特殊地图    是否有指定    没有指定的 单独做个 数组****



        //print(" mapZBArr  "+ mapZBArr.Count);

        //for(var s=0;s< mapZBArr.Count; s++)
        //{
        //    print(s+" :  "+mapZBArr[s]);
        //}

        Globals.mapZBArr = mapZBArr;

        //生成地图
        ShengChengImgMap();

        return(mapZBArr);
    }
예제 #16
0
    //创建地图的分支 上下左右
    void CreateMapFenZhi(int i, string cZXMapName)
    {
        List <string> tempKyFXArr = new List <string> {
        };
        bool isSepMap             = false;

        isSepMap = GlobalMapDate.IsSpeMapByName(cZXMapName);
        //判断是否是特殊地图
        if (isSepMap)
        {
            //print("特殊地图名字------------------------------------------------------------->     " + cZXMapName);
            //tempKyFXArr = GlobalMapDate.GetFXListByName(cZXMapName);
            //判断各个方向是否有地图 有的话连接
            kyFXArr.Clear();
            kyFXArr = GlobalMapDate.GetFXListByName(cZXMapName);
            print(kyFXArr.Count);
            //foreach(string fx in kyFXArr)
            //{
            //    print(" 特殊地图fx  "+fx);
            //}

            //获取 特殊地图的可用 方向
            for (int s = 0; s < kyFXArr.Count; s++)
            {
                if (!IsHasMap(kyFXArr[s], cZXMapName))
                {
                    tempKyFXArr.Add(kyFXArr[s]);
                }
            }


            if (tempKyFXArr.Count == 0)
            {
                return;
            }
        }
        else
        {
            if (i == 1)
            {
                //保留方向 和 出口方向
                tempKyFXArr.Add("r");
            }
            else
            {
                //这个地图衍生几个方向 去探索 当i越大 多方向概率越小
                //10 15 20 25
                int fxNums = MapFenZhiJL(i);


                //判断周围 看看是否坐标被占用 找出空位比较 空地
                List <string> fxArr = new List <string> {
                    "l", "u", "d", "r"
                };
                //List<string> fxArr = new List<string> { "l", "r" };
                int maxNum = 4;
                kyFXArr.Clear();
                for (int c = 0; c < fxArr.Count; c++)
                {
                    //查询该坐标是否已经有地图
                    if (IsHasMap(fxArr[c], cZXMapName))
                    {
                        maxNum--;
                    }
                    else
                    {
                        kyFXArr.Add(fxArr[c]);
                    }
                }

                if (maxNum <= fxNums)
                {
                    //如果最大的空位 小于扩展数  则直接用数组里面的位置来 生成地图
                    tempKyFXArr = kyFXArr;
                }
                else
                {
                    //方向的比重
                    //List<string> fxzhi = new List<string> { "l-5", "d-10", "u-15", "r-70" };
                    //随机选取方向 生成方向数组
                    tempKyFXArr = ChoseFXArr(FXBiZhi, kyFXArr, fxNums);
                }
            }
        }

        //获取最大地图的名字
        //maxI = theMapArr.Count;
        //maxI = int.Parse(theMapArr[theMapArr.Count-1].name.Split('-')[1]);
        CreateMapByKyFXArr(tempKyFXArr, cZXMapName);
        return;
    }