Merge pull request #6 from Anymorexxx/Dev #7
7 changed files with 333 additions and 1 deletions
BIN
Docs/certificate-7243346.pdf
Normal file
BIN
Docs/certificate-7243346.pdf
Normal file
Binary file not shown.
BIN
Docs/ЗАДАНИЕ НА КУРСОВОЙ ПРОЕКТ.docx
Normal file
BIN
Docs/ЗАДАНИЕ НА КУРСОВОЙ ПРОЕКТ.docx
Normal file
Binary file not shown.
BIN
Docs/КУРСОВОЙ ПРОЕКТ Шишкина 316ИС.docx
Normal file
BIN
Docs/КУРСОВОЙ ПРОЕКТ Шишкина 316ИС.docx
Normal file
Binary file not shown.
314
Docs/Курсовой проект.txt
Normal file
314
Docs/Курсовой проект.txt
Normal file
|
|
@ -0,0 +1,314 @@
|
||||||
|
Курсовой проект
|
||||||
|
Игра «собачья академия»
|
||||||
|
|
||||||
|
База данных:
|
||||||
|
Структура базы данных содержит шесть таблиц: Auth, Users, Dogs, Questions, GameSession, и Notifications.
|
||||||
|
1. Таблица Auth
|
||||||
|
Назначение: Хранит данные для аутентификации пользователей.
|
||||||
|
Поля:
|
||||||
|
user_id (PK) – первичный ключ, связывает пользователя с таблицей Users.
|
||||||
|
login (String, уникальный) – логин пользователя.
|
||||||
|
password (String) – хэш пароля пользователя.
|
||||||
|
Связи:
|
||||||
|
Один к одному с таблицей Users (через user_id).
|
||||||
|
2. Таблица Users
|
||||||
|
Назначение: Основная таблица с профилями пользователей.
|
||||||
|
Поля:
|
||||||
|
user_id (PK, FK) – первичный ключ, внешний ключ из Auth.
|
||||||
|
dog_id (FK) – внешний ключ, связывает с таблицей Dogs.
|
||||||
|
username (String) – имя пользователя.
|
||||||
|
level (Integer, по умолчанию 1) – текущий уровень пользователя.
|
||||||
|
achievement (Text) – достижения пользователя.
|
||||||
|
Связи:
|
||||||
|
Один к одному с Auth.
|
||||||
|
Один к одному с Dogs (через dog_id).
|
||||||
|
Один ко многим с GameSession.
|
||||||
|
Один ко многим с Notifications.
|
||||||
|
3. Таблица Dogs
|
||||||
|
Назначение: Хранит данные о собаках.
|
||||||
|
Поля:
|
||||||
|
dog_id (PK) – первичный ключ.
|
||||||
|
breed (String) – порода собаки.
|
||||||
|
characteristics (Text) – характеристики.
|
||||||
|
behavior (Text) – описание поведения.
|
||||||
|
care_info (Text) – информация об уходе.
|
||||||
|
admin_comments (Text) – комментарии администратора.
|
||||||
|
Связи:
|
||||||
|
Один ко многим с Users.
|
||||||
|
Один ко многим с Questions.
|
||||||
|
4. Таблица Questions
|
||||||
|
Назначение: Хранит вопросы, связанные с уходом за собаками.
|
||||||
|
Поля:
|
||||||
|
question_id (PK) – первичный ключ.
|
||||||
|
dog_id (FK) – внешний ключ, связывает с таблицей Dogs.
|
||||||
|
question_text (Text, обязательное) – текст вопроса.
|
||||||
|
image_url (String) – ссылка на изображение.
|
||||||
|
helpful_info (Text) – полезная информация для ответа.
|
||||||
|
incorrect_attempts (Integer, по умолчанию 0) – количество неверных попыток.
|
||||||
|
Связи:
|
||||||
|
Один ко многим с Dogs.
|
||||||
|
5. Таблица GameSession
|
||||||
|
Назначение: Хранит данные о сессиях пользователей в игре.
|
||||||
|
Поля:
|
||||||
|
session_id (PK) – первичный ключ.
|
||||||
|
user_id (FK) – внешний ключ из Users.
|
||||||
|
level (Integer, обязательное) – уровень игры.
|
||||||
|
score (Integer, по умолчанию 0) – очки, набранные за сессию.
|
||||||
|
duration (Integer) – продолжительность сессии (в секундах).
|
||||||
|
steps (Integer, по умолчанию 0) – количество шагов.
|
||||||
|
start_time (DateTime) – время начала сессии.
|
||||||
|
end_time (DateTime) – время окончания сессии.
|
||||||
|
health (Integer, по умолчанию 100) – здоровье в игре.
|
||||||
|
hunger (Integer, по умолчанию 0) – показатель голода.
|
||||||
|
sleepiness (Integer, по умолчанию 0) – показатель сонливости.
|
||||||
|
Уникальные ограничения:
|
||||||
|
user_id и level – уникальная комбинация.
|
||||||
|
Связи:
|
||||||
|
Один ко многим с Users.
|
||||||
|
6. Таблица Notifications
|
||||||
|
Назначение: Хранит уведомления для пользователей.
|
||||||
|
Поля:
|
||||||
|
notification_id (PK) – первичный ключ.
|
||||||
|
user_id (FK) – внешний ключ из Users.
|
||||||
|
message (Text, обязательное) – текст уведомления.
|
||||||
|
timestamp (DateTime) – время отправки уведомления (по умолчанию текущее время).
|
||||||
|
is_read (Boolean, по умолчанию False) – прочитано или нет.
|
||||||
|
Связи:
|
||||||
|
Один ко многим с Users.
|
||||||
|
|
||||||
|
Главное окно.
|
||||||
|
Главное окно представляет собой развилку, где пользователь выбирает, нажимая на нужную кнопку, авторизироваться или зарегистрироваться для дальнейшего взаимодействия с программным модулем.
|
||||||
|
кнопки «Войти», «Зарегистрироваться»
|
||||||
|
Название игры «Dog Academy Game»
|
||||||
|
|
||||||
|
Окно Регистрация/Авторизация
|
||||||
|
Регистрация
|
||||||
|
Окно регистрации состоит из текстовых блоков для ввода данных, текста и кнопок.
|
||||||
|
Все объекты располагаются по центру. Интерфейс простой и понятный.
|
||||||
|
Текст и текстовые блоки для ввода данных:
|
||||||
|
Логин [ ]
|
||||||
|
Пароль [ ]
|
||||||
|
Никнейм [ ]
|
||||||
|
Кнопки:
|
||||||
|
Зарегистрироваться
|
||||||
|
Вернуться на главную
|
||||||
|
|
||||||
|
Ограничения: нельзя зарегистрировать одинаковые логины
|
||||||
|
Авторизация
|
||||||
|
Окно авторизации состоит из текстовых блоков для ввода данных, текста и кнопок. Все объекты располагаются по центру. Интерфейс простой и понятный.
|
||||||
|
Текст и текстовые блоки для ввода данных:
|
||||||
|
Логин [ ]
|
||||||
|
Пароль [ ]
|
||||||
|
Кнопки:
|
||||||
|
Показать пароль
|
||||||
|
Войти
|
||||||
|
Вернуться на главную
|
||||||
|
Авторизация для администратора имеет тот же интерфейс. Прописан триггер-условие для авторизации администратора. В файле 'config.py' указаны логин и пароль.
|
||||||
|
Ограничения: ошибка при создании профиля с уже существующим логином.
|
||||||
|
При создании пользователя создаётся запись в базе данных в таблице Auth [user_id: “ “; login: “ “; password: ” “], данные из которой дублируются в таблицу Users [user_id: “ “; …]. В таблицу Users также фиксируется [… ; username: “ “; …].
|
||||||
|
При создании пользователя и авторизации заполняется лог-файл game.log для фиксации пользовательских действий.
|
||||||
|
|
||||||
|
Окно Админ-панель
|
||||||
|
Доступ: администратор
|
||||||
|
Гибкий интерфейс: поддержка кнопок, таблиц и модальных окон для управления данными.
|
||||||
|
1. Навигация по основным модулям
|
||||||
|
В верхней панели присутствуют кнопки для перехода между основными функциями:
|
||||||
|
окно Логирование: отображение логов.
|
||||||
|
|
||||||
|
окно Статистика: просмотр статистических данных.
|
||||||
|
|
||||||
|
окно Уведомления: создание и управление пользовательскими оповещениями (в разработке).
|
||||||
|
|
||||||
|
окно Безопасность: управление доступом, настройка паролей (в разработке).
|
||||||
|
|
||||||
|
окно Открытие сессии пользователя: запуск интерфейса для работы от имени пользователя.
|
||||||
|
Если пользователь найден:
|
||||||
|
Окно авторизации закрывается.
|
||||||
|
Если логин не найден, выводится сообщение об ошибке
|
||||||
|
|
||||||
|
2. Бургер-меню
|
||||||
|
Скрытое боковое меню предоставляет доступ к более детализированным функциям. Меню содержит несколько секций:
|
||||||
|
Работа с базой данных
|
||||||
|
окно Редактирование пользователей: просмотр, редактирование и добавление пользователей.
|
||||||
|
окно Управление вопросами: управление вопросами (добавление, просмотр, редактирование).
|
||||||
|
окно Управление собаками: управление информацией о собаках.
|
||||||
|
окно Просмотр таблиц: одновременный вывод всех данных (пользователи, вопросы, собаки).
|
||||||
|
Управление игровым контентом
|
||||||
|
Создание уровней и настройка параметров игровых объектов (пока в разработке).
|
||||||
|
Управление интерфейсом
|
||||||
|
Добавление подсказок и помощь в интерфейсе (в разработке).
|
||||||
|
Работа с базой знаний
|
||||||
|
Добавление, редактирование, удаление и просмотр записей базы знаний.
|
||||||
|
Генерация вопросов на основе базы знаний (в разработке).
|
||||||
|
3. Управление данными
|
||||||
|
Пользователи
|
||||||
|
Просмотр списка пользователей в таблице с колонками: ID, логин, имя.
|
||||||
|
Возможность добавления нового пользователя через всплывающее окно с полями для логина, пароля и имени.
|
||||||
|
Вопросы
|
||||||
|
Просмотр списка вопросов с колонками: ID, текст вопроса, полезная информация.
|
||||||
|
Добавление новых вопросов с указанием связанных данных (например, ID собаки и изображения).
|
||||||
|
Собаки
|
||||||
|
Просмотр списка собак с колонками: ID, порода, характеристики.
|
||||||
|
Добавление новой собаки с подробной информацией: порода, характеристики, поведение, уход, комментарии администратора.
|
||||||
|
|
||||||
|
Выход из панели через меню.
|
||||||
|
Эта панель предоставляет базовые функции для администрирования и легко расширяется новыми модулями.
|
||||||
|
|
||||||
|
окно Главное меню.
|
||||||
|
Главное меню приложения "Собачья академия" организовано следующим образом:
|
||||||
|
Верхняя панель
|
||||||
|
окно Профиль: Кнопка для перехода к экрану профиля пользователя.
|
||||||
|
Магазин: Кнопка, которая пока неактивна.
|
||||||
|
окно База знаний: Кнопка для перехода к экрану базы знаний.
|
||||||
|
Центральный экран
|
||||||
|
Изображения собак:
|
||||||
|
Изображения размещены по кругу вокруг центра экрана, создавая визуально приятную композицию.
|
||||||
|
Каждая собака представлена отдельным изображением, адаптированным под размер 100x100 пикселей.
|
||||||
|
Центр круга находится в середине окна приложения (960x540 пикселей), радиус круга — 300 пикселей.
|
||||||
|
Кнопка "Играть":
|
||||||
|
Это крупная круглая кнопка в центре экрана.
|
||||||
|
Радиус кнопки составляет 100 пикселей.
|
||||||
|
Зеленый цвет кнопки и белый текст "Играть" привлекают внимание пользователя.
|
||||||
|
Клик по кнопке запускает игровой интерфейс.
|
||||||
|
Нижняя панель
|
||||||
|
Кнопка "Выйти":
|
||||||
|
Размещена в правом нижнем углу.
|
||||||
|
Позволяет выйти из приложения с подтверждением.
|
||||||
|
Дизайн и взаимодействие
|
||||||
|
Цветовая схема:
|
||||||
|
Фон экрана — светло-серый (#E5E5E5).
|
||||||
|
Кнопки на верхней панели — темно-серые (#555555) с белым текстом.
|
||||||
|
Кнопка "Играть" имеет зеленый цвет (#4CAF50).
|
||||||
|
Шрифты: Используются шрифты Arial для текста (основной — 12 пунктов, крупный текст — 24 пункта).
|
||||||
|
Особенности реализации
|
||||||
|
Неактивные кнопки (Магазин, База знаний) отображаются, но пока недоступны для взаимодействия.
|
||||||
|
Все элементы размещены с учетом адаптации к экрану 1920x1080 пикселей.
|
||||||
|
Клик по изображению собаки в меню не активирует никаких событий, служит исключительно декоративным элементом.
|
||||||
|
|
||||||
|
окно База знаний
|
||||||
|
Дизайн интерфейса
|
||||||
|
Цветовая схема:
|
||||||
|
Фон базы знаний — светло-серый (#f0f0f0), создающий нейтральную и спокойную атмосферу.
|
||||||
|
Шрифты:
|
||||||
|
Заголовки и текстовые блоки используют шрифт Arial.
|
||||||
|
Размер шрифта:
|
||||||
|
Заголовок породы — 20 пунктов.
|
||||||
|
Описание характеристик, поведения, ухода и комментариев — 14 пунктов.
|
||||||
|
Оформление:
|
||||||
|
Простая структура с акцентом на изображение собаки и информацию о породе.
|
||||||
|
Чёткое разделение текста на логические блоки: характеристики, поведение, уход, комментарии.
|
||||||
|
Содержимое базы знаний
|
||||||
|
Заголовок:
|
||||||
|
Название текущей породы собак.
|
||||||
|
Формат: [Название породы].
|
||||||
|
Изображение породы:
|
||||||
|
Показывает фотографию текущей породы.
|
||||||
|
Размер изображения: 200×200 пикселей.
|
||||||
|
Информация о породе:
|
||||||
|
Характеристики:
|
||||||
|
Скорость, выносливость и уникальное умение собаки.
|
||||||
|
Поведение:
|
||||||
|
Краткое описание характера и привычек породы.
|
||||||
|
Уход:
|
||||||
|
Советы по уходу за шерстью, когтями, зубами и другие важные рекомендации.
|
||||||
|
Комментарии администратора:
|
||||||
|
Специальные заметки, например, кому подходит эта порода или на что обратить внимание.
|
||||||
|
Навигация
|
||||||
|
Кнопки "Предыдущая" и "Следующая":
|
||||||
|
Размещены в нижней части интерфейса.
|
||||||
|
Позволяют переключаться между породами.
|
||||||
|
Обновляют заголовок, изображение и информацию для текущей породы.
|
||||||
|
Кнопка "Назад":
|
||||||
|
Размещена рядом с кнопками навигации.
|
||||||
|
Возвращает пользователя в главное меню.
|
||||||
|
Очищает текущий экран и вызывает метод show_user_dashboard основного интерфейса.
|
||||||
|
|
||||||
|
окно Профиль пользователя.
|
||||||
|
Дизайн интерфейса:
|
||||||
|
Цветовая схема:
|
||||||
|
Фон профиля — светлый розовый (#f8e1e1), создающий теплую и дружелюбную атмосферу.
|
||||||
|
Шрифты:
|
||||||
|
Название профиля и статистика выполнены с использованием шрифта Comic Sans MS.
|
||||||
|
Размер шрифта: крупный заголовок — 30 пунктов, текст статистики — 20 пунктов.
|
||||||
|
Оформление:
|
||||||
|
Простая структура, основное внимание уделяется отображению имени пользователя и его достижений.
|
||||||
|
Содержимое профиля:
|
||||||
|
Заголовок:
|
||||||
|
Отображается имя пользователя (или "Неизвестный пользователь", если данные не найдены в базе).
|
||||||
|
Формат: "Профиль: [имя пользователя]".
|
||||||
|
Статистика:
|
||||||
|
Количество пройденных уровней:
|
||||||
|
Считается на основе уникальных уровней, в которых пользователь набрал положительные очки.
|
||||||
|
Собранные косточки:
|
||||||
|
Суммарный счет за все пройденные уровни.
|
||||||
|
Пример текста:
|
||||||
|
Пройдено уровней: 5
|
||||||
|
Собрано косточек: 120
|
||||||
|
Навигация:
|
||||||
|
Кнопка "Назад":
|
||||||
|
Размещена в нижней части экрана.
|
||||||
|
Клик возвращает пользователя в главное меню.
|
||||||
|
Выполняет очищение текущего экрана и вызывает метод show_user_dashboard основного интерфейса.
|
||||||
|
Особенности реализации:
|
||||||
|
Обновление данных:
|
||||||
|
При открытии профиля происходит запрос в базу данных для получения актуальной информации о пользователе.
|
||||||
|
Если данные отсутствуют, используются значения по умолчанию:
|
||||||
|
Имя пользователя: "Неизвестный пользователь"
|
||||||
|
Пройденные уровни: 0
|
||||||
|
Собранные косточки: 0
|
||||||
|
Простота структуры:
|
||||||
|
Экран сосредоточен только на основных данных, без лишних элементов, что делает интерфейс легким и понятным.
|
||||||
|
|
||||||
|
окно Игровой процесс.
|
||||||
|
Цель игры:
|
||||||
|
Игрок управляет собакой, которая должна собирать кости на сеточной карте.
|
||||||
|
Уровни завершаются, когда игрок собирает заданное количество косточек.
|
||||||
|
Действия игрока:
|
||||||
|
окно Выбор породы собаки.
|
||||||
|
окно Выбор уровня из доступных.
|
||||||
|
окно игрового процесса - карта-сетка
|
||||||
|
Управление движением собаки с помощью клавиш W, A, S, D.
|
||||||
|
Сложность:
|
||||||
|
На каждом уровне количество косточек и их сложность растут, основанные на геометрической прогрессии.
|
||||||
|
Повторное прохождение:
|
||||||
|
Игрок может заново пройти уже завершённые уровни.
|
||||||
|
Пауза:
|
||||||
|
Кнопка Escape открывает меню паузы, где можно продолжить игру или вернуться в главное меню.
|
||||||
|
Интерфейс:
|
||||||
|
Главное меню:
|
||||||
|
Возможность вернуться в главное меню из игры или экранов выбора.
|
||||||
|
Экран выбора:
|
||||||
|
Выбор собаки: Игрок видит список пород с изображениями и выбирает свою.
|
||||||
|
Выбор уровня: Доступные уровни подсвечены, заблокированные - затемнены.
|
||||||
|
Игровое поле:
|
||||||
|
Сеточная карта (60px на клетку).
|
||||||
|
Собаки и косточки отображаются в виде изображений.
|
||||||
|
Панель прогресса показывает количество собранных косточек.
|
||||||
|
окно победы:
|
||||||
|
Поздравительное сообщение, количество собранных косточек и кнопки для перехода на следующий уровень, повторного прохождения или выхода в меню.
|
||||||
|
Функционал
|
||||||
|
Уровни:
|
||||||
|
Генерация косточек происходит случайным образом, избегая дублирования и начальной позиции собаки.
|
||||||
|
Возможность перемещаться между уровнями, сохраняя прогресс.
|
||||||
|
Сохранение данных:
|
||||||
|
Прогресс сохраняется в базу данных через функцию save_game_session, включая собранные косточки, шаги и время.
|
||||||
|
Повторное прохождение:
|
||||||
|
Игрок может перепройти завершённый уровень для улучшения результата.
|
||||||
|
окно Пауза и возобновление:
|
||||||
|
Сохранение прогресса перед выходом или продолжением игры после паузы.
|
||||||
|
Отображение прогресса:
|
||||||
|
Количество собранных косточек отображается в реальном времени.
|
||||||
|
Используемые инструменты
|
||||||
|
Библиотеки:
|
||||||
|
tkinter: Для создания графического интерфейса.
|
||||||
|
Pillow (PIL): Для работы с изображениями.
|
||||||
|
logging: Для логирования ошибок и событий.
|
||||||
|
random: Для случайного размещения косточек.
|
||||||
|
Взаимодействие с базой данных:
|
||||||
|
Модули get_user_by_id и get_user_progress предоставляют данные о пользователе и прогрессе.
|
||||||
|
Функция save_game_session сохраняет результаты в таблицу GameSessions.
|
||||||
|
Конфигурации:
|
||||||
|
Используются внешние настройки для изображений (DOG_CHARACTERS, DONE, BONE) и фона (BACKGROUND_GAME).
|
||||||
|
Архитектура:
|
||||||
|
GameUI: Основной класс, управляющий всеми элементами интерфейса и игровым процессом.
|
||||||
|
clear_frame: Утилита для очистки окна перед переходом к новым экранам.
|
||||||
BIN
Docs/ТИТУЛЬНИК.docx
Normal file
BIN
Docs/ТИТУЛЬНИК.docx
Normal file
Binary file not shown.
|
|
@ -0,0 +1,18 @@
|
||||||
|
2024-12-11 20:11:54,023 - INFO - Ëîãèðîâàíèå èãðû íà÷àòî.
|
||||||
|
2024-12-11 20:11:54,040 - INFO - BEGIN (implicit)
|
||||||
|
2024-12-11 20:11:54,045 - INFO - SELECT anon_1.users_user_id AS anon_1_users_user_id, anon_1.users_dog_id AS anon_1_users_dog_id, anon_1.users_username AS anon_1_users_username, anon_1.users_level AS anon_1_users_level, anon_1.users_achievement AS anon_1_users_achievement, game_sessions_1.session_id AS game_sessions_1_session_id, game_sessions_1.user_id AS game_sessions_1_user_id, game_sessions_1.level AS game_sessions_1_level, game_sessions_1.score AS game_sessions_1_score, game_sessions_1.duration AS game_sessions_1_duration, game_sessions_1.steps AS game_sessions_1_steps, game_sessions_1.start_time AS game_sessions_1_start_time, game_sessions_1.end_time AS game_sessions_1_end_time, game_sessions_1.health AS game_sessions_1_health, game_sessions_1.hunger AS game_sessions_1_hunger, game_sessions_1.sleepiness AS game_sessions_1_sleepiness
|
||||||
|
FROM (SELECT users.user_id AS users_user_id, users.dog_id AS users_dog_id, users.username AS users_username, users.level AS users_level, users.achievement AS users_achievement
|
||||||
|
FROM users
|
||||||
|
WHERE users.user_id = ?
|
||||||
|
LIMIT ? OFFSET ?) AS anon_1 LEFT OUTER JOIN game_sessions AS game_sessions_1 ON anon_1.users_user_id = game_sessions_1.user_id
|
||||||
|
2024-12-11 20:11:54,045 - INFO - [generated in 0.00030s] (1, 1, 0)
|
||||||
|
2024-12-11 20:11:54,048 - INFO - ROLLBACK
|
||||||
|
2024-12-11 20:12:10,273 - INFO - Ëîãèðîâàíèå èãðû íà÷àòî.
|
||||||
|
2024-12-11 20:12:10,287 - INFO - BEGIN (implicit)
|
||||||
|
2024-12-11 20:12:10,294 - INFO - SELECT anon_1.users_user_id AS anon_1_users_user_id, anon_1.users_dog_id AS anon_1_users_dog_id, anon_1.users_username AS anon_1_users_username, anon_1.users_level AS anon_1_users_level, anon_1.users_achievement AS anon_1_users_achievement, game_sessions_1.session_id AS game_sessions_1_session_id, game_sessions_1.user_id AS game_sessions_1_user_id, game_sessions_1.level AS game_sessions_1_level, game_sessions_1.score AS game_sessions_1_score, game_sessions_1.duration AS game_sessions_1_duration, game_sessions_1.steps AS game_sessions_1_steps, game_sessions_1.start_time AS game_sessions_1_start_time, game_sessions_1.end_time AS game_sessions_1_end_time, game_sessions_1.health AS game_sessions_1_health, game_sessions_1.hunger AS game_sessions_1_hunger, game_sessions_1.sleepiness AS game_sessions_1_sleepiness
|
||||||
|
FROM (SELECT users.user_id AS users_user_id, users.dog_id AS users_dog_id, users.username AS users_username, users.level AS users_level, users.achievement AS users_achievement
|
||||||
|
FROM users
|
||||||
|
WHERE users.user_id = ?
|
||||||
|
LIMIT ? OFFSET ?) AS anon_1 LEFT OUTER JOIN game_sessions AS game_sessions_1 ON anon_1.users_user_id = game_sessions_1.user_id
|
||||||
|
2024-12-11 20:12:10,294 - INFO - [generated in 0.00040s] (1, 1, 0)
|
||||||
|
2024-12-11 20:12:10,296 - INFO - ROLLBACK
|
||||||
|
|
@ -30,7 +30,7 @@ class DogAcademyApp:
|
||||||
|
|
||||||
title = tk.Label(
|
title = tk.Label(
|
||||||
self.current_frame,
|
self.current_frame,
|
||||||
text="Dog Academy Game",
|
text="Собачья академия",
|
||||||
bg=BACKGROUND_COLOR,
|
bg=BACKGROUND_COLOR,
|
||||||
fg=PRIMARY_COLOR,
|
fg=PRIMARY_COLOR,
|
||||||
font=BIG_FONT,
|
font=BIG_FONT,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue