示例#1
0
 public Level()
 {
     m_mazeGen = new MazeGenerator();
     m_enemies = new List<Enemy>();
     Height = 1;
     RegenMaze();
 }
示例#2
0
        public void RandomFill(int Percent)
        {
            m_maze = new MazeGenerator();

            List<Rectangle> m_exitRooms = new List<Rectangle>();
            List<Point> m_exits = new List<Point>();

            if (m_maze.m_rooms.Count > 1)
            {
                do
                {
                    m_exitRooms.Add(m_maze.m_rooms[Game1.RNG.Next(0, m_maze.m_rooms.Count)]);
                    m_exitRooms.Add(m_maze.m_rooms[Game1.RNG.Next(0, m_maze.m_rooms.Count)]);

                    if (m_exitRooms[0] != m_exitRooms[1])
                    {
                        break;
                    }
                    m_exitRooms.Clear();
                } while (true);

                m_exits.Add(new Point(m_exitRooms[0].X + Game1.RNG.Next(1, m_exitRooms[0].Width - 1), m_exitRooms[0].Y +Game1.RNG.Next(1, m_exitRooms[0].Height - 1)));
                m_exits.Add(new Point(m_exitRooms[1].X +Game1.RNG.Next(1, m_exitRooms[1].Width - 1), m_exitRooms[1].Y +Game1.RNG.Next(1, m_exitRooms[1].Height - 1)));

            }
            else if (m_maze.m_rooms.Count == 1)
            {

                m_exitRooms.Add(m_maze.m_rooms[0]);
                do
                {
                    m_exits.Add(new Point(m_exitRooms[0].X +Game1.RNG.Next(1, m_exitRooms[0].Width - 1), m_exitRooms[0].Y +Game1.RNG.Next(1, m_exitRooms[0].Height - 1)));
                    m_exits.Add(new Point(m_exitRooms[0].X +Game1.RNG.Next(1, m_exitRooms[0].Width - 1), m_exitRooms[0].Y +Game1.RNG.Next(1, m_exitRooms[0].Height - 1)));
                    if (m_exits[0] != m_exits[1])
                    {
                        break;
                    }

                } while (true);
            }
            else
            {
                m_exits.Add(new Point(0,0));
                m_exits.Add(new Point(0, 1));
            }

            //m_exits.Clear();
            //m_exits.Add(new Point(0, 0));
            //m_exits.Add(new Point(0, 1));

            
            levelCreate.Map[m_exits[0].X, m_exits[0].Y] = 2;
            levelCreate.Map[m_exits[1].X, m_exits[1].Y] = 3;

            MapChanged = true;
        }