コード例 #1
0
        /// <summary>
        /// Generate new labirinth level
        /// </summary>
        /// <param name="stairsX">X Coordinate for stairs to up</param>
        /// <param name="stairsY">Y Coordinate for stairs to up</param>
        /// <returns></returns>
        public ILabyrinthLevel GenerateLevel(int stairsX = 0, int stairsY = 0, int levelNumber = 0)
        {
            //if (levelNumber % 2 == 0)
            //{
            //    Width++;
            //}
            //if (levelNumber % 3 == 0)
            //{
            //    Height++;
            //}

            LabLevel = new LabirinthLevel(Width, Height);
            for (int y = 0; y < LabLevel.Height; y++)
            {
                var row = new List <BaseCellObject>();
                for (int x = 0; x < LabLevel.Width; x++)
                {
                    var wall = new Wall(x, y);
                    row.Add(wall);
                }
                LabLevel.Cells.Add(row);
            }

            GeneratePathes(stairsX, stairsY);

            GenerateCoins(levelNumber);

            GenerateGoldmine(levelNumber);

            var deadEnd = GetRandom(
                LabLevel.AllCells()
                .Where(x => x is Ground || x is Coin)
                .Where(groundCell =>
                       GetNearCells(groundCell)
                       .Where(x => !(x is Wall))
                       .Count() == 1).ToList()
                );

            if (deadEnd == null)
            {
                deadEnd = GetRandom(LabLevel.AllCells().Where(x => x is Ground || x is Coin).ToList());
            }

            LabLevel[deadEnd.X, deadEnd.Y] = new StairsDown(deadEnd.X, deadEnd.Y);

            return(LabLevel);
        }
コード例 #2
0
        public ILabyrinthLevel GenerateStoreLevel(int levelNumber = 0)
        {
            LabLevel = new LabirinthLevel(Width, Height);
            for (int y = 0; y < LabLevel.Height; y++)
            {
                var row = new List <BaseCellObject>();
                for (int x = 0; x < LabLevel.Width; x++)
                {
                    var wall = new Wall(x, y);
                    row.Add(wall);
                }
                LabLevel.Cells.Add(row);
            }

            LabLevel[0, 0] = new StairsDown(0, 0);

            return(LabLevel);
        }