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

54 lines
3.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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)