Не правильно создается игровой уровень

На данном участке кода, пытаюсь считать символы из поля уровень и создать обьекта класса стена с определенными координатами, почему начиная со второй строки карта сьезжает почти на середину экрана?

class Map(Wall):
    def __init__(self, x, y):
        """
        A constructor that initializes the game board.
        """
        self.x = x
        self.y = y
        self.walls = []
        self.level = '''#########\n
                        #       #\n
                        #       #\n
                        #         #############\n
                         ####                 #\n
                            #####         ####\n
                                ############\n
                     '''

    def draw_background(self):
        """
        A function that draws the graces of the level and objects inside it
        """
        pg.draw.rect(SCREEN, YELLOW, (0, 0, 800, 600))

    def create_level(self):
        """
        A function that draws the boundaries of the game level.
        """
        for i in self.level:
            if i == "\n":
                self.y += 10
                self.x = 0

            if i == "#":
                self.walls.append(Wall(self.x, self.y))
                self.x += 10

            if i == " ":
                self.x += 10 

Пример


Ответы (1 шт):

Автор решения: vp_arth

Всё очень просто, в первой строке нет тех пробелов, что есть в остальных строках:

>>> print('''#########\n
...                         #       #\n
...                         #       #\n
...                         #         #############\n
...                          ####                 #\n
...                             #####         ####\n
...                                 ############\n
...                      '''
... )
#########

                        #       #

                        #       #

                        #         #############

                         ####                 #

                            #####         ####

                                ############

Просто сделайте перенос, после открытия строкового литерала.
Переносы строк, вероятно, тоже лишние. Настоящие переносы тоже присутствуют в многострочном литерале.

print('''
    #########
    #       #
    #       #
    #         #############
     ####                 #
        #####         ####
            ############
''')

Ещё одна возможность:

levels = ("####\n"
          "#  #\n"
          "####")

И ещё:

from textwrap import dedent

s = """\
       #####
       #   #
       #####
"""

print(dedent(s))

level = '''
####
#  #
####
'''

walls = []
for i, line in enumerate(level.strip('\n').split('\n')):
    print(line)
    for j, cell in enumerate(line):
        if cell == '#':
            walls.append((j, i))

print(walls)
####
#  #
####
[(0, 0), (1, 0), (2, 0), (3, 0), (0, 1), (3, 1), (0, 2), (1, 2), (2, 2), (3, 2)]
→ Ссылка