Здравствуйте, данный код создаёт поле игры в сапёр пользовательских размеров и расставляет пользовательское количество бомб (ещё не добавил проверку, если бомб больше, чем размер поля). Но столкнулся с проблемой: например, при вводе: Высота: 10
Ширина: 10
Сколько бомб: 98
Во время расстановки бомб код расставляет не по координатам, точнее вторую координату он соблюдает, и в итоге бомбы расставляются на всех строках поля по координатам y.
Как это исправить?

import random

def create_field(height, width):
return [[[0] * width] * height]

def place_bombs(field, number):
x_y_bombs = []
width = len(field[0])
height = len(field)
if number <= height * width // 2:
while len(x_y_bombs) < number:
x_y_bombs.append([random.randint(0, height - 1), random.randint(0, width - 1)])
temp = x_y_bombs.copy()
del temp[-1]
for item in temp:
if x_y_bombs[-1] == item:
del x_y_bombs[-1]
for coord in x_y_bombs:
field[coord[0]][coord[-1]] = 'x'
else:
number = height * width - number
field = [[['x'] * width] * height][0]
while len(x_y_bombs) < number:
x_y_bombs.append([random.randint(0, height - 1), random.randint(0, width - 1)])
temp = x_y_bombs.copy()
del temp[-1]
for item in temp:
if x_y_bombs[-1] == item:
del x_y_bombs[-1]
for coord in x_y_bombs:
field[coord[0]][coord[-1]] = 0
return field

def main():
field = create_field(int(input('Высота: ')), int(input('Ширина: ')))[0]
field = place_bombs(field, int(input('Сколько бомб: ')))
print(field)

if __name__ == '__main__':
main()

Filipok220 Filipok220    2   02.02.2022 15:34    0

Другие вопросы по теме Информатика