From 57b7332c5d5f59c8b52984a1716dec0baf92b0c9 Mon Sep 17 00:00:00 2001 From: danii Date: Mon, 27 Nov 2023 11:59:47 +0100 Subject: [PATCH 1/3] 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 From 9e7f15d57a7da0b464a06156bbe07a3b145e5c50 Mon Sep 17 00:00:00 2001 From: danii Date: Mon, 27 Nov 2023 18:48:30 +0100 Subject: [PATCH 2/3] New --- HNC/Exercises/Ship_Battle/main.py | 45 +++++++++++++++---------------- 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/HNC/Exercises/Ship_Battle/main.py b/HNC/Exercises/Ship_Battle/main.py index 6009055..a51a414 100644 --- a/HNC/Exercises/Ship_Battle/main.py +++ b/HNC/Exercises/Ship_Battle/main.py @@ -99,25 +99,15 @@ 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 - # нужно проверить с помощью вызова метода check_blocked(...) - return True + for r in range(row, row + ship_size): + if check_blocked(field, row, col): + return True if ship_direction == 1: if field_size - col >= ship_size: - for c in range(row, row + ship_size): - index=r * 10 + col - # Здесь мы знаем, что корабль помещается на поле. - # Теперь нужно проверить, не заблокировано ли какое-то из полей, - # на которые мы хотим поставить корабль. - # Для этого, всего поля, на которые мы его поставили бы исходя из координат row, col - # нужно проверить с помощью вызова метода check_blocked(...) - return True + for c in range(col, col + ship_size): + if check_blocked(field, row, col): + return True return False @@ -154,13 +144,22 @@ set_ship(5, 8, 3, 0) draw_field(window, my_field) colorize(my_field, buttons) -window.mainloop() +#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] + ', ' + # 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 + # print(blocked_string[:-2] + ' ' + ship_string[:-2]) + +for r in range(0, field_size): + blocked_string = '' + ship_string = '' + for c in range(0, field_size): + blocked_string += str(check_possible(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 From ade5101030aa014c416db57aa8bb498a1cd3937c Mon Sep 17 00:00:00 2001 From: danii Date: Mon, 27 Nov 2023 19:14:10 +0100 Subject: [PATCH 3/3] 1 --- HNC/Exercises/Ship_Battle/main.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/HNC/Exercises/Ship_Battle/main.py b/HNC/Exercises/Ship_Battle/main.py index a51a414..b9f93b0 100644 --- a/HNC/Exercises/Ship_Battle/main.py +++ b/HNC/Exercises/Ship_Battle/main.py @@ -99,13 +99,13 @@ def check_possible(field, row, col): if ship_direction == 0: if field_size - row >= ship_size: - for r in range(row, row + ship_size): + for r in range(col, col + ship_size): if check_blocked(field, row, col): return True if ship_direction == 1: if field_size - col >= ship_size: - for c in range(col, col + ship_size): + for c in range(row, row + ship_size): if check_blocked(field, row, col): return True @@ -155,11 +155,11 @@ colorize(my_field, buttons) # print(blocked_string[:-2] + ' ' + ship_string[:-2]) -for r in range(0, field_size): - blocked_string = '' - ship_string = '' - for c in range(0, field_size): - blocked_string += str(check_possible(my_field, r, c))[0] + ', ' - ship_string += my_field[r * field_size + c] + ', ' +# for r in range(0, field_size): +# blocked_string = '' +# ship_string = '' +# for c in range(0, field_size): +# blocked_string += str(check_possible(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 +# print(blocked_string[:-2] + ' ' + ship_string[:-2]) \ No newline at end of file