Комментарии:
Как я и писал под предыдущим видео барьерные элементы лишние (и весь сопутствующий им функционал). Я написал функцию, которая подсчитывает количество мин вокруг конкретной кнопки. В этой функции самое главное - это проверка правильности координат. Короче, вот:
def countMinesAround(self, btn:MSButton):
mines = 0
for dx in [-1, 0, 1]:
for dy in [-1, 0, 1]:
if not dx and not dy:
continue
x, y = btn.x + dx, btn.y + dy
if x<0 or y<0 or x>=MineSweeper.COLUMNS or y>=MineSweeper.ROWS:
continue
if self.buttons[y][x].is_mine:
mines += 1
return mines
Невероятно крутая штука, вряд ли я прям сам такое сделал бы, но зато я понял принцип работы ООП(не выучил, а понял), а так же убедился, на сколько это удобнее в программировании! Спасибо вам большое!
Ответитьfor row_num in range(max(i-1, 0), min(i+1, Minesweeper.ROW)):
for col_num in range(max(j-1, 0), min(j+1, Minesweeper.COLUMNS)):
neighbour = self.buttons[row_num][col_num]
И получаем окрестность Мура на ограниченном поле безо всяких граничных элементов, которые только память занимают.
Благодарю!
ОтветитьЗдравствуйте, делал всё по вашим видео но у меня сохранились наши буферные столбы и строки
Ответитьну это идея из тортминатора
Ответитьспасибо!!!
ОтветитьЗдравствуйте, помогите пожалуйста с информатикой на завтра надо срочно вопрос:сколько единиц в двоичной записи десятичного числа 300
ОтветитьОтличное ведео, пожулуйста не затягивайте продолжение. Уже 8 дней прошло((
Ответитьможно сделать так, что расставляя бомбы в поле, сразу прибавлять к count_bomb +=1 ко всем находящимся вокруг счетчикам, так мы уменьшим количество проходов по полю, до количества мин на поле(сейчас мы считаем для каждой кнопки, а будем считать только для каждой мины) при 10 минах на поле 100 на 100, это 10 проходов против 10000.
ОтветитьСпасибо. Очень познавательно!
ОтветитьTkinter не лучший инструмент. Расставлять кнопки - тоже не лучшее решение ...
Что если захочеться стилизировать ячейки/поля ?
Теперь понятно, как сапер изнутри работает)
Ответить