Inheritance: MonoBehaviour
	public GameLevel(LevelDef _def) 
	{
		characterSpawners = new CharacterSpawners(_def.characterSpawners);

		Global.Server().postConnected += ListenConnectedToServer;
		Global.Server().postDisconnected += ListenDisconnectedFromServer;
	}
Exemple #2
0
 private void RaiseOnLevelLoaded(LevelDef level)
 {
     if (OnLevelLoaded != null)
     {
         OnLevelLoaded(level);
     }
 }
    public GameLevel(LevelDef _def)
    {
        characterSpawners = new CharacterSpawners(_def.characterSpawners);

        Global.Server().postConnected    += ListenConnectedToServer;
        Global.Server().postDisconnected += ListenDisconnectedFromServer;
    }
Exemple #4
0
    public static LevelDef FromDictionary(Dictionary <string, object> dictionary, int index)
    {
        LevelDef levelDef = new LevelDef();

        levelDef.index = index;
        levelDef.title = dictionary["title"] as string;
        levelDef.fen   = dictionary["fen"] as string;
        levelDef.board = new BoardDef(levelDef.fen);
        return(levelDef);
    }
Exemple #5
0
    public Level Init(LevelDef def, Block blockPrefab, Exit exitPrefab, Coin coinPrefab, Gem gemPrefab, int seed, Color[] colors)
    {
        Def = def;

        PRNG = new PRNG();

        BlockPrefab = blockPrefab;
        ExitPrefab  = exitPrefab;
        CoinPrefab  = coinPrefab;
        GemPrefab   = gemPrefab;
        Colors      = PRNG.Shuffle(colors, Def.ColorCount);

        Blocks = new Block[def.Width, def.Depth + 2];
        Blocks.Fill((x, y) => CreateBlock(x, y));

        Blocks.GetRow(0).ToList()
        .FindAll(block => block != null)
        .ForEach(block => {
            DestroyBlock(block, false);
        });

        CreateBottom();
        Exit = CreateExit();

        BlockGroupSystem = GetComponent <BlockGroupSystem>().Init(this);

        AddGemRandomlyInRows();

        Coins = new Coin[def.Width, def.Depth + 2];
        Coins.Fill(CreateCoin);
        Coins.ForEach(item => {
            if (!item)
            {
                return;
            }
            DestroyBlock(item.Cell, false);
        });

        return(this);
    }
Exemple #6
0
    // Loads LevelDefs from a JSON file
    private void Load()
    {
        TextAsset levelFile = Resources.Load <TextAsset>(GameConstants.LEVELS_JSON_PATH);

        if (levelFile != null)
        {
            Dictionary <string, object> levelData = MiniJSON.Json.Deserialize(levelFile.text) as Dictionary <string, object>;
            List <object> levelList = levelData[GameConstants.LEVELS_JSON_PAYLOAD_KEY] as List <object>;
            int           index     = 0;
            foreach (Dictionary <string, object> obj in levelList)
            {
                LevelDef levelDef = LevelDef.FromDictionary(obj, index++);
                levels.Add(levelDef);
                //Debug.Log(levelDef.board.ToString());
            }
            // Notify the rest of the game
            LoadLevelByIndex(currentLevelIndex);
        }
        else
        {
            Debug.LogError("[LevelManager] Couldn't load resource: levels.json");
        }
    }
Exemple #7
0
    Level CreateLevel(int index)
    {
        var entity = new GameObject($"Level-{index}");

        entity.transform.SetParent(transform);

        var level = entity.AddComponent <Level>()
                    .Init(
            LevelDef.CreateLevelDef(index, CoinDensity, Colors),
            BlockPrefab, ExitPrefab, CoinPrefab, GemPrefab, Seed, Colors
            );

        level.OnGroupDestroyed += blockCount => {
            PRNG.Shuffle(DigSounds, blockCount).ToList().ForEach(PlaySound);
            int sum = blockCount;
            for (int i = 0; i < blockCount; i++)
            {
                sum += i;
            }
            Purse.Increment(sum);
        };

        return(level);
    }
Exemple #8
0
    static LevelDefs()
    {
        Defs = new Dictionary <string, LevelDef>();
        Defs["Castle Exterior"] = new LevelDef()
        {
            Index       = 26,
            CameraStart = new Vector3(17.5f, 2.7f, 39.1f),
            RemoveMats  = new string[] {
                "2",
                "5",
                "18",
                "23-34",
                "36-43",
            }
        };
        Defs["Bob-omb Battlefield"] = new LevelDef()
        {
            Index       = 14,
            CameraStart = new Vector3(45.04f, 0.24f, 59.77f),
            RemoveMats  = new string[] {
                "13",
                "23-29",
                "31-40",
                "42-51",
                "54-56",
                "59-73",
            }
        };
        Defs["Whomp's Fortress"] = new LevelDef()
        {
            Index       = 36,
            CameraStart = new Vector3(-39.57f, 5.12f, 40.06f),
            RemoveMats  = new string[] {
                "14",
                "18",
                "22-34",
                "38-46",
                "48-62",
            }
        };
        Defs["Cool, Cool Mountain"] = new LevelDef()
        {
            Index       = 5,
            CameraStart = new Vector3(13.32f, 25.608f, -24.71f),
            RemoveMats  = new string[] {
                "16-43",
                "45-48",
                "50-59",
            }
        };
        Defs["Tiny-Huge Island (Huge)"] = new LevelDef()
        {
            Index       = 21,
            CameraStart = new Vector3(72.03f, -29.69f, 72.42f),
            RemoveMats  = new string[] {
                "12",
                "15-35",
                "37-42",
                "44-62",
                "65",
            }
        };
        Defs["Tiny-Huge Island (Tiny)"] = new LevelDef()
        {
            Index       = 22,
            CameraStart = new Vector3(16.58f, -7.42f, 18.45f),
            Scale       = 0.25f,
            RemoveMats  = new string[] {
                "12",
                "15-20",
                "23-54",
            }
        };

        /*Defs["Hazy Maze Cave"] = new LevelDef() {
         *  Index = 10,
         *  CameraStart = new Vector3(73.27f, 21.61f, 74.48f),
         *  Indoor = true,
         *  RemoveMats = new string[] {
         *      "38-62"
         *  }
         * };*/
        Defs["Snowman's Land"] = new LevelDef()
        {
            Index       = 15,
            CameraStart = new Vector3(-58.0f, 10.24f, 6.08f),
            RemoveMats  = new string[] {
                "12-13",
                "17-37",
                "39-57",
            }
        };
        Defs["Wet-Dry World"] = new LevelDef()
        {
            Index       = 17,
            CameraStart = new Vector3(-34.08f, 0.64f, 2.94f),
            Indoor      = true,
            LinkIndex   = 18,
            RemoveMats  = new string[] {
                "15-16",
                "21-28",
                "31-52",
                "55-59",
                "62-63",
            },
            LinkMats = new string[] {
                "17-18",
                "20-24",
                "27-40",
            },
        };

        /*Defs["Tall, Tall Mountain"] = new LevelDef() {
         *  Index = 46,
         *  Indoor = false,
         *  RemoveMats = new string[] {
         *      "6-11",
         *      "13-17",
         *      "20-23",
         *      "25-30",
         *      "32-41",
         *      "46-53",
         *  }
         * };*/
        Defs["Tick Tock Clock"] = new LevelDef()
        {
            Index       = 24,
            CameraStart = new Vector3(-13.78f, -48.22f, -0.13f),
            Indoor      = true,
            RemoveMats  = new string[] {
                "16-17",
                "20-21",
                "24-42",
                "44-53"
            }
        };
    }
Exemple #9
0
    private Material[] LoadLevel(Mesh mesh, LevelDef def)
    {
        int num = def.Index;

        if (linked)
        {
            num = def.LinkIndex;
        }

        List <Vector3>     vertices  = new List <Vector3>();
        List <Vector2>     uv        = new List <Vector2>();
        List <List <int> > triangles = new List <List <int> >();

        Dictionary <int, Material> materialdict = new Dictionary <int, Material>();
        List <Material>            materials    = new List <Material>();

        var path      = Application.dataPath + @"\..\M64_Levels";
        var transpath = Application.dataPath + @"\..\transparent.txt";

        var transparent = new HashSet <string>();

        using (StreamReader sr = new StreamReader(transpath, Encoding.ASCII)) {
            string line;
            while ((line = sr.ReadLine()) != null)
            {
                var c = line.Split(',');
                transparent.Add(c[0]);
            }
        }

        var removemats = new HashSet <int>();
        var mats       = def.RemoveMats;

        if (linked)
        {
            mats = def.LinkMats;
        }
        foreach (var m in mats)
        {
            if (m.IndexOf('-') > -1)
            {
                var c   = m.Split('-');
                var end = int.Parse(c[1]);

                for (var start = int.Parse(c[0]); start <= end; start++)
                {
                    removemats.Add(start);
                }
            }
            else
            {
                removemats.Add(int.Parse(m));
            }
        }

        using (StreamReader sr = new StreamReader(string.Format(@"{0}\{1}\model.obj", path, num))) {
            string     line;
            List <int> currentTris = null;
            while ((line = sr.ReadLine()) != null)
            {
                line = line.Trim();
                if (line.StartsWith("usemtl mat"))
                {
                    if (triangles.Count > 0 && triangles[triangles.Count - 1].Count == 0)
                    {
                        triangles.RemoveAt(triangles.Count - 1);
                        materials.RemoveAt(materials.Count - 1);
                    }

                    currentTris = new List <int>();

                    int matnum = int.Parse(line.Substring("usemtl mat".Length));

                    if (!removemats.Contains(matnum))
                    {
                        Material mat;
                        if (materialdict.ContainsKey(matnum))
                        {
                            mat = materialdict[matnum];
                        }
                        else
                        {
                            var tex = new Texture2D(0, 0, TextureFormat.ARGB32, false);

                            byte[] pngdata;
                            using (FileStream p = File.OpenRead(string.Format(@"{0}\{1}\{2}.png", path, num, matnum))) {
                                pngdata = new byte[p.Length];
                                p.Read(pngdata, 0, pngdata.Length);
                            }
                            tex.LoadImage(pngdata);

                            mat = new Material(baseMaterial);
                            if (transparent.Contains(string.Format(@"{0}\{1}.bmp", num, matnum)))
                            {
                                mat.shader = Shader.Find("Unlit/Transparent");
                            }
                            mat.mainTexture = tex;
                            mat.name        = matnum.ToString();
                        }
                        materials.Add(mat);

                        triangles.Add(currentTris);
                    }
                }
                else if (line.StartsWith("v "))
                {
                    var c = line.Substring("v ".Length).Split(' ');
                    vertices.Add(new Vector3(float.Parse(c[0]) * def.Scale, float.Parse(c[1]) * def.Scale, float.Parse(c[2]) * def.Scale));
                }
                else if (line.StartsWith("vt "))
                {
                    var c = line.Substring("vt ".Length).Split(' ');
                    uv.Add(new Vector2(float.Parse(c[0]), float.Parse(c[1])));
                }
                else if (line.StartsWith("f "))
                {
                    foreach (var t in line.Substring("f ".Length).Split(' '))
                    {
                        currentTris.Add(int.Parse(t.Split('/')[0]) - 1);
                    }
                }
            }
        }

        // now duplicate everything with reverse winding order, so we always show back faces
        var origlen = vertices.Count;

        for (var i = 0; i < origlen; i++)
        {
            vertices.Add(vertices[i]);
        }
        for (var i = 0; i < origlen; i++)
        {
            uv.Add(uv[i]);
        }
        foreach (var tris in triangles)
        {
            var trilen = tris.Count;
            for (var i = 0; i < trilen; i += 3)
            {
                tris.Add(tris[i] + origlen);
                tris.Add(tris[i + 2] + origlen);
                tris.Add(tris[i + 1] + origlen);
            }
        }

        mesh.subMeshCount = triangles.Count;
        mesh.vertices     = vertices.ToArray();
        mesh.uv           = uv.ToArray();
        for (var i = 0; i < triangles.Count; i++)
        {
            mesh.SetTriangles(triangles[i].ToArray(), i);
        }

        return(materials.ToArray());
    }
Exemple #10
0
 void OnLevelLoaded(LevelDef level)
 {
     _boardDef = level.board;
     // Raise an event for the board inside this level. This is a useful indirection because the undo system will use boards.
     RaiseOnBoardLoaded(level.board);
 }
Exemple #11
0
    private void LoadLevel()
    {
        LevelDef level = Levels[CurrentLevelIndex];

        LevelText.text       = $"{level.Number}/{Levels.Length}";
        DescriptionText.text = level.DescriptionText;

        Lovables = 0;

        string layout = level.LevelLayout;

        int row = 0;

        foreach (var line in layout.Split(new string[] { System.Environment.NewLine }, System.StringSplitOptions.None))
        {
            int col = 0;

            foreach (var letter in line)
            {
                switch (letter)
                {
                case 'W':
                    Instantiate(WallPrefab, new Vector3(col, -row, 0), Quaternion.identity, transform);
                    break;

                case 'F':
                    Instantiate(FloorPrefab, new Vector3(col, -row, 0), Quaternion.identity, transform);
                    break;

                case 'U':
                    Instantiate(FloorPrefab, new Vector3(col, -row, 0), Quaternion.identity, transform);

                    Lovable upLovable = Instantiate(LovablePrefab, new Vector3(col, -row, 0), Quaternion.identity, transform);
                    upLovable.SetRotation(Lovable.UpRotation);
                    Lovables++;
                    break;

                case 'R':
                    Instantiate(FloorPrefab, new Vector3(col, -row, 0), Quaternion.identity, transform);

                    Lovable rightLovable = Instantiate(LovablePrefab, new Vector3(col, -row, 0), Quaternion.identity, transform);
                    rightLovable.SetRotation(Lovable.RightRotation);
                    Lovables++;
                    break;

                case 'D':
                    Instantiate(FloorPrefab, new Vector3(col, -row, 0), Quaternion.identity, transform);

                    Lovable downLovable = Instantiate(LovablePrefab, new Vector3(col, -row, 0), Quaternion.identity, transform);
                    downLovable.SetRotation(Lovable.DownRotation);
                    Lovables++;
                    break;

                case 'L':
                    Instantiate(FloorPrefab, new Vector3(col, -row, 0), Quaternion.identity, transform);

                    Lovable leftLovable = Instantiate(LovablePrefab, new Vector3(col, -row, 0), Quaternion.identity, transform);
                    leftLovable.SetRotation(Lovable.LeftRotation);
                    Lovables++;
                    break;

                default:
                    break;
                }

                col++;
            }

            row++;
        }
    }
Exemple #12
0
 public void LoadLevel(LevelDef level)
 {
     if (level.sceneName != "") {
         Application.LoadLevel(level.sceneName);
     }
 }
            protected override void OnPaint(PaintEventArgs e)
            {
                int
                    iM = lstLD.Count - 1,
                    i;
                string s = "";
                LevelDef
                //ld,
                    l = lstLD[iM];

                base.OnPaint(e);

                //foreach (LevelDef ld in lstLD)
                //{
                //    if (nSigPrc <= ld.LVal)
                //    {
                //        l = ld;
                //        break;
                //    }
                //}

                for (i = 0; i < iM; i++)
                {
                    if (nSigPrc <= lstLD[i].LVal)
                    {
                        l = lstLD[i];
                        break;
                    }
                }


                // фон, соответствующий уровню заряда
                Color cB = l.LColB,
                      cF = l.LColF;

                if (tmBlink.Enabled == true)
                {
                    if (m_CurrBlinkCol != colP)
                    {// переключаемся на фон
                        cB = colP;
                        cF = colP;
                    }
                    m_CurrBlinkCol = cB;
                }

                e.Graphics.FillRectangle(new SolidBrush(cB), 0, 0, this.Width, this.Height);
                if (m_TitleMode != BITEXT.None)
                {
                    if (m_TitleMode == BITEXT.Percent)
                    {
                        s = nSigPrc.ToString() + "%";
                    }
                    else if (m_TitleMode == BITEXT.UserDef)
                    {
                        s = m_BIText;
                    }

                    e.Graphics.DrawString(s, this.Font, new SolidBrush(cF),
                                          (this.Width / 2 - (e.Graphics.MeasureString(s, Font).Width / 2.0F)),
                                          this.Height / 2 - (e.Graphics.MeasureString(s, Font).Height / 2.0F));
                }
            }
Exemple #14
0
 public static void InitLevel(LevelDef _def)
 {
     Instance.level = new GameLevel(_def);
 }
Exemple #15
0
    public CreateLevels()
    {
        _localLevels = new List <LevelDef> ();

        LevelDef                  levelDef;
        LevelSegment              segment;
        LevelElementQuestion      elementQuestion;
        LevelElementPillar        elementPillar;
        LevelElementCoinArrow     elementCoinArrow;
        LevelElementStop          elementStop;
        LevelElementEnemyMushroon enemyMushroom;

        // ************* 创建第一关 **************************************************************
        levelDef = new LevelDef();


        // ************* 第一段 ********************************

        segment = new LevelSegment();

        string[] segametData01 =
        {
            // 0
            //0        10	    20        30        40        50		60
            "0000000000000000000000000000000000000000000000000000000000000",
            "0000000000000000000000000000000000000000000000000000000000000",
            "0000000000000000000000000000000000000000000000000000000000000",
            "0000000000000000000000000000000000000000000000000000000000000",
            "0000000000000000000000000000000000000000000000000000000000000",
            //0        10	    20        30        40        50		60
            // 5
            //0        10	    20        30        40        50		60
            "0000000000000000000000000000000000000000000000000000000000000",
            "0000010011001101100110000001000000000000000000000000000000000",
            "0111011011011101110110111011000000000000000000000000000000000",
            "0110011001000000000100011011000000000000000000000000000000000",
            "0000000000000000000000000000000000000000000000000000000000000",
            //0        10	    20        30        40        50		60
            // 10
            //0        10	    20        30        40        50		60
            "0110011000110000001010001000000000000000000000000000000000001",
            "0111011101110111011011011100000000000000000000000000000000001",
            "0110001101100010001010000000000000000000000000000000000000001",
            "0000000000000000000000000000000000000000000000000000000000001",
            "0010001101110010001000110000000000000000000000000000000000001",
            //0        10	    20        30        40        50		60
            // 15
            //0        10	    20        30        40        50		60
            "0111011101110111011101110000000000000000000000000000000000001",
            "0111001100100110001100100000000000000000000000000000000000001",
            "0000000000000000000000000001111111000000000000000000000000001",
            "0011011001110111000000000001000000000000000000000000000000001",
            "0111011101110111001001100001099999990000000000000000000000001",
            //0        10	    20        30        40        50		60
            // 20
            //0        10	    20        30        40        50		60
            "0111011101100011011101110001000000000000000000000000000000001",
            "0000000000000000001000100001000000000000000000000000000000001",
            "0000000000000000000000000001009000000000000000000000000000001",
            "1111111111111111111111111HI1111111111111111111111111111111111",
            "1111111111111111111111111001111111111111111111111111111111111",
            //0        10	    20        30        40        50		60
            // 25
            //0        10	    20        30        40        50		60
            "11111111111111111111111111111111110001111111111111G1111111111",
            "1111111111111111111111111111111111000111111111111111110000111"
        };
        segment.data = segametData01;

        segment.width  = segment.data[0].Length;
        segment.height = segment.data.Length;

        segment.segmentStartPos = new MapPoint(0, 0);
        segment.startPoint      = new MapPoint(4, 22);
        segment.endPoint        = new MapPoint(60, 22);

        segment.lockScreenLeft   = true;
        segment.lockScreenRight  = false;
        segment.lockScreenTop    = true;
        segment.lockScreenBottom = true;
        segment.CalculateBorder();

        elementQuestion = new LevelElementQuestion(10, 17, LevelElementQuestion.Type_AwardStar, LevelElementQuestion.Sprite_Question);
        segment.elements.Add(elementQuestion);

        elementQuestion = new LevelElementQuestion(18, 17, LevelElementQuestion.Type_AwardLife, LevelElementQuestion.Sprite_Question);
        segment.elements.Add(elementQuestion);

        LevelElementEnemyPiranha elementPiranha = new LevelElementEnemyPiranha(20, 21, MapElement.Dir_Up, 0.5f, 3.0f, 4.0f);

        segment.elements.Add(elementPiranha);

        elementPiranha = new LevelElementEnemyPiranha(16, 17, MapElement.Dir_Right, 1.0f, 3.0f, 4.0f);
        segment.elements.Add(elementPiranha);

        elementPiranha = new LevelElementEnemyPiranha(24, 17, MapElement.Dir_Left, 1.5f, 4.0f, 3.0f);
        segment.elements.Add(elementPiranha);

        elementPiranha = new LevelElementEnemyPiranha(20, 13, MapElement.Dir_Down, 2.0f, 4.0f, 3.0f);
        segment.elements.Add(elementPiranha);



        elementCoinArrow = new LevelElementCoinArrow(24, 21, MapElement.Dir_Right);
        segment.elements.Add(elementCoinArrow);

        elementPillar = new LevelElementPillar(54, 19, MapElement.Dir_Up, 8);
        //segment.elements.Add (elementPillar);


        enemyMushroom = new LevelElementEnemyMushroon(23, 20, MapElement.Dir_Left, MapElement.Dir_Left, 0);
        segment.elements.Add(enemyMushroom);

        enemyMushroom = new LevelElementEnemyMushroon(25, 20, MapElement.Dir_Left, MapElement.Dir_Left, 0);
        segment.elements.Add(enemyMushroom);

        enemyMushroom = new LevelElementEnemyMushroon(27, 20, MapElement.Dir_Left, MapElement.Dir_Left, 0);
        segment.elements.Add(enemyMushroom);

        enemyMushroom = new LevelElementEnemyMushroon(29, 20, MapElement.Dir_Left, MapElement.Dir_Left, 0);
        segment.elements.Add(enemyMushroom);

        enemyMushroom = new LevelElementEnemyMushroon(31, 20, MapElement.Dir_Left, MapElement.Dir_Left, 0);
        segment.elements.Add(enemyMushroom);

        enemyMushroom = new LevelElementEnemyMushroon(33, 20, MapElement.Dir_Left, MapElement.Dir_Left, 0);
        segment.elements.Add(enemyMushroom);

        enemyMushroom = new LevelElementEnemyMushroon(35, 20, MapElement.Dir_Left, MapElement.Dir_Left, 0);
        segment.elements.Add(enemyMushroom);

        levelDef.segments.Add(segment);

        // ************* 第一段 ********************************

/*	    segment = new LevelSegment();
 *              string[] segametData01 = {
 *                 // 0
 *                 //0        10	    20        30        40        50		60
 *                      "00000000000000000000000000000000000000000000000000000000000000000",
 *                      "00000000000000000000000000000000000000000000000000000000000000000",
 *                      "00000000000000000000000000000000000000000000000000000000000000000",
 *                      "00000000000000000000000000000000000000000000000000000000000000000",
 *                      "00000000000000000000000000000000000000000000000000000000000000000",
 *                 //0        10	    20        30        40        50		60
 *         // 5
 *                 //0        10	    20        30        40        50		60
 *                      "00000000000000000000000000000000000000000000000000000000000000000",
 *                      "00000000000000000000000000000000000000000000000000000000000000000",
 *                      "00000000000000000000000000000000000000000000000000000000000000000",
 *                      "00000000000000000000000000000000000000000000000000000000000000000",
 *                      "00000000000000000000000000000000000900000000000000000000000000000",
 *                 //0        10	    20        30        40        50		60
 *                 // 10
 *                 //0        10	    20        30        40        50		60
 *                      "00000000000000000000000000000000000090000000000000000000000000000",
 *                      "00000000000000000000000000000000000009000000000000000000000000000",
 *                      "00000000000000000000000000000000000000010000000000000000000000000",
 *                      "00000000000000000000000000000000000000010000000000000000000000000",
 *                      "00000000000000000000000000000000000000010000000000000000000000000",
 *
 *                 //0        10	    20        30        40        50		60
 *                 // 15
 *                 //0        10	    20        30        40        50		60
 *                      "00000000000000000000000000000000000000000000000000000000000000000",
 *                      "00000000000000000000000000000000000009000000000000000000000000000",
 *                      "00000000000000000000000000000000000090000000000000000000000000000",
 *                      "00000000000000000000000000000000000090000000000000000000000000000",
 *                      "00000000000000000000000000000000000900000000000000000000000000000",
 *                 //0        10	    20        30        40        50		60
 *                 // 20
 *                 //0        10	    20        30        40        50		60
 *                      //"0000000666676666600000000000000900000000000000060000000000000",
 *                      "00000000000000000000009900000000000111111111100000000000000000000",
 *                      "00000000000000000000099111111111111111111111100000000000000000000",
 *                      "11111111111111111111111111111111111111111111111111111111110000111",
 *                      "11111111111111111111111111111111111111111111111111111111110000111",
 *                      "11111111111111111111111111111111111111111111111111111111110000111",
 *                 //0        10	    20        30        40        50		60
 *                 // 25
 *                 //0        10	    20        30        40        50		60
 *                      "11111111111111111111111111111111111111111111111111111111110000111",
 *                      "11111111111111111111111111111111111111111111111111111111110000111"
 *              };
 *              segment.data = segametData01;
 *
 *              segment.width = segment.data[0].Length;
 *              segment.height = segment.data.Length;
 *
 *              segment.segmentStartPos = new MapPoint (0, 0);
 *              segment.startPoint = new MapPoint (2, 21);
 *              segment.endPoint = new MapPoint (60, 22);
 *
 *              segment.lockScreenLeft = true;
 *              segment.lockScreenRight = false;
 *              segment.lockScreenTop = true;
 *              segment.lockScreenBottom = true;
 *              segment.CalculateBorder ();
 *
 *              elementQuestion = new LevelElementQuestion ( 11, 19, LevelElementQuestion.Type_CoinOne, LevelElementQuestion.Sprite_Question );
 *              segment.elements.Add (elementQuestion);
 *
 *              elementQuestion = new LevelElementQuestion ( 12, 19, LevelElementQuestion.Type_CoinOne, LevelElementQuestion.Sprite_Question );
 *              segment.elements.Add (elementQuestion);
 *
 *              elementPillar = new LevelElementPillar ( 58, 20, MapElement.Dir_Up, 7 );
 *              segment.elements.Add (elementPillar);
 *
 *              /*
 *              elementCoinArrow = new LevelElementCoinArrow ( 24, 21, MapElement.Dir_LeftUp );
 *              segment.elements.Add (elementCoinArrow);
 *
 *
 *
 *
 *          elementStop = new LevelElementStop ( 35, 21, MapElementStop.StopType_Direct );
 *              segment.elements.Add (elementStop);
 *
 *
 *
 *              enemyMushroom = new LevelElementEnemyMushroon (33, 18, MapElement.Dir_Left, MapElement.Dir_Left, 0);
 *              segment.elements.Add (enemyMushroom);
 *
 *              levelDef.segments.Add (segment);
 */
        // ************* 第二段 ********************************
        segment = new LevelSegment();

        string[] segametData02 =
        {
            // 0
            //0        10	    20        30        40        50		60
            "00000000000000000000000000000000000000000000000000000000000000000",
            "00000000000000000000000000000000000000000000000000000000000000000",
            "00000000000000000000000000000000000000000000000000000000000000000",
            "00000000000000000000000000000000000000000000000000000000000000000",
            "00000000000000000000000000000000000000000000000000000000000000000",
            //0        10	    20        30        40        50		60
            // 5
            //0        10	    20        30        40        50		60
            "00000000000000000000000000000000000000000000000000000000000000000",
            "00000000000000000000000000000000000000000000000000000000000000000",
            "00000000000000000000000000000000000000000000000000000000000000000",
            "00000000000000000000000000000000000000000000000000000000000000000",
            "00000000000000000000000000000000000000000000000000000000009990000",
            //0        10	    20        30        40        50		60
            // 10
            //0        10	    20        30        40        50		60
            "0000000000000000000000000000000000000000000000000000000000AAA0000",
            "00000000000000000000000000000000000000000000000000000000000000000",
            "00000000000000000000000000000000000000000000000000000000000000000",
            "00000000000000000000000000000000000000000000000000000000000000000",
            "00000000000000000000000000000000000000000000000000000000000000000",
            //0        10	    20        30        40        50		60
            // 15
            //0        10	    20        30        40        50		60
            "00000000000000000000000000000000000000000000000000000000000000000",
            "00000000000000000000000000000000000000000000000000000000000000000",
            "00000000000000000000000000000000000000000000000000000000000000000",
            "00000000000000000000000000000000000000000000000000000000000000000",
            "00000000000000000000000000000000068600000000111111114E00000000000",
            //0        10	    20        30        40        50		60
            // 20
            //0        10	    20        30        40        50		60
            "0000000000000000000000000000000000000000000011111111114E000000000",
            "000000000000990000009900000000000000000000001111111111114E0000000",
            "0000000003111111111111111014E000000000000011111111111111114E00000",
            "11111111111111111111111111111111111111110011111111111111111111111",
            "11111111111111111111111111111111111111110011111111111111111111111",
            //0        10	    20        30        40        50		60
            // 25
            //0        10	    20        30        40        50		60
            "11111111111111111111111111111111111111110011111111111100001111111",
            "11111111111111111111111111111111111111110011111111111100001111111"
        };
        segment.data = segametData02;

        segment.width  = segment.data[0].Length;
        segment.height = segment.data.Length;

        segment.segmentStartPos = new MapPoint(64, 0);
        segment.startPoint      = new MapPoint(2, 22);
        segment.endPoint        = new MapPoint(63, 22);

        segment.lockScreenLeft   = false;
        segment.lockScreenRight  = false;
        segment.lockScreenTop    = true;
        segment.lockScreenBottom = true;
        segment.CalculateBorder();

        elementQuestion = new LevelElementQuestion(7, 19, LevelElementQuestion.Type_CoinFive, LevelElementQuestion.Sprite_Brick);
        segment.elements.Add(elementQuestion);

        elementStop = new LevelElementStop(25, 22, MapElementStop.StopType_Tilted);
        segment.elements.Add(elementStop);

        elementQuestion = new LevelElementQuestion(32, 19, LevelElementQuestion.Type_CoinOne, LevelElementQuestion.Sprite_Brick);
        segment.elements.Add(elementQuestion);

        elementQuestion = new LevelElementQuestion(34, 19, LevelElementQuestion.Type_CoinOne, LevelElementQuestion.Sprite_Brick);
        segment.elements.Add(elementQuestion);

        elementQuestion = new LevelElementQuestion(36, 19, LevelElementQuestion.Type_CoinOne, LevelElementQuestion.Sprite_Brick);
        segment.elements.Add(elementQuestion);

        elementQuestion = new LevelElementQuestion(33, 15, LevelElementQuestion.Type_CoinOne, LevelElementQuestion.Sprite_Question);
        segment.elements.Add(elementQuestion);

        elementQuestion = new LevelElementQuestion(34, 15, LevelElementQuestion.Type_AwardLife, LevelElementQuestion.Sprite_Question);
        segment.elements.Add(elementQuestion);

        elementQuestion = new LevelElementQuestion(35, 15, LevelElementQuestion.Type_CoinFive, LevelElementQuestion.Sprite_Question);
        segment.elements.Add(elementQuestion);

        elementQuestion = new LevelElementQuestion(52, 15, LevelElementQuestion.Type_CoinFive, LevelElementQuestion.Sprite_Question);
        segment.elements.Add(elementQuestion);

        enemyMushroom = new LevelElementEnemyMushroon(18, 21, MapElement.Dir_Left, MapElement.Dir_Left, 0);
        segment.elements.Add(enemyMushroom);

        enemyMushroom = new LevelElementEnemyMushroon(26, 21, MapElement.Dir_Left, MapElement.Dir_Left, 0);
        segment.elements.Add(enemyMushroom);

        levelDef.segments.Add(segment);

        // ************* 第三段 ********************************
        segment = new LevelSegment();

        string[] segametData03 =
        {
            // 0
            //0        10	    20        30        40        50		60
            "00000000000000000000000000000000000000000000000000000",
            "00000000000000000000000000000000000000000000000000000",
            "00000000000000000000000000000000000000000000000000000",
            "00000000000000000000000000000000000000000000000000000",
            "00000000000000000000000000000000000000000000000000000",
            //0        10	    20        30        40        50		60
            // 5
            //0        10	    20        30        40        50		60
            "00000000000000000000000000000000000000000000000000000",
            "00000000000000000000000000000000000000000000000000000",
            "00000000000000000000000000000000000000000000000000000",
            "00000000000000000000000000000000000000000000000000000",
            "00000000000000000000000000000000000000000000000000000",
            //0        10	    20        30        40        50		60
            // 10
            //0        10	    20        30        40        50		60
            "00000000000000000000000000000000000000000000000000000",
            "00000000000000000000000000000000006666666600000000000",
            "00000000000000000000000000000000000000000000000000000",
            "00000000000000000000000000000000000000000000000000000",
            "00000000000000000000000000000000000000000000000000000",
            //0        10	    20        30        40        50		60
            // 15
            //0        10	    20        30        40        50		60
            "00000000000000000000000000000000000000000000000000000",
            "00000000000000000000077777077770000000000000000000000",
            "00000000000000000000000000000000000000000000000000000",
            "00000000000000000000000000000000000000000000000000000",
            "00000000000090909090900000000000000000000011111100000",
            //0        10	    20        30        40        50		60
            // 20
            //0        10	    20        30        40        50		60
            "00000000000777777777777700000000000000010011111100000",
            "000000000000000000000000000000002D1111110011111100000",
            "0000000000000000000000000000002D111111110011111100000",
            "11111111111111100111111111111111111111110011111111111",
            "11111111111111100111111111111111111111110011111111111",
            //0        10	    20        30        40        50		60
            // 25
            //0        10	    20        30        40        50		60
            "11111111111111100111111111111111111111110011111111111",
            "11111111111111100111111111111111111111110011111111111"
        };
        segment.data = segametData03;

        segment.width  = segment.data[0].Length;
        segment.height = segment.data.Length;

        segment.segmentStartPos = new MapPoint(128, 0);
        segment.startPoint      = new MapPoint(2, 22);
        segment.endPoint        = new MapPoint(51, 22);

        segment.lockScreenLeft   = false;
        segment.lockScreenRight  = false;
        segment.lockScreenTop    = true;
        segment.lockScreenBottom = true;
        segment.CalculateBorder();

        elementQuestion = new LevelElementQuestion(38, 8, LevelElementQuestion.Type_AwardLife, LevelElementQuestion.Sprite_Brick);
        segment.elements.Add(elementQuestion);

        elementStop = new LevelElementStop(26, 16, MapElementStop.StopType_Tilted);
        segment.elements.Add(elementStop);

        elementQuestion = new LevelElementQuestion(45, 15, LevelElementQuestion.Type_CoinFive, LevelElementQuestion.Sprite_Brick);
        segment.elements.Add(elementQuestion);

        elementCoinArrow = new LevelElementCoinArrow(13, 22, MapElement.Dir_RightUp);
        segment.elements.Add(elementCoinArrow);

        elementCoinArrow = new LevelElementCoinArrow(22, 19, MapElement.Dir_RightUp);
        segment.elements.Add(elementCoinArrow);

        elementCoinArrow = new LevelElementCoinArrow(30, 15, MapElement.Dir_RightDown);
        segment.elements.Add(elementCoinArrow);

        enemyMushroom = new LevelElementEnemyMushroon(9, 22, MapElement.Dir_Left, MapElement.Dir_Left, 0);
        segment.elements.Add(enemyMushroom);

        enemyMushroom = new LevelElementEnemyMushroon(15, 19, MapElement.Dir_Left, MapElement.Dir_Left, 0);
        segment.elements.Add(enemyMushroom);

        enemyMushroom = new LevelElementEnemyMushroon(22, 19, MapElement.Dir_Left, MapElement.Dir_Left, 0);
        segment.elements.Add(enemyMushroom);

        enemyMushroom = new LevelElementEnemyMushroon(29, 15, MapElement.Dir_Left, MapElement.Dir_Left, 0);
        segment.elements.Add(enemyMushroom);

        enemyMushroom = new LevelElementEnemyMushroon(34, 20, MapElement.Dir_Left, MapElement.Dir_Left, 0);
        segment.elements.Add(enemyMushroom);

        enemyMushroom = new LevelElementEnemyMushroon(39, 19, MapElement.Dir_Left, MapElement.Dir_Left, 0);
        segment.elements.Add(enemyMushroom);

        enemyMushroom = new LevelElementEnemyMushroon(41, 10, MapElement.Dir_Left, MapElement.Dir_Left, 0);
        segment.elements.Add(enemyMushroom);

        enemyMushroom = new LevelElementEnemyMushroon(48, 12, MapElement.Dir_Left, MapElement.Dir_Left, 0);
        segment.elements.Add(enemyMushroom);

        levelDef.segments.Add(segment);

        // ************* 第四段 ********************************
        segment = new LevelSegment();

        string[] segametData04 =
        {
            // 0
            //0        10	    20        30        40        50		60
            "00000000000000000000000000000000000000000000000000000",
            "00000000000000000000000000000000000000000000000000000",
            "00000000000000000000000000000000000000000000000000000",
            "00000000000000000000000000000000000000000000000000000",
            "00000000000000000000000000000000000000000000000000000",
            //0        10	    20        30        40        50		60
            // 5
            //0        10	    20        30        40        50		60
            "00000000000000000000000000000000000000000000000000000",
            "00000000000000000000000000000000000000009990000000000",
            "00000000000000000000000000000000000000000000000000000",
            "00000000000000000000000000000000000009900009900000000",
            "00000000000000000000000000000006000006AAA0AAA00000000",
            //0        10	    20        30        40        50		60
            // 10
            //0        10	    20        30        40        50		60
            "00000000000000000000000000000006000000000000000000000",
            "00000000000000000000000000000000000000000000000000000",
            "00000000000000000000000000000000000000000000000000000",
            "00000000000000000000000000000000000006000000000000000",
            "00000000000000000000000000000000000000000000000000000",
            //0        10	    20        30        40        50		60
            // 15
            //0        10	    20        30        40        50		60
            "00000000000000000000000000000000000000000000000000000",
            "00000000000000000000000000000000000000000000000000000",
            "00000000000000000000000000000000000000000000000000000",
            "00000000000000000000000000000000000000000000000000000",
            "00000000000000000000000077770777777777700000000000000",
            //0        10	    20        30        40        50		60
            // 20
            //0        10	    20        30        40        50		60
            "00000000000000000000000000000000000000000000000000000",
            "00000000990000990000090000000000000000000000000000000",
            "00000009009009009009009000000000000000000000000000000",
            "11111111001111001111001111111111111111111111001111111",
            "11111111001111001111001111111111111111111111001111111",
            //0        10	    20        30        40        50		60
            // 25
            //0        10	    20        30        40        50		60
            "11111111001111001111001111111111111111111111001111111",
            "11111111001111001111001111111111111111111111001111111"
        };
        segment.data = segametData04;

        segment.width  = segment.data[0].Length;
        segment.height = segment.data.Length;

        segment.segmentStartPos = new MapPoint(180, 0);
        segment.startPoint      = new MapPoint(2, 22);
        segment.endPoint        = new MapPoint(51, 22);

        segment.lockScreenLeft   = false;
        segment.lockScreenRight  = false;
        segment.lockScreenTop    = true;
        segment.lockScreenBottom = true;
        segment.CalculateBorder();

        elementPillar = new LevelElementPillar(8, 22, MapElement.Dir_Up, 5);
        segment.elements.Add(elementPillar);

        elementPillar = new LevelElementPillar(14, 22, MapElement.Dir_Up, 5);
        segment.elements.Add(elementPillar);

        elementPillar = new LevelElementPillar(20, 22, MapElement.Dir_Up, 5);
        segment.elements.Add(elementPillar);

        elementCoinArrow = new LevelElementCoinArrow(20, 21, MapElement.Dir_RightUp);
        segment.elements.Add(elementCoinArrow);

        elementStop = new LevelElementStop(28, 19, MapElementStop.StopType_Direct);
        segment.elements.Add(elementStop);

        elementQuestion = new LevelElementQuestion(25, 16, LevelElementQuestion.Type_CoinOne, LevelElementQuestion.Sprite_Question);
        segment.elements.Add(elementQuestion);

        elementQuestion = new LevelElementQuestion(41, 4, LevelElementQuestion.Type_AwardStar, LevelElementQuestion.Sprite_Question);
        segment.elements.Add(elementQuestion);


        elementCoinArrow = new LevelElementCoinArrow(32, 10, MapElement.Dir_RightUp);
        segment.elements.Add(elementCoinArrow);

        enemyMushroom = new LevelElementEnemyMushroon(28, 22, MapElement.Dir_Left, MapElement.Dir_Left, 0);
        segment.elements.Add(enemyMushroom);

        enemyMushroom = new LevelElementEnemyMushroon(34, 22, MapElement.Dir_Left, MapElement.Dir_Left, 0);
        segment.elements.Add(enemyMushroom);


        levelDef.segments.Add(segment);

        // ************* 第五段 ********************************
        segment = new LevelSegment();

        string[] segametData05 =
        {
            // 0
            //0        10	    20        30        40        50		60
            "0000000000000000000000000000000000000000000000000000000",
            "0000000000000000000000000000000000000000000000000000000",
            "0000000000000000000000000000000000000000000000000000000",
            "0000000000000000000000000000000000000000000000000000000",
            "0000000000000000000000000000000000000000000000000000000",
            //0        10	    20        30        40        50		60
            // 5
            //0        10	    20        30        40        50		60
            "0000000000000000000000000000000000000000000000000000000",
            "0000000000000000000000000000000000000000000000000000000",
            "0000000000000000000000000000000000000000000000000000000",
            "0000000000000000000000000000000000000000000000000000000",
            "0000000000000000000000000000000000000000000000000000000",
            //0        10	    20        30        40        50		60
            // 10
            //0        10	    20        30        40        50		60
            "0000000000000000000000000000000000000000000000000000000",
            "0000000000000000000000000000000000000000000000000000000",
            "0000000000000000000000000000000000000000000000000000000",
            "0000000000000000000000000000000000000000000000000000000",
            "0000000000000000000000000000000000000000000000000000000",
            //0        10	    20        30        40        50		60
            // 15
            //0        10	    20        30        40        50		60
            "0000000000000000000000000000000000000000000000000000000",
            "0000000000000000000000000000000000000000000000000000000",
            "0000000000000000000000999990000000000000000999000000000",
            "0000000000009999000000000000000000000000009000900000000",
            "0000000000000000000777777777777770000000000000000000000",
            //0        10	    20        30        40        50		60
            // 20
            //0        10	    20        30        40        50		60
            "0000990000000000000000999990000000000007777777777700000",
            "00000000002D11111114E0000000000000000000000000000000000",
            "000000002D11111111111111111114E000000000000000000000000",
            "1111111111111111111111111111111111111111111111111111111",
            "1111111111111111111111111111111111111111111111111111111",
            //0        10	    20        30        40        50		60
            // 25
            //0        10	    20        30        40        50		60
            "1111111111111111111111111111111111111111111111111111111",
            "1111111111111111111111111111111111111111111111111111111"
        };
        segment.data = segametData05;

        segment.width  = segment.data[0].Length;
        segment.height = segment.data.Length;

        segment.segmentStartPos = new MapPoint(233, 0);
        segment.startPoint      = new MapPoint(2, 22);
        segment.endPoint        = new MapPoint(54, 22);

        segment.lockScreenLeft   = false;
        segment.lockScreenRight  = false;
        segment.lockScreenTop    = true;
        segment.lockScreenBottom = true;
        segment.CalculateBorder();


        elementCoinArrow = new LevelElementCoinArrow(20, 21, MapElement.Dir_RightDown);
        segment.elements.Add(elementCoinArrow);


        enemyMushroom = new LevelElementEnemyMushroon(12, 20, MapElement.Dir_Left, MapElement.Dir_Left, 0);
        segment.elements.Add(enemyMushroom);

        enemyMushroom = new LevelElementEnemyMushroon(18, 20, MapElement.Dir_Left, MapElement.Dir_Left, 0);
        segment.elements.Add(enemyMushroom);

        enemyMushroom = new LevelElementEnemyMushroon(23, 18, MapElement.Dir_Left, MapElement.Dir_Left, 0);
        segment.elements.Add(enemyMushroom);

        enemyMushroom = new LevelElementEnemyMushroon(29, 18, MapElement.Dir_Left, MapElement.Dir_Left, 0);
        segment.elements.Add(enemyMushroom);

        enemyMushroom = new LevelElementEnemyMushroon(33, 22, MapElement.Dir_Left, MapElement.Dir_Left, 0);
        segment.elements.Add(enemyMushroom);

        enemyMushroom = new LevelElementEnemyMushroon(39, 22, MapElement.Dir_Left, MapElement.Dir_Left, 0);
        segment.elements.Add(enemyMushroom);

        enemyMushroom = new LevelElementEnemyMushroon(45, 19, MapElement.Dir_Left, MapElement.Dir_Left, 0);
        segment.elements.Add(enemyMushroom);

        enemyMushroom = new LevelElementEnemyMushroon(51, 22, MapElement.Dir_Left, MapElement.Dir_Left, 0);
        segment.elements.Add(enemyMushroom);

        levelDef.segments.Add(segment);

        // ************* 第六段 ********************************
        segment = new LevelSegment();

        string[] segametData06 =
        {
            // 0
            //0        10	    20        30        40        50		60
            "0000000000000000000000000000000000000000000000000000000",
            "0000000000000000000000000000000000000000000000000000000",
            "0000000000000000000000000000000000000000000000000000000",
            "0000000000000000000000000000000000000000000000000000000",
            "0000000000000000000000000000000000000000000000000000000",
            //0        10	    20        30        40        50		60
            // 5
            //0        10	    20        30        40        50		60
            "0000000000000000000000000000000000000000000000000000000",
            "0000000000000000000000000000000000000000000000000000000",
            "0000000000000000000000000000000000000000000000000000000",
            "0000000000000000000000000000000000000000000000000000000",
            "0000000000000000000000000000000000000000000000000000000",
            //0        10	    20        30        40        50		60
            // 10
            //0        10	    20        30        40        50		60
            "0000000000000000000000000000000000099000000000000000000",
            "0000000000000000000000000000000000900000000000000000000",
            "0000000000000000000000000000000009000000000000000000000",
            "0000000000000000000000000000000090000000000000000000000",
            "0000000000000000000000000000000900000000000000000000000",
            //0        10	    20        30        40        50		60
            // 15
            //0        10	    20        30        40        50		60
            "0000000000000000000000900000009000000000000000000000000",
            "0000000000000099000009000777777000000000000000000000000",
            "0000000000000900900090000000000000000000000000000000000",
            "0000000000009000900900000000000000000000000000000000000",
            "0000000000090000099000000000000000000000000000000000000",
            //0        10	    20        30        40        50		60
            // 20
            //0        10	    20        30        40        50		60
            "0000000000900077777777700000000000000000000000000000000",
            "0000000009000000000000000000000000000000000000000000000",
            "0000009090000000000000000000000000000000000000000000000",
            "1111111111111111111111111111111111111111111111111111111",
            "1111111111111111111111111111111111111111111111111111111",
            //0        10	    20        30        40        50		60
            // 25
            //0        10	    20        30        40        50		60
            "1111111111111111111111111111111111111111111111111111111",
            "1111111111111111111111111111111111111111111111111111111"
        };
        segment.data = segametData06;

        segment.width  = segment.data[0].Length;
        segment.height = segment.data.Length;

        segment.segmentStartPos = new MapPoint(288, 0);
        segment.startPoint      = new MapPoint(2, 22);
        segment.endPoint        = new MapPoint(42, 22);

        segment.lockScreenLeft   = false;
        segment.lockScreenRight  = false;
        segment.lockScreenTop    = true;
        segment.lockScreenBottom = true;
        segment.CalculateBorder();


        enemyMushroom = new LevelElementEnemyMushroon(10, 22, MapElement.Dir_Left, MapElement.Dir_Left, 0);
        segment.elements.Add(enemyMushroom);

        enemyMushroom = new LevelElementEnemyMushroon(16, 19, MapElement.Dir_Left, MapElement.Dir_Left, 0);
        segment.elements.Add(enemyMushroom);

        enemyMushroom = new LevelElementEnemyMushroon(22, 19, MapElement.Dir_Left, MapElement.Dir_Left, 0);
        segment.elements.Add(enemyMushroom);

        enemyMushroom = new LevelElementEnemyMushroon(27, 15, MapElement.Dir_Left, MapElement.Dir_Left, 0);
        segment.elements.Add(enemyMushroom);

        enemyMushroom = new LevelElementEnemyMushroon(34, 22, MapElement.Dir_Left, MapElement.Dir_Left, 0);
        segment.elements.Add(enemyMushroom);

        enemyMushroom = new LevelElementEnemyMushroon(40, 22, MapElement.Dir_Left, MapElement.Dir_Left, 0);
        segment.elements.Add(enemyMushroom);


        levelDef.segments.Add(segment);

        _localLevels.Add(levelDef);



        // ************* 创建第二关 **************************************************************
        levelDef = new LevelDef();

        // ************* 第一段 ********************************
        segment = new LevelSegment();
        string[] segametData11 =
        {
            // 0
            //0        10	    20        30        40        50		60
            "11111111111111111111111111111111111111111",
            "11111111111111111111111111111111111111111",
            "11111111111111110009000000000000000111111",
            "11111111111111110090000000000000000111111",
            "11111111111111110900000000000000000111111",
            //0        10	    20        30        40        50		60
            // 5
            //0        10	    20        30        40        50		60
            "11111111111111119000000000000000000111111",
            "11111111111111110000000000000000009111111",
            "11111111111111110000000000000000009111111",
            "11111111111111110000000000000000009111111",
            "11111111111111110000000000000000009111111",
            //0        10	    20        30        40        50		60
            // 10
            //0        10	    20        30        40        50		60
            "11111111111111110000111111111100009111111",
            "11111111111111110000111111111100009111111",
            "11111111111111119999111111111100009111111",
            "11111111111111119999111111111100009111111",
            "11111111111111119999111111111100000111111",
            //0        10	    20        30        40        50		60
            // 15
            //0        10	    20        30        40        50		60
            "11111111111111119999111111111100000000000",
            "11111111111111119999111111111100000000000",
            "11111111111111119999111111111100000000000",
            "11111111111111119999111111111100000000000",
            "11111111111111119999111111111100000000000",
            //0        10	    20        30        40        50		60
            // 20
            //0        10	    20        30        40        50		60
            "11111111111111119999111111111100000000000",
            "11111111111111119999111111111100001111111",
            "11111111111111110000111111111100001111111",
            "11111111111111110000111111111100001111111",
            "11111110000000000000111111111100001111111",
            //0        10	    20        30        40        50		60
            // 25
            //0        10	    20        30        40        50		60
            "11111110000000000000111111111100001111111",
            "11111110009000000000000000000000001111111",
            "11111110090000000000000000000000001111111",
            "11111110900000000000000000000000001111111",
            "11111119000111111111111111111111111111111",
            //0        10	    20        30        40        50		60
            // 30
            //0        10	    20        30        40        50		60
            "11111110900111111111111111111111111111111",
            "11111110090111111111111111111111111111111",
            "11111110009111111111111111111111111111111",
            "11111110000111111111111111111111111111111",
            "00000000000111111111111111111111111111111",
            //0        10	    20        30        40        50		60
            // 35
            //0        10	    20        30        40        50		60
            "00000000000111111111111111111111111111111",
            "00000000000111111111111111111111111111111",
            "11111111111111111111111111111111111111111",
            "11111111111111111111111111111111111111111",
            "11111111111111111111111111111111111111111",
            //0        10	    20        30        40        50		60
            // 35
            //0        10	    20        30        40        50		60
            "11111111111111111111111111111111111111111"
        };
        segment.data = segametData11;

        segment.width  = segment.data[0].Length;
        segment.height = segment.data.Length;

        segment.segmentStartPos = new MapPoint(0, 22);
        segment.startPoint      = new MapPoint(2, 36);
        segment.endPoint        = new MapPoint(39, 20);

        segment.lockScreenLeft   = true;
        segment.lockScreenRight  = false;
        segment.lockScreenTop    = true;
        segment.lockScreenBottom = true;
        segment.CalculateBorder();

        elementCoinArrow = new LevelElementCoinArrow(29, 28, MapElement.Dir_RightUp);
        segment.elements.Add(elementCoinArrow);

        elementCoinArrow = new LevelElementCoinArrow(30, 21, MapElement.Dir_RightUp);
        segment.elements.Add(elementCoinArrow);

        enemyMushroom = new LevelElementEnemyMushroon(17, 28, MapElement.Dir_Left, MapElement.Dir_Left, 0);
        segment.elements.Add(enemyMushroom);

        enemyMushroom = new LevelElementEnemyMushroon(23, 28, MapElement.Dir_Left, MapElement.Dir_Left, 0);
        segment.elements.Add(enemyMushroom);

        enemyMushroom = new LevelElementEnemyMushroon(29, 28, MapElement.Dir_Left, MapElement.Dir_Left, 0);
        segment.elements.Add(enemyMushroom);

        /*
         * elementQuestion = new LevelElementQuestion ( 11, 19, LevelElementQuestion.Type_CoinOne, LevelElementQuestion.Sprite_Question );
         * segment.elements.Add (elementQuestion);
         *
         * elementQuestion = new LevelElementQuestion ( 12, 19, LevelElementQuestion.Type_CoinOne, LevelElementQuestion.Sprite_Question );
         * segment.elements.Add (elementQuestion);
         *
         * elementPillar = new LevelElementPillar ( 58, 20, MapElement.Dir_Up, 7 );
         * segment.elements.Add (elementPillar);
         *
         * /*
         * elementCoinArrow = new LevelElementCoinArrow ( 24, 21, MapElement.Dir_LeftUp );
         * segment.elements.Add (elementCoinArrow);
         *
         *
         *
         *
         * elementStop = new LevelElementStop ( 35, 21, MapElementStop.StopType_Direct );
         * segment.elements.Add (elementStop);
         *
         *
         *
         * enemyMushroom = new LevelElementEnemyMushroon (33, 18, MapElement.Dir_Left, MapElement.Dir_Left, 0);
         * segment.elements.Add (enemyMushroom);
         */
        levelDef.segments.Add(segment);

        // ************* 第二段 ********************************
        segment = new LevelSegment();
        string[] segametData12 =
        {
            // 0
            //0        10	    20        30        40        50		60
            "11111111111111111111111111111111111100000000000000000000000000111",
            "11111111111111111111111111111111111100000000000000000000000000111",
            "11111111111111111111111111111111111100000000000000000000000000111",
            "11111111111111111111111111111111111100000000000000000000000000111",
            "11111111111111111111111111111111111100000000000000000000000000111",
            //0        10	    20        30        40        50		60
            // 5
            //0        10	    20        30        40        50		60
            "11111111111111111111111111111111111100000000111111111110000000111",
            "11111111111111111111111111111111111100000000111111111110000000111",
            "11111111111111111111111111111111111100000000111111111110000000111",
            "11111111111111111111111111111111111100000000111111111110000000000",
            "11111111111111111111111111111111111100000000111111111110000000000",
            //0        10	    20        30        40        50		60
            // 10
            //0        10	    20        30        40        50		60
            "11111111111111111111111111111111111111110000111111111110000000000",
            "11111111111111111111111111111111111111110000111111111110000000000",
            "11111111111111111111111111111111111111110000111111111110001111111",
            "11111111111111111111111111111111111111110000111111111110001111111",
            "11111111111111111111111111111111111111110000111111111110001111111",
            //0        10	    20        30        40        50		60
            // 15
            //0        10	    20        30        40        50		60
            "11111111111111111111111111111111111111110000111111111110001111111",
            "11111111111111111111111111111111111111110000000000000000001111111",
            "11111111111111111111111111111111111111110000000000000000001111111",
            "11111111111111111111111111111111111111110000000000000000001111111",
            "11111111111111111111111111111111111111110000111111111111HI1111111",
            //0        10	    20        30        40        50		60
            // 20
            //0        10	    20        30        40        50		60
            "11111111111111111111111111111111111111110000111111111111II1111111",
            "11111111111111111111111111111111111111110000111111111111111111111",
            "11111111111111111111111111111111111111110000111111111111111111111",
            "11111111111111111111000000000000011111110000111111111111111111111",
            "11111111111111111111000000000000000011110000111111111111111111111",
            //0        10	    20        30        40        50		60
            // 25
            //0        10	    20        30        40        50		60
            "11111111111111100000000000000000000000000000111111111111111111111",
            "11111111111111100000000000000000000000000000111111111111111111111",
            "11111111111111100000000000000000000000000000111111111111111111111",
            "11111111111111100000000000000000000000000000111111111111111111111",
            "11111111100000000000000000000000000000000000111111111111111111111",
            //0        10	    20        30        40        50		60
            // 30
            //0        10	    20        30        40        50		60
            "11111111100000000000000000000000000000000000111111111111111111111",
            "11111111100000000000000000000000000000000000111111111111111111111",
            "111111110000000000011111111111111111111111HI111111111111111111111",
            "111111110000000000011111111111111111111111II111111111111111111111",
            "11111111000000000001111111111111111111111111111111111111111111111",
            //0        10	    20        30        40        50		60
            // 35
            //0        10	    20        30        40        50		60
            "11111000000000000001111111111111111111111111111111111111111111111",
            "11111000000000000001111111111111111111111111111111111111111111111",
            "11111000000000000001111111111111111111111111111111111111111111111",
            "11111000000000000001111111111111111111111111111111111111111111111",
            "00000000000000000001111111111111111111111111111111111111111111111",
            //0        10	    20        30        40        50		60
            // 35
            //0        10	    20        30        40        50		60
            "00000000000000000001111111111111111111111111111111111111111111111",
            "11111111111111111HI1111111111111111111111111111111111111111111111",
            "11111111111111111II1111111111111111111111111111111111111111111111",
            "11111111111111111111111111111111111111111111111111111111111111111",
            "11111111111111111111111111111111111111111111111111111111111111111",
            //0        10	    20        30        40        50		60
            // 35
            //0        10	    20        30        40        50		60
            "11111111111111111111111111111111111111111111111111111111111111111",
            "11111111111111111111111111111111111111111111111111111111111111111",
            "11111111111111111111111111111111111111111111111111111111111111111",
            "11111111111111111111111111111111111111111111111111111111111111111",
            "11111111111111111111111111111111111111111111111111111111111111111"
        };
        segment.data = segametData12;

        segment.width  = segment.data[0].Length;
        segment.height = segment.data.Length;

        segment.segmentStartPos = new MapPoint(41, 2);
        segment.startPoint      = new MapPoint(2, 36);
        segment.endPoint        = new MapPoint(39, 20);

        segment.lockScreenLeft   = false;
        segment.lockScreenRight  = false;
        segment.lockScreenTop    = true;
        segment.lockScreenBottom = true;
        segment.CalculateBorder();



        /*
         * elementQuestion = new LevelElementQuestion ( 11, 19, LevelElementQuestion.Type_CoinOne, LevelElementQuestion.Sprite_Question );
         * segment.elements.Add (elementQuestion);
         *
         * elementQuestion = new LevelElementQuestion ( 12, 19, LevelElementQuestion.Type_CoinOne, LevelElementQuestion.Sprite_Question );
         * segment.elements.Add (elementQuestion);
         *
         * elementPillar = new LevelElementPillar ( 58, 20, MapElement.Dir_Up, 7 );
         * segment.elements.Add (elementPillar);
         *
         * /*
         * elementCoinArrow = new LevelElementCoinArrow ( 24, 21, MapElement.Dir_LeftUp );
         * segment.elements.Add (elementCoinArrow);
         *
         *
         *
         *
         * elementStop = new LevelElementStop ( 35, 21, MapElementStop.StopType_Direct );
         * segment.elements.Add (elementStop);
         *
         *
         *
         * enemyMushroom = new LevelElementEnemyMushroon (33, 18, MapElement.Dir_Left, MapElement.Dir_Left, 0);
         * segment.elements.Add (enemyMushroom);
         */
        levelDef.segments.Add(segment);

        _localLevels.Add(levelDef);
    }