diff --git a/Docs/certificate-7240428.pdf b/Docs/certificate-7240428.pdf new file mode 100644 index 0000000..6095903 Binary files /dev/null and b/Docs/certificate-7240428.pdf differ diff --git a/Docs/ЗАДАНИЕ НА КУРСОВОЙ ПРОЕКТ.docx b/Docs/ЗАДАНИЕ НА КУРСОВОЙ ПРОЕКТ.docx new file mode 100644 index 0000000..065a4cb Binary files /dev/null and b/Docs/ЗАДАНИЕ НА КУРСОВОЙ ПРОЕКТ.docx differ diff --git a/Docs/КУРСОВОЙ ПРОЕКТ Шишкина 316ИС.docx b/Docs/КУРСОВОЙ ПРОЕКТ Шишкина 316ИС.docx new file mode 100644 index 0000000..5f9d39a Binary files /dev/null and b/Docs/КУРСОВОЙ ПРОЕКТ Шишкина 316ИС.docx differ diff --git a/Docs/Курсовой проект.txt b/Docs/Курсовой проект.txt new file mode 100644 index 0000000..4ebda00 --- /dev/null +++ b/Docs/Курсовой проект.txt @@ -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: Утилита для очистки окна перед переходом к новым экранам. diff --git a/Docs/ТИТУЛЬНИК.docx b/Docs/ТИТУЛЬНИК.docx new file mode 100644 index 0000000..a5e722a Binary files /dev/null and b/Docs/ТИТУЛЬНИК.docx differ