ebobola-dev / tic-tac-app

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Крестики-нолики, игра онлайн

Сервер для игры написан на Python + Aiohttp + Socket-io

О приложении (Как играть?)

  • Чтобы поиграть с другом, нужно ввести его 4-х значный код и пригласить его, или чтобы друг ввёл ваш код и пригласил вас (ваш код отображается сверху на главном экране)
  • Также есть возможность установить имя, которое видят ваши соперники
  • Если соперник сменит своё имя во время игры, вы сразу увидите его новое имя
  • В приложении отображается количество подключенных пользователей (онлайн), а также количество пользователей, которые сейчас играют
  • При запуске приложения происходит проверка обновлений (далее можно проверить вручную, нажав на кнопку в сайдбаре), если обнаружено обновление, приложение предложит установить его, скачивание нового приложения и проверка на обновления происходит через тот же сервер, на котором работает игра
  • При включении чек-бокса "сохранять имя" в сайдбаре, приложение будет автоматически при запуске отправлять на сервер последнее сохранённое имя (на сервере имя не сохраняется, на сервере вообще ничего не хранится)

О фичах

  • Контейнер, который отображает подключение к серверу или показывает неуспешное соединение, является шапкой домашнего экрана (на котором подключение установлено) - при успешном подключении содержимое экрана загрузки сжимается в шапку и его контент меняется на шапку с надписью "соединение установлено", также он разжимается обратно при потере соединения и показывает контейнер с надписью "соединение потеряно" (да, ничего непонятно)
  • Ввод кода друга реализован ввиде OTP экрана
  • Кнопка отправки нового имени меняется плавно на другие (сперва на загрузку, затем на зеленую галочку в случае успешной смены имени или красный крестик в случае неуспешной смены имени)
  • Счётчик онлайна в шапке меняется анимировано
  • Крестики и нолики рисуются (анимировано) на экране
  • Анимированный снек-бар показывает все ошибки прилетающие с сервера

Как реализована проверка обновления?

  • На сервере храниться файл с данными об актуальном приложении
    • Версия приложения (актуальная)
    • Изменения (по сравнению с предыдущей версией)
    • Новвоведения (по сравнению с предыдущей версией)
  • Также на сервере хранится сам файл-установщик (.apk) приложения
  • При проверке обновления запрашивается информация файла с данными, и происходит проверка версии установленного приложения с помощью пакета package_info, если версии отличаются, показывается новая версия приложения, новвоведения и изменения в ней, и соответсвенно кнопка, при нажатии на которую, будет скачано приложение с сервера

Скриншоты

connecting error_check_update failed_to_connect update home_page side_bar error1 error2 we_are_invited game win connection_lost

Используемые библиотеки (основные)

  • flutter_svg
  • lottie
  • flutter_bloc
  • simple_animations
  • equatable
  • animated_text_kit
  • loading_indicator
  • intl
  • socket_io_client
  • get
  • shared_preferences
  • http
  • package_info
  • permission_handler
  • flutter_downloader
  • open_file
  • url_launcher

About


Languages

Language:Dart 80.6%Language:C++ 10.8%Language:CMake 5.2%Language:HTML 2.5%Language:C 0.5%Language:Swift 0.3%Language:Kotlin 0.1%Language:Objective-C 0.0%