diff --git a/HNC/Exercises/Ship_Battle/main.py b/HNC/Exercises/Ship_Battle/main.py index f01f2cb..c0aa5d8 100644 --- a/HNC/Exercises/Ship_Battle/main.py +++ b/HNC/Exercises/Ship_Battle/main.py @@ -67,7 +67,6 @@ def shoot(field, row, col): return ShootResult.Undefined - def draw_field(window, field): for r in range(0, field_size): for c in range(0, field_size): @@ -80,6 +79,7 @@ def draw_field(window, field): btn.bind('', lambda e, x=r, y=c: button_click(field, x, y)) buttons.append(btn) + def colorize(field, buttons): for i in range(len(field)): bg = "white" @@ -92,9 +92,42 @@ def colorize(field, buttons): buttons[i].configure(bg=bg) +def check_possible(field, row, col): + # Функция должна возвращать True, если можно поставить сюда корабль, + # в противном случае - False + + if ship_direction == 0: + if field_size - row >= ship_size: + # Здесь мы знаем, что корабль помещается на поле. + # Теперь нужно проверить, не заблокировано ли какое-то из полей, + # на которые мы хотим поставить корабль. + # Для этого, всего поля, на которые мы его поставили бы исходя из координат row, col + # нужно проверить с помощью вызова метода check_blocked(...) + return True + + if ship_direction == 1: + if field_size - col >= ship_size: + # Здесь мы знаем, что корабль помещается на поле. + # Теперь нужно проверить, не заблокировано ли какое-то из полей, + # на которые мы хотим поставить корабль. + # Для этого, всего поля, на которые мы его поставили бы исходя из координат row, col + # нужно проверить с помощью вызова метода check_blocked(...) + return True + + return False + + +def check_blocked(field, row, col): + # Функция возвращает True, если все клетки вокруг клетки с координатами row, col + # либо находятся за пределами поля, либо в них нет корабля/они пустые + # Во всех других случаях, функция возвращает False + pass + + def button_click(field, row, col): shoot(field, row, col) colorize(field, buttons) + window = Tk()