Я пытаюсь улучшить свои навыки python, создав игру, похожую на румяна, с pygame. Я начал с попытки создания простого генератора уровней, но столкнулся с проблемой, когда в матрицу карты вносится больше значений, чем должно быть.
Следующий код - моя попытка добавить все соседние элементы в списке для последующего случайного выбора элемента, который будет добавлен на карту.
def generate(self):
print(f'generating a new map (difficulty: {self.diff})')
next_room = (random.randint(0, self.size-1), random.randint(0, self.size-1))
print(next_room)
room_options = []
room_options.append(next_room)
# left
if next_room[0] != 0:
room_options.append( (next_room[0]-1, next_room[1]) )
# right
if next_room[0] < self.size-1:
room_options.append( (next_room[0]+1, next_room[1]) )
# top
if next_room[1] != 0:
room_options.append( (next_room[0], next_room[1]-1) )
# botttom
if next_room[1] < self.size-1:
room_options.append( (next_room[0], next_room[1]+1) )
# top left
if next_room[0] != 0 and next_room[1] != 0:
room_options.append( (next_room[0]-1, next_room[1]-1) )
# top right
if next_room[0] != 0 and next_room[1] != self.size-1:
room_options.append( (next_room[0]-1, next_room[1]+1) )
# bottom left
if next_room[0] != self.size-1 and next_room[1] != 0:
room_options.append( (next_room[0]+1, next_room[1]-1) )
# bottom right
if next_room[0] != self.size-1 and next_room[1] != self.size-1:
room_options.append( (next_room[0]+1, next_room[1]+1) )
for coords in room_options:
print(coords)
x = coords[0]
y = coords[1]
self.map[x][y] = "O"
Когда я распечатываю все координаты, я получаю значения, которые имеют смысл, например
(7, 2) (6, 2) (8, 2) (7, 1) (7, 3) (6, 1) (6, 3) (8, 1) (8, 3)
Но когда я пытаюсь изменить значения по умолчанию в этой позиции с '#' на 'O', чтобы визуализировать это с помощью numpy.matrix(self.map)
, я получаю что-то похожее на это
[['#' 'O' 'O' 'O' '#' '#' '#' '#' '#' '#']
['#' 'O' 'O' 'O' '#' '#' '#' '#' '#' '#']
['#' 'O' 'O' 'O' '#' '#' '#' '#' '#' '#']
['#' 'O' 'O' 'O' '#' '#' '#' '#' '#' '#']
['#' 'O' 'O' 'O' '#' '#' '#' '#' '#' '#']
['#' 'O' 'O' 'O' '#' '#' '#' '#' '#' '#']
['#' 'O' 'O' 'O' '#' '#' '#' '#' '#' '#']
['#' 'O' 'O' 'O' '#' '#' '#' '#' '#' '#']
['#' 'O' 'O' 'O' '#' '#' '#' '#' '#' '#']
['#' 'O' 'O' 'O' '#' '#' '#' '#' '#' '#']]
Обновление: я пытался чтобы диагностировать эту проблему, но до сих пор не выяснить, что именно не так. У меня, однако, есть немного лучшее представление о том, что происходит. каждый раз, когда он записывает что-либо в позицию, он перезаписывает весь столбец. Я просто понятия не имею, почему. Вот дополнительные выходные данные отладки, чтобы показать это.
(6, 1)[0]
[['#' '(6, 1)[0]' '#' '#' '#' '#' '#' '#' '#' '#']
['#' '(6, 1)[0]' '#' '#' '#' '#' '#' '#' '#' '#']
['#' '(6, 1)[0]' '#' '#' '#' '#' '#' '#' '#' '#']
['#' '(6, 1)[0]' '#' '#' '#' '#' '#' '#' '#' '#']
['#' '(6, 1)[0]' '#' '#' '#' '#' '#' '#' '#' '#']
['#' '(6, 1)[0]' '#' '#' '#' '#' '#' '#' '#' '#']
['#' '(6, 1)[0]' '#' '#' '#' '#' '#' '#' '#' '#']
['#' '(6, 1)[0]' '#' '#' '#' '#' '#' '#' '#' '#']
['#' '(6, 1)[0]' '#' '#' '#' '#' '#' '#' '#' '#']
['#' '(6, 1)[0]' '#' '#' '#' '#' '#' '#' '#' '#']]
(5, 1)[1]
[['#' '(5, 1)[1]' '#' '#' '#' '#' '#' '#' '#' '#']
['#' '(5, 1)[1]' '#' '#' '#' '#' '#' '#' '#' '#']
['#' '(5, 1)[1]' '#' '#' '#' '#' '#' '#' '#' '#']
['#' '(5, 1)[1]' '#' '#' '#' '#' '#' '#' '#' '#']
['#' '(5, 1)[1]' '#' '#' '#' '#' '#' '#' '#' '#']
['#' '(5, 1)[1]' '#' '#' '#' '#' '#' '#' '#' '#']
['#' '(5, 1)[1]' '#' '#' '#' '#' '#' '#' '#' '#']
['#' '(5, 1)[1]' '#' '#' '#' '#' '#' '#' '#' '#']
['#' '(5, 1)[1]' '#' '#' '#' '#' '#' '#' '#' '#']
['#' '(5, 1)[1]' '#' '#' '#' '#' '#' '#' '#' '#']]
(7, 1)[2]
[['#' '(7, 1)[2]' '#' '#' '#' '#' '#' '#' '#' '#']
['#' '(7, 1)[2]' '#' '#' '#' '#' '#' '#' '#' '#']
['#' '(7, 1)[2]' '#' '#' '#' '#' '#' '#' '#' '#']
['#' '(7, 1)[2]' '#' '#' '#' '#' '#' '#' '#' '#']
['#' '(7, 1)[2]' '#' '#' '#' '#' '#' '#' '#' '#']
['#' '(7, 1)[2]' '#' '#' '#' '#' '#' '#' '#' '#']
['#' '(7, 1)[2]' '#' '#' '#' '#' '#' '#' '#' '#']
['#' '(7, 1)[2]' '#' '#' '#' '#' '#' '#' '#' '#']
['#' '(7, 1)[2]' '#' '#' '#' '#' '#' '#' '#' '#']
['#' '(7, 1)[2]' '#' '#' '#' '#' '#' '#' '#' '#']]
(6, 0)[3]
[['(6, 0)[3]' '(7, 1)[2]' '#' '#' '#' '#' '#' '#' '#' '#']
['(6, 0)[3]' '(7, 1)[2]' '#' '#' '#' '#' '#' '#' '#' '#']
['(6, 0)[3]' '(7, 1)[2]' '#' '#' '#' '#' '#' '#' '#' '#']
['(6, 0)[3]' '(7, 1)[2]' '#' '#' '#' '#' '#' '#' '#' '#']
['(6, 0)[3]' '(7, 1)[2]' '#' '#' '#' '#' '#' '#' '#' '#']
['(6, 0)[3]' '(7, 1)[2]' '#' '#' '#' '#' '#' '#' '#' '#']
['(6, 0)[3]' '(7, 1)[2]' '#' '#' '#' '#' '#' '#' '#' '#']
['(6, 0)[3]' '(7, 1)[2]' '#' '#' '#' '#' '#' '#' '#' '#']
['(6, 0)[3]' '(7, 1)[2]' '#' '#' '#' '#' '#' '#' '#' '#']
['(6, 0)[3]' '(7, 1)[2]' '#' '#' '#' '#' '#' '#' '#' '#']]
(6, 2)[4]
[['(6, 0)[3]' '(7, 1)[2]' '(6, 2)[4]' '#' '#' '#' '#' '#' '#' '#']
['(6, 0)[3]' '(7, 1)[2]' '(6, 2)[4]' '#' '#' '#' '#' '#' '#' '#']
['(6, 0)[3]' '(7, 1)[2]' '(6, 2)[4]' '#' '#' '#' '#' '#' '#' '#']
['(6, 0)[3]' '(7, 1)[2]' '(6, 2)[4]' '#' '#' '#' '#' '#' '#' '#']
['(6, 0)[3]' '(7, 1)[2]' '(6, 2)[4]' '#' '#' '#' '#' '#' '#' '#']
['(6, 0)[3]' '(7, 1)[2]' '(6, 2)[4]' '#' '#' '#' '#' '#' '#' '#']
['(6, 0)[3]' '(7, 1)[2]' '(6, 2)[4]' '#' '#' '#' '#' '#' '#' '#']
['(6, 0)[3]' '(7, 1)[2]' '(6, 2)[4]' '#' '#' '#' '#' '#' '#' '#']
['(6, 0)[3]' '(7, 1)[2]' '(6, 2)[4]' '#' '#' '#' '#' '#' '#' '#']
['(6, 0)[3]' '(7, 1)[2]' '(6, 2)[4]' '#' '#' '#' '#' '#' '#' '#']]
(5, 0)[5]
[['(5, 0)[5]' '(7, 1)[2]' '(6, 2)[4]' '#' '#' '#' '#' '#' '#' '#']
['(5, 0)[5]' '(7, 1)[2]' '(6, 2)[4]' '#' '#' '#' '#' '#' '#' '#']
['(5, 0)[5]' '(7, 1)[2]' '(6, 2)[4]' '#' '#' '#' '#' '#' '#' '#']
['(5, 0)[5]' '(7, 1)[2]' '(6, 2)[4]' '#' '#' '#' '#' '#' '#' '#']
['(5, 0)[5]' '(7, 1)[2]' '(6, 2)[4]' '#' '#' '#' '#' '#' '#' '#']
['(5, 0)[5]' '(7, 1)[2]' '(6, 2)[4]' '#' '#' '#' '#' '#' '#' '#']
['(5, 0)[5]' '(7, 1)[2]' '(6, 2)[4]' '#' '#' '#' '#' '#' '#' '#']
['(5, 0)[5]' '(7, 1)[2]' '(6, 2)[4]' '#' '#' '#' '#' '#' '#' '#']
['(5, 0)[5]' '(7, 1)[2]' '(6, 2)[4]' '#' '#' '#' '#' '#' '#' '#']
['(5, 0)[5]' '(7, 1)[2]' '(6, 2)[4]' '#' '#' '#' '#' '#' '#' '#']]
(5, 2)[6]
[['(5, 0)[5]' '(7, 1)[2]' '(5, 2)[6]' '#' '#' '#' '#' '#' '#' '#']
['(5, 0)[5]' '(7, 1)[2]' '(5, 2)[6]' '#' '#' '#' '#' '#' '#' '#']
['(5, 0)[5]' '(7, 1)[2]' '(5, 2)[6]' '#' '#' '#' '#' '#' '#' '#']
['(5, 0)[5]' '(7, 1)[2]' '(5, 2)[6]' '#' '#' '#' '#' '#' '#' '#']
['(5, 0)[5]' '(7, 1)[2]' '(5, 2)[6]' '#' '#' '#' '#' '#' '#' '#']
['(5, 0)[5]' '(7, 1)[2]' '(5, 2)[6]' '#' '#' '#' '#' '#' '#' '#']
['(5, 0)[5]' '(7, 1)[2]' '(5, 2)[6]' '#' '#' '#' '#' '#' '#' '#']
['(5, 0)[5]' '(7, 1)[2]' '(5, 2)[6]' '#' '#' '#' '#' '#' '#' '#']
['(5, 0)[5]' '(7, 1)[2]' '(5, 2)[6]' '#' '#' '#' '#' '#' '#' '#']
['(5, 0)[5]' '(7, 1)[2]' '(5, 2)[6]' '#' '#' '#' '#' '#' '#' '#']]
(7, 0)[7]
[['(7, 0)[7]' '(7, 1)[2]' '(5, 2)[6]' '#' '#' '#' '#' '#' '#' '#']
['(7, 0)[7]' '(7, 1)[2]' '(5, 2)[6]' '#' '#' '#' '#' '#' '#' '#']
['(7, 0)[7]' '(7, 1)[2]' '(5, 2)[6]' '#' '#' '#' '#' '#' '#' '#']
['(7, 0)[7]' '(7, 1)[2]' '(5, 2)[6]' '#' '#' '#' '#' '#' '#' '#']
['(7, 0)[7]' '(7, 1)[2]' '(5, 2)[6]' '#' '#' '#' '#' '#' '#' '#']
['(7, 0)[7]' '(7, 1)[2]' '(5, 2)[6]' '#' '#' '#' '#' '#' '#' '#']
['(7, 0)[7]' '(7, 1)[2]' '(5, 2)[6]' '#' '#' '#' '#' '#' '#' '#']
['(7, 0)[7]' '(7, 1)[2]' '(5, 2)[6]' '#' '#' '#' '#' '#' '#' '#']
['(7, 0)[7]' '(7, 1)[2]' '(5, 2)[6]' '#' '#' '#' '#' '#' '#' '#']
['(7, 0)[7]' '(7, 1)[2]' '(5, 2)[6]' '#' '#' '#' '#' '#' '#' '#']]
(7, 2)[8]
[['(7, 0)[7]' '(7, 1)[2]' '(7, 2)[8]' '#' '#' '#' '#' '#' '#' '#']
['(7, 0)[7]' '(7, 1)[2]' '(7, 2)[8]' '#' '#' '#' '#' '#' '#' '#']
['(7, 0)[7]' '(7, 1)[2]' '(7, 2)[8]' '#' '#' '#' '#' '#' '#' '#']
['(7, 0)[7]' '(7, 1)[2]' '(7, 2)[8]' '#' '#' '#' '#' '#' '#' '#']
['(7, 0)[7]' '(7, 1)[2]' '(7, 2)[8]' '#' '#' '#' '#' '#' '#' '#']
['(7, 0)[7]' '(7, 1)[2]' '(7, 2)[8]' '#' '#' '#' '#' '#' '#' '#']
['(7, 0)[7]' '(7, 1)[2]' '(7, 2)[8]' '#' '#' '#' '#' '#' '#' '#']
['(7, 0)[7]' '(7, 1)[2]' '(7, 2)[8]' '#' '#' '#' '#' '#' '#' '#']
['(7, 0)[7]' '(7, 1)[2]' '(7, 2)[8]' '#' '#' '#' '#' '#' '#' '#']
['(7, 0)[7]' '(7, 1)[2]' '(7, 2)[8]' '#' '#' '#' '#' '#' '#' '#']]