示例#1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="Labyrinth"/> class.
        /// </summary>
        public Labyrinth()
        {
            _tiles = new Tile[WIDTH][];

            for (int i = 0; i < WIDTH; i++)
            {
                _tiles[i] = new Tile[HEIGHT];
            }

            policeSpawnPoints.Add(new KeyValuePair<int, int>(6, 0));
            policeSpawnPoints.Add(new KeyValuePair<int, int>(7, 0));
            policeSpawnPoints.Add(new KeyValuePair<int, int>(0, 4));
            policeSpawnPoints.Add(new KeyValuePair<int, int>(0, 5));
            policeSpawnPoints.Add(new KeyValuePair<int, int>(6, 9));
            policeSpawnPoints.Add(new KeyValuePair<int, int>(7, 9));
            policeSpawnPoints.Add(new KeyValuePair<int, int>(13, 4));
            policeSpawnPoints.Add(new KeyValuePair<int, int>(13, 5));

            _tiles[0][0] = new Tile(5, 0, 0);
            _tiles[0][1] = new Tile(6, 0, 1);
            _tiles[0][2] = new Tile(5, 0, 2);
            _tiles[0][3] = new Tile(6, 0, 3);
            _tiles[0][4] = new Tile(13, 0, 4);
            _tiles[0][5] = new Tile(14, 0, 5);
            _tiles[0][6] = new Tile(5, 0, 6);
            _tiles[0][7] = new Tile(4, 0, 7);
            _tiles[0][8] = new Tile(12, 0, 8);
            _tiles[0][9] = new Tile(6, 0, 9);

            _tiles[1][0] = new Tile(3, 1, 0);
            _tiles[1][1] = new Tile(9, 1, 1);
            _tiles[1][2] = new Tile(10, 1, 2);
            _tiles[1][3] = new Tile(1, 1, 3);
            _tiles[1][4] = new Tile(4, 1, 4);
            _tiles[1][5] = new Tile(12, 1, 5);
            _tiles[1][6] = new Tile(2, 1, 6);
            _tiles[1][7] = new Tile(3, 1, 7);
            _tiles[1][8] = new Tile(5, 1, 8);
            _tiles[1][9] = new Tile(10, 1, 9);

            _tiles[2][0] = new Tile(3, 2, 0);
            _tiles[2][1] = new Tile(13, 2, 1);
            _tiles[2][2] = new Tile(4, 2, 2);
            _tiles[2][3] = new Tile(2, 2, 3);
            _tiles[2][4] = new Tile(9, 2, 4);
            _tiles[2][5] = new Tile(6, 2, 5);
            _tiles[2][6] = new Tile(3, 2, 6);
            _tiles[2][7] = new Tile(11, 2, 7);
            _tiles[2][8] = new Tile(3, 2, 8);
            _tiles[2][9] = new Tile(7, 2, 9);

            _tiles[3][0] = new Tile(1, 3, 0);
            _tiles[3][1] = new Tile(12, 3, 1);
            _tiles[3][2] = new Tile(10, 3, 2);
            _tiles[3][3] = new Tile(9, 3, 3);
            _tiles[3][4] = new Tile(6, 3, 4);
            _tiles[3][5] = new Tile(9, 3, 5);
            _tiles[3][6] = new Tile(8, 3, 6);
            _tiles[3][7] = new Tile(6, 3, 7);
            _tiles[3][8] = new Tile(1, 3, 8);
            _tiles[3][9] = new Tile(10, 3, 9);

            _tiles[4][0] = new Tile(3, 4, 0);
            _tiles[4][1] = new Tile(5, 4, 1);
            _tiles[4][2] = new Tile(6, 4, 2);
            _tiles[4][3] = new Tile(5, 4, 3);
            _tiles[4][4] = new Tile(8, 4, 4);
            _tiles[4][5] = new Tile(4, 4, 5);
            _tiles[4][6] = new Tile(6, 4, 6);
            _tiles[4][7] = new Tile(9, 4, 7);
            _tiles[4][8] = new Tile(8, 4, 8);
            _tiles[4][9] = new Tile(6, 4, 9);

            _tiles[5][0] = new Tile(9, 5, 0);
            _tiles[5][1] = new Tile(2, 5, 1);
            _tiles[5][2] = new Tile(3, 5, 2);
            _tiles[5][3] = new Tile(3, 5, 3);
            _tiles[5][4] = new Tile(5, 5, 4);
            _tiles[5][5] = new Tile(10, 5, 5);
            _tiles[5][6] = new Tile(9, 5, 6);
            _tiles[5][7] = new Tile(4, 5, 7);
            _tiles[5][8] = new Tile(4, 5, 8);
            _tiles[5][9] = new Tile(10, 5, 9);

            _tiles[6][0] = new Tile(7, 6, 0);
            _tiles[6][1] = new Tile(3, 6, 1);
            _tiles[6][2] = new Tile(9, 6, 2);
            _tiles[6][3] = new Tile(8, 6, 3);
            _tiles[6][4] = new Tile(10, 6, 4);
            _tiles[6][5] = new Tile(5, 6, 5);
            _tiles[6][6] = new Tile(12, 6, 6);
            _tiles[6][7] = new Tile(2, 6, 7);
            _tiles[6][8] = new Tile(3, 6, 8);
            _tiles[6][9] = new Tile(7, 6, 9);

            _tiles[7][0] = new Tile(11, 7, 0);
            _tiles[7][1] = new Tile(1, 7, 1);
            _tiles[7][2] = new Tile(4, 7, 2);
            _tiles[7][3] = new Tile(12, 7, 3);
            _tiles[7][4] = new Tile(6, 7, 4);
            _tiles[7][5] = new Tile(3, 7, 5);
            _tiles[7][6] = new Tile(5, 7, 6);
            _tiles[7][7] = new Tile(2, 7, 7);
            _tiles[7][8] = new Tile(3, 7, 8);
            _tiles[7][9] = new Tile(11, 7, 9);

            _tiles[8][0] = new Tile(13, 8, 0);
            _tiles[8][1] = new Tile(2, 8, 1);
            _tiles[8][2] = new Tile(9, 8, 2);
            _tiles[8][3] = new Tile(6, 8, 3);
            _tiles[8][4] = new Tile(9, 8, 4);
            _tiles[8][5] = new Tile(8, 8, 5);
            _tiles[8][6] = new Tile(2, 8, 6);
            _tiles[8][7] = new Tile(9, 8, 7);
            _tiles[8][8] = new Tile(0, 8, 8);
            _tiles[8][9] = new Tile(14, 8, 9);

            _tiles[9][0] = new Tile(5, 9, 0);
            _tiles[9][1] = new Tile(8, 9, 1);
            _tiles[9][2] = new Tile(6, 9, 2);
            _tiles[9][3] = new Tile(9, 9, 3);
            _tiles[9][4] = new Tile(4, 9, 4);
            _tiles[9][5] = new Tile(12, 9, 5);
            _tiles[9][6] = new Tile(10, 9, 6);
            _tiles[9][7] = new Tile(5, 9, 7);
            _tiles[9][8] = new Tile(8, 9, 8);
            _tiles[9][9] = new Tile(14, 9, 9);

            _tiles[10][0] = new Tile(3, 10, 0);
            _tiles[10][1] = new Tile(5, 10, 1);
            _tiles[10][2] = new Tile(0, 10, 2);
            _tiles[10][3] = new Tile(12, 10, 3);
            _tiles[10][4] = new Tile(8, 10, 4);
            _tiles[10][5] = new Tile(12, 10, 5);
            _tiles[10][6] = new Tile(6, 10, 6);
            _tiles[10][7] = new Tile(3, 10, 7);
            _tiles[10][8] = new Tile(5, 10, 8);
            _tiles[10][9] = new Tile(6, 10, 9);

            _tiles[11][0] = new Tile(3, 11, 0);
            _tiles[11][1] = new Tile(3, 11, 1);
            _tiles[11][2] = new Tile(1, 11, 2);
            _tiles[11][3] = new Tile(6, 11, 3);
            _tiles[11][4] = new Tile(5, 11, 4);
            _tiles[11][5] = new Tile(12, 11, 5);
            _tiles[11][6] = new Tile(8, 11, 6);
            _tiles[11][7] = new Tile(2, 11, 7);
            _tiles[11][8] = new Tile(3, 11, 8);
            _tiles[11][9] = new Tile(3, 11, 9);

            _tiles[12][0] = new Tile(9, 12, 0);
            _tiles[12][1] = new Tile(2, 12, 1);
            _tiles[12][2] = new Tile(11, 12, 2);
            _tiles[12][3] = new Tile(1, 12, 3);
            _tiles[12][4] = new Tile(8, 12, 4);
            _tiles[12][5] = new Tile(12, 12, 5);
            _tiles[12][6] = new Tile(4, 12, 6);
            _tiles[12][7] = new Tile(8, 12, 7);
            _tiles[12][8] = new Tile(10, 12, 8);
            _tiles[12][9] = new Tile(3, 12, 9);

            _tiles[13][0] = new Tile(13, 13, 0);
            _tiles[13][1] = new Tile(8, 13, 1);
            _tiles[13][2] = new Tile(12, 13, 2);
            _tiles[13][3] = new Tile(10, 13, 3);
            _tiles[13][4] = new Tile(13, 13, 4);
            _tiles[13][5] = new Tile(14, 13, 5);
            _tiles[13][6] = new Tile(9, 13, 6);
            _tiles[13][7] = new Tile(12, 13, 7);
            _tiles[13][8] = new Tile(12, 13, 8);
            _tiles[13][9] = new Tile(10, 13, 9);

            for (int i = 0; i < WIDTH; i++)
            {
                for (int j = 0; j < HEIGHT; j++)
                {
                    if (!_tiles[i][j].IsTopWall())
                    {
                        _tiles[i][j].TopTile = _tiles[i][j - 1];
                    }

                    if (!_tiles[i][j].IsBotomWall())
                    {
                        _tiles[i][j].BotomTile = _tiles[i][j + 1];
                    }

                    if (!_tiles[i][j].IsLeftWall())
                    {
                        _tiles[i][j].LeftTile = _tiles[i - 1][j];
                    }

                    if (!_tiles[i][j].IsRightWall())
                    {
                        _tiles[i][j].RightTile = _tiles[i + 1][j];
                    }
                }
            }

            //Pour tester le policier, on lui offre une ouverture
            _tiles[6][9].TopTile = _tiles[6][8];
            _tiles[7][9].TopTile = _tiles[7][8];
            _tiles[6][0].BotomTile = _tiles[6][1];
            _tiles[7][0].BotomTile = _tiles[7][1];
            _tiles[0][4].RightTile = _tiles[1][4];
            _tiles[0][5].RightTile = _tiles[1][5];
            _tiles[13][4].LeftTile = _tiles[12][4];
            _tiles[13][5].LeftTile = _tiles[12][5];

            //On place le téléporteur
            Teleporter teleporter = new Teleporter(_tiles[0][0], _tiles[13][0], _tiles[0][9], _tiles[13][9]);
            _tiles[6][4].RightTile = teleporter;
            _tiles[7][4].LeftTile = teleporter;
        }
        //Tile generation, homemade tools to build it (partially...)
        public Labyrinth()
        {
            Tiles = new Tile[WIDTH][];

            for (int i = 0; i < WIDTH; i++)
            {
                Tiles[i] = new Tile[HEIGHT];
            }

            Tiles[0][0] = new Tile(5, 0, 0);
            Tiles[0][1] = new Tile(6, 0, 1);
            Tiles[0][2] = new Tile(5, 0, 2);
            Tiles[0][3] = new Tile(6, 0, 3);
            Tiles[0][4] = new Tile(13, 0, 4);
            Tiles[0][5] = new Tile(14, 0, 5);
            Tiles[0][6] = new Tile(5, 0, 6);
            Tiles[0][7] = new Tile(4, 0, 7);
            Tiles[0][8] = new Tile(12, 0, 8);
            Tiles[0][9] = new Tile(6, 0, 9);

            Tiles[1][0] = new Tile(3, 1, 0);
            Tiles[1][1] = new Tile(9, 1, 1);
            Tiles[1][2] = new Tile(10, 1, 2);
            Tiles[1][3] = new Tile(1, 1, 3);
            Tiles[1][4] = new Tile(4, 1, 4);
            Tiles[1][5] = new Tile(12, 1, 5);
            Tiles[1][6] = new Tile(2, 1, 6);
            Tiles[1][7] = new Tile(3, 1, 7);
            Tiles[1][8] = new Tile(5, 1, 8);
            Tiles[1][9] = new Tile(10, 1, 9);

            Tiles[2][0] = new Tile(3, 2, 0);
            Tiles[2][1] = new Tile(13, 2, 1);
            Tiles[2][2] = new Tile(4, 2, 2);
            Tiles[2][3] = new Tile(2, 2, 3);
            Tiles[2][4] = new Tile(9, 2, 4);
            Tiles[2][5] = new Tile(6, 2, 5);
            Tiles[2][6] = new Tile(3, 2, 6);
            Tiles[2][7] = new Tile(11, 2, 7);
            Tiles[2][8] = new Tile(3, 2, 8);
            Tiles[2][9] = new Tile(7, 2, 9);

            Tiles[3][0] = new Tile(1, 3, 0);
            Tiles[3][1] = new Tile(12, 3, 1);
            Tiles[3][2] = new Tile(10, 3, 2);
            Tiles[3][3] = new Tile(9, 3, 3);
            Tiles[3][4] = new Tile(6, 3, 4);
            Tiles[3][5] = new Tile(9, 3, 5);
            Tiles[3][6] = new Tile(8, 3, 6);
            Tiles[3][7] = new Tile(6, 3, 7);
            Tiles[3][8] = new Tile(1, 3, 8);
            Tiles[3][9] = new Tile(10, 3, 9);

            Tiles[4][0] = new Tile(3, 4, 0);
            Tiles[4][1] = new Tile(5, 4, 1);
            Tiles[4][2] = new Tile(6, 4, 2);
            Tiles[4][3] = new Tile(5, 4, 3);
            Tiles[4][4] = new Tile(8, 4, 4);
            Tiles[4][5] = new Tile(4, 4, 5);
            Tiles[4][6] = new Tile(6, 4, 6);
            Tiles[4][7] = new Tile(9, 4, 7);
            Tiles[4][8] = new Tile(8, 4, 8);
            Tiles[4][9] = new Tile(6, 4, 9);

            Tiles[5][0] = new Tile(9, 5, 0);
            Tiles[5][1] = new Tile(2, 5, 1);
            Tiles[5][2] = new Tile(3, 5, 2);
            Tiles[5][3] = new Tile(3, 5, 3);
            Tiles[5][4] = new Tile(5, 5, 4);
            Tiles[5][5] = new Tile(10, 5, 5);
            Tiles[5][6] = new Tile(9, 5, 6);
            Tiles[5][7] = new Tile(4, 5, 7);
            Tiles[5][8] = new Tile(4, 5, 8);
            Tiles[5][9] = new Tile(10, 5, 9);

            Tiles[6][0] = new Tile(7, 6, 0);
            Tiles[6][1] = new Tile(3, 6, 1);
            Tiles[6][2] = new Tile(9, 6, 2);
            Tiles[6][3] = new Tile(8, 6, 3);
            Tiles[6][4] = new Tile(10, 6, 4);
            Tiles[6][5] = new Tile(5, 6, 5);
            Tiles[6][6] = new Tile(12, 6, 6);
            Tiles[6][7] = new Tile(2, 6, 7);
            Tiles[6][8] = new Tile(3, 6, 8);
            Tiles[6][9] = new Tile(7, 6, 9);

            Tiles[7][0] = new Tile(11, 7, 0);
            Tiles[7][1] = new Tile(1, 7, 1);
            Tiles[7][2] = new Tile(4, 7, 2);
            Tiles[7][3] = new Tile(12, 7, 3);
            Tiles[7][4] = new Tile(6, 7, 4);
            Tiles[7][5] = new Tile(3, 7, 5);
            Tiles[7][6] = new Tile(5, 7, 6);
            Tiles[7][7] = new Tile(2, 7, 7);
            Tiles[7][8] = new Tile(3, 7, 8);
            Tiles[7][9] = new Tile(11, 7, 9);

            Tiles[8][0] = new Tile(13, 8, 0);
            Tiles[8][1] = new Tile(2, 8, 1);
            Tiles[8][2] = new Tile(9, 8, 2);
            Tiles[8][3] = new Tile(6, 8, 3);
            Tiles[8][4] = new Tile(9, 8, 4);
            Tiles[8][5] = new Tile(8, 8, 5);
            Tiles[8][6] = new Tile(2, 8, 6);
            Tiles[8][7] = new Tile(9, 8, 7);
            Tiles[8][8] = new Tile(0, 8, 8);
            Tiles[8][9] = new Tile(14, 8, 9);

            Tiles[9][0] = new Tile(5, 9, 0);
            Tiles[9][1] = new Tile(8, 9, 1);
            Tiles[9][2] = new Tile(6, 9, 2);
            Tiles[9][3] = new Tile(9, 9, 3);
            Tiles[9][4] = new Tile(4, 9, 4);
            Tiles[9][5] = new Tile(12, 9, 5);
            Tiles[9][6] = new Tile(10, 9, 6);
            Tiles[9][7] = new Tile(5, 9, 7);
            Tiles[9][8] = new Tile(8, 9, 8);
            Tiles[9][9] = new Tile(14, 9, 9);

            Tiles[10][0] = new Tile(3, 10, 0);
            Tiles[10][1] = new Tile(5, 10, 1);
            Tiles[10][2] = new Tile(0, 10, 2);
            Tiles[10][3] = new Tile(12, 10, 3);
            Tiles[10][4] = new Tile(8, 10, 4);
            Tiles[10][5] = new Tile(12, 10, 5);
            Tiles[10][6] = new Tile(6, 10, 6);
            Tiles[10][7] = new Tile(3, 10, 7);
            Tiles[10][8] = new Tile(5, 10, 8);
            Tiles[10][9] = new Tile(6, 10, 9);

            Tiles[11][0] = new Tile(3, 11, 0);
            Tiles[11][1] = new Tile(3, 11, 1);
            Tiles[11][2] = new Tile(1, 11, 2);
            Tiles[11][3] = new Tile(6, 11, 3);
            Tiles[11][4] = new Tile(5, 11, 4);
            Tiles[11][5] = new Tile(12, 11, 5);
            Tiles[11][6] = new Tile(8, 11, 6);
            Tiles[11][7] = new Tile(2, 11, 7);
            Tiles[11][8] = new Tile(3, 11, 8);
            Tiles[11][9] = new Tile(3, 11, 9);

            Tiles[12][0] = new Tile(9, 12, 0);
            Tiles[12][1] = new Tile(2, 12, 1);
            Tiles[12][2] = new Tile(11, 12, 2);
            Tiles[12][3] = new Tile(1, 12, 3);
            Tiles[12][4] = new Tile(8, 12, 4);
            Tiles[12][5] = new Tile(12, 12, 5);
            Tiles[12][6] = new Tile(4, 12, 6);
            Tiles[12][7] = new Tile(8, 12, 7);
            Tiles[12][8] = new Tile(10, 12, 8);
            Tiles[12][9] = new Tile(3, 12, 9);

            Tiles[13][0] = new Tile(13, 13, 0);
            Tiles[13][1] = new Tile(8, 13, 1);
            Tiles[13][2] = new Tile(12, 13, 2);
            Tiles[13][3] = new Tile(10, 13, 3);
            Tiles[13][4] = new Tile(13, 13, 4);
            Tiles[13][5] = new Tile(14, 13, 5);
            Tiles[13][6] = new Tile(9, 13, 6);
            Tiles[13][7] = new Tile(12, 13, 7);
            Tiles[13][8] = new Tile(12, 13, 8);
            Tiles[13][9] = new Tile(10, 13, 9);

            for (int i = 0; i < WIDTH; i++)
            {
                for (int j = 0; j < HEIGHT; j++)
                {
                    if (!Tiles[i][j].IsWallTop())
                    {
                        Tiles[i][j].TileUp = Tiles[i][j - 1];
                    }

                    if (!Tiles[i][j].IsWallDown())
                    {
                        Tiles[i][j].TileDown = Tiles[i][j + 1];
                    }

                    if (!Tiles[i][j].IsWallLeft())
                    {
                        Tiles[i][j].TileLeft = Tiles[i - 1][j];
                    }

                    if (!Tiles[i][j].IsWallRight())
                    {
                        Tiles[i][j].TileRight = Tiles[i + 1][j];
                    }
                }
            }

            //To allow the police officers to exit:
            //Down
            Tiles[6][9].TileUp = Tiles[6][8];
            Tiles[7][9].TileUp = Tiles[7][8];

            //Up
            Tiles[6][0].TileDown = Tiles[6][1];
            Tiles[7][0].TileDown = Tiles[7][1];

            //Left
            Tiles[0][4].TileRight = Tiles[1][4];
            Tiles[0][5].TileRight = Tiles[1][5];

            //Right
            Tiles[13][4].TileLeft = Tiles[12][4];
            Tiles[13][5].TileLeft = Tiles[12][5];

            //Placing the teleporters
            Teleporter teleporter = new Teleporter(Tiles[0][0], Tiles[13][0], Tiles[0][9], Tiles[13][9]);
            Tiles[6][4].TileRight = teleporter;
            Tiles[7][4].TileLeft = teleporter;
        }