leonru1
05.09.2021 21:45

Здравствуйте, данный код создаёт поле игры в сапёр пользовательских размеров и расставляет пользовательское количество бомб (ещё не добавил проверку, если бомб больше, чем размер поля). Но столкнулся с проблемой: например, при вводе: Высота: 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()

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
вика3730
13.08.2021 06:35
1) перекодування даних, яке проводиться з метою зменшення їх об'єму, розміру, обсягу.
2) це процес стискування інформації (файлів, груп файлів, каталогів, цілих дисків) з метою економії дикого простору та захисту її від несанкціонованого доступу.
3) процес відновлення файлів з архіву в тому самому вигляді, який вони мали до упакування в архів
4) результат архівування
5) сучасні програмні засоби для створення та обслуговування архівів.
6) це архіви, до яких приєднано виконуваний модуль, що дозволяє витягати (розпаковувати) файли простим запуском архіву як звичайної програми (без програми-архіватора).
7)це архіви, що складаються з декількох частин (файлів), які називають томами
8)ZIP; RAR; RLE; CAB; GZIP, TAR

10)для створення і керування архівними файлами
0,0(0 оценок)
Ответ:
arhipflina
23.01.2020 05:04
Program srednee;
var
  a, b, c:integer;
  sa:real;
begin
write ('Введите а='); readln (a);
write ('Введите b='); readln (b);
write ('Введите c='); readln (c);
if (a mod 5 = 0) and (b mod 5 <> 0) and (c mod 5 = 0) then
  begin
          a:= sqr(a); writeln ('Квадрат а=', a);
          b:= sqr(b); writeln ('Квадрат b=', b);
          c:= sqr(c); writeln ('Квадрат c=', c);
  end else begin
      if (a mod 5 <> 0) and (b mod 5 = 0) and (c mod 5 <> 0) then
        begin
          a:= a+10; writeln ('а+10=', a);
          b:= b+10; writeln ('b+10=', b);
          c:= c+10; writeln ('c+10=', c);
        end else begin
          sa:=(a+b+c)/3;
          write ('Среднее арифметическое =', sa);
          end
      end
end.
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота