Skip to content

RttnKttnAnts/RBlast

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Cocos2d-x Test Task

Важное замечание! Данное задание предназначено для соискателей, отправивших резюме в компанию Ants Games.

Контакты
для отправки решенного задания и вопросов
EMail
Telegram

Задание: создать форк репозитория и на основе предоставленных материалов спроектировать и реализовать классы “Кнопка”, “Кнопка с поддержкой долгого нажатия”, а также тестовую среду для демонстрации работы классов. Постарайтесь приблизиться к тому, как бы вы выполняли рабочую задачу, все необязательные элементы, например (если предполагается) индикация состояния (Label с текущим состоянием) не должны быть частью классов "Кнопка или кнопка с долгим нажатием" и находиться в коде тестовой среды. Результат представить в виде ссылки на репозиторий на GitHub, либо другом предпочитаемом сервисе(любой git хостинг, позволяющий скачать репозиторий без регистрации аккаунта).

Требования к классу: Классы кнопка и кнопка с долгим нажатием должны соответствовать следующим требованиям.

Основные свойства кнопки:

  1. Кнопка должна иметь Safe и Expand zone, которые устанавливаются с помощью функции сеттера. Не могут быть меньше contentSize кнопки. При попытка задать размер областей меньше contentSize кнопки - такой вызов игнорируется, размер области устанавливается равным contentSize кнопки.

    • Expand - область срабатывания, если тап попадает в нее, кнопка обрабатывает нажатие.
    • Safe - область в которой кнопка не теряет тач, при этом ее вид меняется. При возвращении тача обратно кнопка переходит обратно в состояние “нажата”. Тап по safezone не вызывает срабатывание
    • Иллюстрация Safe и Expand zone

    Иллюстрация Safe и Expand zone

  2. Наличие состояний

    • Idle - Обычное состояние кнопки
    • Pushed - кнопка нажата, тач внутри кнопки
    • Dragout - кнопка была нажата, тач вне кнопки, но внутри safe zone
  3. Дочерние элементы

    • Кнопка должна иметь функционал добавления в нее дочерних элементов, видимость которых привязана к одному или нескольким состояниям, если элемент не привязан к какому-то состоянию, его видимость не меняется.
  4. Реакция на нажатие

    • При завершении тача, если кнопка находится в состоянии Pushed/LongPush, происходит отправка события cocos2d::CustomEvent и вызов функтора, если таковой задан. Устанавливается функтор вызовом функции сеттера.

Возможный граф состояний, совмещенный для двух классов: Граф состояний

Требования к тестовой среде: Сцена с несколькими кнопками демонстрирующими работу реализованного класса: нажатие, нажатие с движением касания по кнопке, реакция на долгое нажатие

Критерии оценки решения

  • Кнопка корректно обрабатывает нажатия при (2D) трансформации (перемещение, поворот, масштабирование), а также при трансформации элементов кнопки.
  • Кнопка изменяет видимость своих компонентов при смене состояния
  • При отпускании отправляется событие, которое позволяет идентифицировать кнопку-отправитель и состояние из которого произошла отправка события
  • При отпускании вызывается callback, если таковой был
  • Удаление кнопки со сцены не вызывает побочные эффекты (например segfault/access violation)
  • Также будет оцениваться потенциальная "стоимость" применения разработанного класса. Говоря проще - оптимальность работы с ресурсами и отсутствие лишних операций.
  • Отсутствие посторонних бинарных файлов в репозитории
  • Соблюдение общего стиля форматирования кода. Также важно
  • Вы можете использовать любую IDE и OS. Однако, основная разработка ведется в Visual Studio под Windows, крайне желательно убедиться, что проект собирается из-под VS с использованием платформы v141(VS2017) и выше.

P.S.: И конечно же, написанный класс использующий чужой код или cocos2d::ui::Button не принимается.

P.P.S.: Повторюсь, что несмотря на то, что данное задание опубликовано в свободном доступе, его выполнение не дает каких-либо гарантий с нашей стороны. Если вы нашли это задание в открытом источнике (github репозиторий RttnKttnAnts или его форки) и не отправляли резюме на рассмотрение, предварительно свяжитесь с нами, чтобы обсудить возможность сотрудничества. В противном случае, выполнение задания может не иметь результата.

About

Test task for job seekers 4-12 hrs to complete

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published