public List <string> GenerateView()
        {
            int MinX = Stars.Min(s => s.Position.x);
            int MaxX = Stars.Max(s => s.Position.x);
            int MinY = Stars.Min(s => s.Position.y);
            int MaxY = Stars.Max(s => s.Position.y);

            List <string> rows = new List <string>();

            // it is enough to draw only that part of the sky where there are currently stars
            for (int y = MinY; y < MaxY + 1; y++)
            {
                string row = "";
                for (int x = MinX; x < MaxX + 1; x++)
                {
                    // if any star has the current position, it's expressed by 'X'
                    if (Stars.Any(pos => pos.Position.x == x && pos.Position.y == y))
                    {
                        row += "X";
                    }
                    else
                    {
                        row += " ";
                    }
                }
                rows.Add(row);
            }

            return(rows);
        }