Add some features

This commit is contained in:
Artur Savitskiy 2023-11-27 19:16:07 +01:00
parent 921b56aad7
commit f6b7bf0354
1 changed files with 22 additions and 5 deletions

View File

@ -2,6 +2,8 @@ from tkinter import *
from enum import Enum from enum import Enum
field_size = 10 field_size = 10
ship_size = 4
ship_direction = 0
buttons = [] buttons = []
@ -101,7 +103,7 @@ def check_possible(field, row, col):
# Здесь мы знаем, что корабль помещается на поле. # Здесь мы знаем, что корабль помещается на поле.
# Теперь нужно проверить, не заблокировано ли какое-то из полей, # Теперь нужно проверить, не заблокировано ли какое-то из полей,
# на которые мы хотим поставить корабль. # на которые мы хотим поставить корабль.
# Для этого, всего поля, на которые мы его поставили бы исходя из координат row, col # Для этого, все поля, на которые мы его поставили бы исходя из координат row, col
# нужно проверить с помощью вызова метода check_blocked(...) # нужно проверить с помощью вызова метода check_blocked(...)
return True return True
@ -110,7 +112,7 @@ def check_possible(field, row, col):
# Здесь мы знаем, что корабль помещается на поле. # Здесь мы знаем, что корабль помещается на поле.
# Теперь нужно проверить, не заблокировано ли какое-то из полей, # Теперь нужно проверить, не заблокировано ли какое-то из полей,
# на которые мы хотим поставить корабль. # на которые мы хотим поставить корабль.
# Для этого, всего поля, на которые мы его поставили бы исходя из координат row, col # Для этого, все поля, на которые мы его поставили бы исходя из координат row, col
# нужно проверить с помощью вызова метода check_blocked(...) # нужно проверить с помощью вызова метода check_blocked(...)
return True return True
@ -121,7 +123,13 @@ def check_blocked(field, row, col):
# Функция возвращает True, если все клетки вокруг клетки с координатами row, col # Функция возвращает True, если все клетки вокруг клетки с координатами row, col
# либо находятся за пределами поля, либо в них нет корабля/они пустые # либо находятся за пределами поля, либо в них нет корабля/они пустые
# Во всех других случаях, функция возвращает False # Во всех других случаях, функция возвращает 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): def button_click(field, row, col):
@ -129,7 +137,6 @@ def button_click(field, row, col):
colorize(field, buttons) colorize(field, buttons)
window = Tk() window = Tk()
window.title("Ship Craft!") window.title("Ship Craft!")
window.geometry('450x410') window.geometry('450x410')
@ -141,4 +148,14 @@ set_ship(7, 3, 1, 0)
draw_field(window, my_field) draw_field(window, my_field)
colorize(my_field, buttons) 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] + ', '
#print(blocked_string[:-2] + ' ' + ship_string[:-2])
print(ship_string[:-2])