Не правильно создается игровой уровень
На данном участке кода, пытаюсь считать символы из поля уровень и создать обьекта класса стена с определенными координатами, почему начиная со второй строки карта сьезжает почти на середину экрана?
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)]
