+ Сертификат проверки "Антиплагиат" + ЗАДАНИЕ НА КУРСОВОЙ ПРОЕКТ.docx + Курсовой проект.txt (описание софта) + КУРСОВОЙ ПРОЕКТ ... .docx + ТИТУЛЬНИК.docx
314 lines
23 KiB
Text
314 lines
23 KiB
Text
Курсовой проект
|
||
Игра «собачья академия»
|
||
|
||
База данных:
|
||
Структура базы данных содержит шесть таблиц: 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: Утилита для очистки окна перед переходом к новым экранам.
|