hnc-vitalii/HNS/Excercises/02.11.2023 Battle Ship/main.py

54 lines
3.4 KiB
Python
Raw Normal View History

2023-11-02 06:57:41 +01:00
from tkinter import * # имортирую модуль
from tkinter import messagebox # сообщение для закрытия нашей игры
import time # импортируем модуль тайм
tk = Tk() # создаю обьект
app_running = True # создаю переменную которая будет отслеживать что наше приложение работает
size_canvas_x = 600 # создаю стороны нашего окна
size_canvas_y = 600
s_x = s_y = 10 # размер игрового поля
step_x = size_canvas_x // s_x # шаг отрисовки наших лини по горизонтали
step_y = size_canvas_y // s_y # тоже самое по вертикили
size_canvas_x = step_x * s_x # коректирую поля челочисленным делением
size_canvas_y = step_y * s_y # коректирую поля челочисленным делением
def on_closing(): # создаю функцию на момент закрытия
global app_running # передаем значение
if messagebox.askokcancel('Выход из игры',
'Хотите выйти из игры?'): # задаем вопрос на закрытие окна (если ДА тогда окно закрываеться)
app_running = False # тогда наша переменная получает новое булевое значение
tk.destroy() # закрываем приложение
tk.protocol('WM_DELETE_WINDOW',
on_closing) # определяю что я делаю на момент закрытия окна и какую функцию она будет выполнять
tk.title('Игра Морской Бой') # определяю параметры нашего окна
tk.resizable(0, 0) # делаю так чтобы окно нельзя было менять
tk.wm_attributes('-topmost', 1) # создаю атребут чтобы наше окно было по верх всех окон
canvas = Canvas(tk, width=size_canvas_x, height=size_canvas_y, bd=0,
highlightthickness=0) # создаю общию картину приложения - задаю ширину и высоту
canvas.create_rectangle(0, 0, size_canvas_x, size_canvas_y,
fill='white') # задаю прямоугольную форму окна и цвет - (белый) но в данном случае это квадрат так как стороны одинаковы!)
canvas.pack() # за пакуем наше оконо для игры
tk.update() # обновляем наше окно
def draw_tabel(): # создаю фукцию которая будет рисовать нам поле
for i in range(0, s_x + 1): # создаю цилк который отрисует нашу линию по х
canvas.create_line(step_x * i, 0, step_x * i, size_canvas_y)
for i in range(0, s_y + 1): # содаю цикл который отрисует нашу линию по y
canvas.create_line(0, step_y * i, size_canvas_x, step_y * i)
draw_tabel()
while app_running: # создем цикл для нашей игры
if app_running: # если наша переменная еще запущена
tk.update_idletasks() # тогда мы будем обновлять наш window
tk.update()
time.sleep(0.005)