diff --git a/HNS/Excercises/ShipCraft/.idea/ShipCraft.iml b/HNS/Excercises/ShipCraft/.idea/ShipCraft.iml
index 6209b69..aee9ef2 100644
--- a/HNS/Excercises/ShipCraft/.idea/ShipCraft.iml
+++ b/HNS/Excercises/ShipCraft/.idea/ShipCraft.iml
@@ -4,7 +4,7 @@
-
+
\ No newline at end of file
diff --git a/HNS/Excercises/ShipCraft/.idea/misc.xml b/HNS/Excercises/ShipCraft/.idea/misc.xml
index b16dd28..a971a2c 100644
--- a/HNS/Excercises/ShipCraft/.idea/misc.xml
+++ b/HNS/Excercises/ShipCraft/.idea/misc.xml
@@ -1,4 +1,4 @@
-
+
\ No newline at end of file
diff --git a/HNS/Excercises/ShipCraft/main.py b/HNS/Excercises/ShipCraft/main.py
index bce8aad..2956215 100644
--- a/HNS/Excercises/ShipCraft/main.py
+++ b/HNS/Excercises/ShipCraft/main.py
@@ -5,8 +5,8 @@ import math
buttons = []
field_size = 10
-ship_size = 4
-ship_direction = 0
+ship_size = 3
+ship_direction = 1
empty_field = [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
@@ -117,49 +117,56 @@ def check_possible(field, row, col):
# в противном случае - False
if ship_direction == 0:
+ # Здесь мы знаем, что корабль помещается на поле.
if field_size - row >= ship_size:
- if check_blocked(field, row, col):
- # Здесь мы знаем, что корабль помещается на поле.
# Теперь нужно проверить, не заблокировано ли какое-то из полей,
- # на которые мы хотим поставить корабль.
- # Для этого, всего поля, на которые мы его поставили бы исходя из координат row, col
- # нужно проверить с помощью вызова метода check_blocked(...)
- return True
+ for i in range(row, row + ship_size):
+ if check_blocked(field, row, col):
+ return True
if ship_direction == 1:
if field_size - col >= ship_size:
if check_blocked(field, row, col):
- # Теперь нужно проверить, не заблокировано ли какое-то из полей,
- # на которые мы хотим поставить корабль.
- # Для этого, всего поля, на которые мы его поставили бы исходя из координат row, col
- # нужно проверить с помощью вызова метода check_blocked(...)
- return True
-
+ for i in range(col, col + ship_size):
+ if check_blocked(field, row, col):
+ return True
return False
def check_blocked(field, row, col):
# Функция возвращает True, если все клетки вокруг клетки с координатами row, col
# либо находятся за пределами поля, либо в них нет корабля/они пустые
- index = row * 10 + col
- if abs(row) > field_size + 1 or abs(col) > field_size + 1:
- return True
- elif (field[index]).strip() == "":
- return True
- # Во всех других случаях, функция возвращает False
- else:
- return False
+ 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
window = Tk()
window.title("Ship Craft!")
window.geometry('450x410')
-# set_ship(1, 1, 4, 1)
-# set_ship(0, 6, 3, 0)
-# set_ship(9, 9, 1, 0)
-# set_ship(0, 0, 1, 0)
-# set_ship(9, 0, 1, 0)
-# set_ship(9, 2, 4, 1)
-# draw_field(window, my_field)
+set_ship(1, 1, 4, 1)
+set_ship(0, 6, 3, 0)
+set_ship(7, 3, 1, 0)
+draw_field(window, my_field)
# window.mainloop()
-print(check_possible(my_field, 0, 0))
+
+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])
+print("********************************************************************")
+
+
+for r in range(0, field_size):
+ possible_string = ""
+ impossible_string = ""
+ for c in range(0, field_size):
+ possible_string += str(check_possible(my_field, r, c))[0] + ", "
+ impossible_string += my_field[r * field_size + c] + ', '
+ print(possible_string[:-2] + ' ' + impossible_string[:-2])
\ No newline at end of file