private void SeedGrid()
        {
            Random seedCoordinates = new Random();

            for (int x = 0; x < Height; x++)
            {
                for (int y = 0; y < Width; y++)
                {
                    int cellIsAlive = seedCoordinates.Next(2);
                    if (cellIsAlive == 1)
                    {
                        _grid[x, y] = new Alive();
                    }
                    else
                    {
                        _grid[x, y] = new Dead();
                    }
                }
            }
        }
        public void Advance()
        {
            for (int x = 0; x < Height; x++)
            {
                for (int y = 0; y < Width; y++)
                {
                    _grid[x, y].NumberOfLiveNeighbours = GetCountOfLiveNeighbours(x, y);
                }
            }

            for (int x = 0; x < Height; x++)
            {
                for (int y = 0; y < Width; y++)
                {
                    var cell = _grid[x, y];
                    if (cell is Alive)
                    {
                        if (cell.NumberOfLiveNeighbours < 2)
                        {
                            _grid[x, y] = new Dead();
                        }
                        if (cell.NumberOfLiveNeighbours == 2 || cell.NumberOfLiveNeighbours == 3)
                        {
                            _grid[x, y] = new Alive();
                        }
                        if (cell.NumberOfLiveNeighbours > 3)
                        {
                            _grid[x, y] = new Dead();
                        }
                    }

                    if (cell is Dead)
                    {
                        if (cell.NumberOfLiveNeighbours == 3)
                        {
                            _grid[x, y] = new Alive();
                        }
                    }
                }
            }
        }