From 57b7332c5d5f59c8b52984a1716dec0baf92b0c9 Mon Sep 17 00:00:00 2001 From: danii Date: Mon, 27 Nov 2023 11:59:47 +0100 Subject: [PATCH] New change --- HNC/Exercises/Ship_Battle/main.py | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/HNC/Exercises/Ship_Battle/main.py b/HNC/Exercises/Ship_Battle/main.py index c0aa5d8..6009055 100644 --- a/HNC/Exercises/Ship_Battle/main.py +++ b/HNC/Exercises/Ship_Battle/main.py @@ -2,6 +2,7 @@ from tkinter import * from enum import Enum field_size = 10 +ship_size = [] buttons = [] @@ -98,15 +99,19 @@ def check_possible(field, row, col): if ship_direction == 0: if field_size - row >= ship_size: + for r in range(col, col + ship_size): + index=row * 10 + c # Здесь мы знаем, что корабль помещается на поле. # Теперь нужно проверить, не заблокировано ли какое-то из полей, # на которые мы хотим поставить корабль. - # Для этого, всего поля, на которые мы его поставили бы исходя из координат row, col + # Для этого, все поля, на которые мы его поставили бы исходя из координат row, col # нужно проверить с помощью вызова метода check_blocked(...) return True if ship_direction == 1: if field_size - col >= ship_size: + for c in range(row, row + ship_size): + index=r * 10 + col # Здесь мы знаем, что корабль помещается на поле. # Теперь нужно проверить, не заблокировано ли какое-то из полей, # на которые мы хотим поставить корабль. @@ -121,7 +126,13 @@ def check_blocked(field, row, col): # Функция возвращает True, если все клетки вокруг клетки с координатами row, col # либо находятся за пределами поля, либо в них нет корабля/они пустые # Во всех других случаях, функция возвращает False - pass + for r in range(row - 1, row + 2): + for c in range(col - 1, col + 2): + if 0 < r < field_size and 0 < c < field_size: + if (field[r * field_size + c]).strip() != '': + return False + + return True def button_click(field, row, col): @@ -137,8 +148,19 @@ window.geometry('450x410') set_ship(1, 1, 4, 1) set_ship(0, 6, 3, 0) set_ship(7, 3, 1, 0) +set_ship(9, 9, 1, 0) +set_ship(5, 8, 3, 0) draw_field(window, my_field) colorize(my_field, buttons) -window.mainloop() \ No newline at end of file +window.mainloop() + +# for r in range(0, field_size): +# blocked_string = '' +# ship_string = '' +# for c in range(0, field_size): +# blocked_string += str(check_blocked(my_field, r, c))[0] + ', ' +# ship_string += my_field[r * field_size + c] + ', ' + +# print(blocked_string[:-2] + ' ' + ship_string[:-2]) \ No newline at end of file