diff --git a/Docs/certificate-7243346.pdf b/Docs/certificate-7243346.pdf deleted file mode 100644 index d601797..0000000 Binary files a/Docs/certificate-7243346.pdf and /dev/null differ diff --git a/Docs/ЗАДАНИЕ НА КУРСОВОЙ ПРОЕКТ.docx b/Docs/ЗАДАНИЕ НА КУРСОВОЙ ПРОЕКТ.docx deleted file mode 100644 index 065a4cb..0000000 Binary files a/Docs/ЗАДАНИЕ НА КУРСОВОЙ ПРОЕКТ.docx and /dev/null differ diff --git a/Docs/КУРСОВОЙ ПРОЕКТ Шишкина 316ИС.docx b/Docs/КУРСОВОЙ ПРОЕКТ Шишкина 316ИС.docx deleted file mode 100644 index 37dbb94..0000000 Binary files a/Docs/КУРСОВОЙ ПРОЕКТ Шишкина 316ИС.docx and /dev/null differ diff --git a/Docs/Курсовой проект.txt b/Docs/Курсовой проект.txt deleted file mode 100644 index 4ebda00..0000000 --- a/Docs/Курсовой проект.txt +++ /dev/null @@ -1,314 +0,0 @@ -Курсовой проект -Игра «собачья академия» - -База данных: -Структура базы данных содержит шесть таблиц: 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: Утилита для очистки окна перед переходом к новым экранам. diff --git a/Docs/ТИТУЛЬНИК.docx b/Docs/ТИТУЛЬНИК.docx deleted file mode 100644 index 127689e..0000000 Binary files a/Docs/ТИТУЛЬНИК.docx and /dev/null differ diff --git a/src/logs/logfile.log b/src/logs/logfile.log index 52dc2e5..e69de29 100644 --- a/src/logs/logfile.log +++ b/src/logs/logfile.log @@ -1,18 +0,0 @@ -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 diff --git a/src/ui/auth_ui.py b/src/ui/auth_ui.py index 57a72b7..cf5a0eb 100644 --- a/src/ui/auth_ui.py +++ b/src/ui/auth_ui.py @@ -30,7 +30,7 @@ class DogAcademyApp: title = tk.Label( self.current_frame, - text="Собачья академия", + text="Dog Academy Game", bg=BACKGROUND_COLOR, fg=PRIMARY_COLOR, font=BIG_FONT,