Привет) В строчке self.POLE[col][row] = a[result]
я меняю один элемент двумерного списка, а у меня получается кака-то фигня… Он как будто проходит по всем спискам и меняет в них нужный мне элемент…Я знаю, что скорее всего это что-то очевидное, но я не понимаю в чём проблема и как это исправить…
Это морской бой. Считывается параметр result и в зависимости от него я меняю клетку с координатами col row на соотвецтвующее значения словаря a. А у меня меняется не один элемент, а все элементы этого номера в каждом списке…
Выводит:
..........
..........
**********
..........
..........
..........
**********
..........
..........
..........
А нужно:
..........
..........
*.........
..........
..........
..........
.........*
..........
..........
..........
def kras(POLE, x, y):
b = [(x + 1, y + 1), (x - 1, y - 1), (x - 1, y + 1), (x + 1, y - 1),
(x - 1, y), (x + 1, y), (x, y - 1), (x, y + 1)]
return list(filter(lambda z: z[0] in range(0, 10)
and z[1] in range(0, 10), b))
class SeaMap:
def __init__(self):
self.POLE = [['.'] * 10] * 10
def shoot(self, row, col, result):
a = {'miss': '*', 'hit': 'x'}
self.POLE[col][row] = a[result]
print(self.POLE[row][col], a[result], col, row, self.POLE[col])
'''if result == 'sink':
for i in kras(self.POLE, row, col):
self.POLE[i[1]][i[0]] = '*' '''
def cell(self, row, col):
return self.POLE[col][row]
sm = SeaMap()
sm.shoot(2, 0, 'miss')
sm.shoot(6, 9, 'miss')
for row in range(10):
for col in range(10):
print(sm.cell(row, col), end='')
print()