Skip to content

Repository files navigation

MovieQuiz App

MovieQuiz — интерактивное iOS-приложение, которое проверяет знания фильмов из списка IMDb Top-250.

Пользователю предлагается пройти викторину из 10 вопросов, получить мгновенную обратную связь по каждому ответу и отслеживать свою статистику, чтобы улучшать результаты.

Дизайн и API

Скриншоты

Image

Возможности

  • Экран регистрации — перед началом игры пользователь вводит имя, которое проходит валидацию и сохраняется локально в UserDefaults.
  • Викторина — каждый раунд состоит из 10 вопросов по фильмам из списка IMDb Top-250.
  • Вопросы формата "Да / Нет" — например: «Рейтинг этого фильма выше 6?».
  • Мгновенная обратная связь — после ответа рамка постера окрашивается в зеленый или красный цвет в зависимости от правильности ответа.
  • Автоматический переход — следующий вопрос отображается через одну секунду после ответа.
  • Статистика — после завершения раунда отображаются:
    • результат текущей игры;
    • общее количество сыгранных викторин;
    • лучший результат с датой и временем;
    • средний процент правильных ответов.
  • Новая игра — возможность сразу начать следующий раунд.
  • Обработка ошибок — при проблемах с загрузкой данных отображается сообщение с возможностью повторить запрос.

Технический стек

  • Swift
  • UIKit
  • MVP (Model–View–Presenter)
  • URLSession — сетевые запросы
  • REST API (IMDb API)
  • UserDefaults — хранение пользовательских данных и статистики
  • Unit Tests — тестирование бизнес-логики
  • Splash Screen — экран запуска приложения

Архитектура

Проект реализован по архитектуре MVP (Model–View–Presenter).

  • Model — модели вопросов, профиля пользователя и статистики.
  • View — экраны на UIKit, отображающие данные и передающие действия пользователя презентеру.
  • Presenter — содержит бизнес-логику приложения: управление вопросами, проверку ответов, расчет статистики и подготовку данных для отображения.

Такое разделение позволяет сделать бизнес-логику независимой от UIKit и значительно упрощает тестирование.

Тестирование

Проект включает Unit Tests, покрывающие основную бизнес-логику приложения:

  • загрузку и подготовку вопросов;
  • обработку ответов пользователя;
  • подсчет очков;
  • обновление статистики (лучший результат, средняя точность);
  • управление состоянием викторины;
  • обработку сетевых ошибок.

Для изоляции бизнес-логики используются Mock-сервисы, благодаря чему тесты остаются независимыми и воспроизводимыми.

Особенности реализации

  • Splash Screen отображается при запуске приложения.
  • Валидация регистрации предотвращает переход к игре при некорректном вводе имени.
  • UserDefaults используется для хранения имени пользователя и статистики между запусками приложения.
  • Автоматический переход между вопросами реализован с помощью таймера с задержкой в одну секунду. Во время ожидания интерфейс блокируется, исключая повторные нажатия.
  • Визуальная обратная связь позволяет мгновенно понять, был ли ответ правильным.
  • Хранение статистики включает:
    • количество сыгранных викторин;
    • лучший результат с датой;
    • средний процент правильных ответов.
  • Обработка ошибок обеспечивает корректное отображение сообщений и возможность повторной загрузки данных при отсутствии сети или ошибке API.

Установка

git clone https://github.com/rfhfv/MovieQuiz.git
cd MovieQuiz
open MovieQuiz.xcodeproj

About

UIKit, MVP, URLSession, UserDefaults

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages