54 lines
3.4 KiB
Python
54 lines
3.4 KiB
Python
|
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)
|