Skip to content

bojlahg/pdm_skytec_test

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Тестовое задание "Крестики-нолики"

Сделайте простую игру "Крестики-нолики", в которой есть следующий функционал:

  • главное меню
  • экран настроек
  • экран загрузки
  • диалоговые окна (например, запрос подтверждения на выход из игры)
  • переход к основному геймплею и выход из него

Суть задания состоит в том, чтобы на примере простой игры реализовать базовые функции приложения так, чтобы ими было удобно пользоваться и легко расширять — добавлять новые меню, новые диалоговые окна, параметры игры и т.д. Постарайтесь заложить широкий фундамент там, где это возможно, продемонстрируйте архитектурные решения. Нам интересно, как Вы делаете игры, как управляете состоянием приложения, как подходите к реализации UI. Используйте Unity версии 2019.4.12 f1.

Пояснения

Экран загрузки

При запуске приложения пользователь должен увидеть экран загрузки. Экран загрузки должен включать прогресс-бар и текст с сообщением о том, что происходит во время загрузки (например, "Загружается уровень"). Реализуйте небольшой API, позволяющий отображать экран загрузки из любой части приложения, обновлять прогресс и текст сообщения в соответствии с тем, что происходит в ходе загрузки. Например, переход из главного меню в бой, выход из боя и запуск приложения должны единообразно вызывать показ экрана загрузки, но слегка кастомизировать его под каждый конкретный случай. Поскольку для крестиков-ноликов длительных загрузок не ожидается, сделайте эмуляцию загрузки на пару секунд.

Главное меню

Главное меню должно содержать кнопки для перехода к основному геймплею (с показом экрана загрузки) и в меню настроек. Постарайтесь сделать приятное визуальное оформление на ваш вкус. При нажатии кнопки "Назад" на устройстве (или Escape на клавиатуре) должен появляться диалог с подтверждением выхода. Также на главном экране должен отображаться рейтинг игрока (см. Крестики-нолики).

Меню настроек

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

Диалоговые окна

Сделайте возможность вызывать диалоговые окна — вопросы/уведомления, ожидающие ввода игрока. Разработайте простой API для показа произвольных окон с разной версткой (например, иконка + текст, текст + поле ввода) с разными вариантами ввода (да/нет, отмена, крестик итд), список фич определите самостоятельно.

Переход к основному геймплею и выход из него

Организуйте переход из главного меню в core-геймплей крестиков-ноликов, предусмотрите возможность передачи параметров, например, имена игроков, номер уровня, размер поля, длину серии для победы. При завершении игры нужно вернуть в главное меню результат игры (имя победителя/время) и показать его на экране. Добавьте возможность ставить игру на паузу и реализуйте простое меню паузы с кнопками показа настроек и выхода в меню. При нажатии на кнопку выхода должен выскакивать диалог подтверждения.

Крестики-нолики

Реализуйте традиционную игру, игроки ходят по очереди, ставят метки на поле, кто первый сделает непрерывную серию определенной длины, тот побеждает. Кто ходит первым определяется случайным образом (процесс выбора можете визуализировать на свое усмотрение), против игрока играет простейший бот, его поведение придумайте самостоятельно, необязательно делать его сложным, в крайнем случае пусть делает случайный ход. Отобразите на экране имена игроков и время в игре. За победу игрок получает очки рейтинга (например, +100) — по сути счетчик побед. За поражение очки отнимаются. Визуализируйте процесс начисления очков перед выходом из боя в главное меню, например, пусть экран затеняется на пару секунд и отображается надпись "Победа/Поражение" и изменение счетчика. Количество очков должно сохраняться между перезапусками игры. Задание творческое, если вам захочется добавить что-то от себя, мы будем рады :) Например, можете добавить раунды, чтобы победитель определялся после нескольких раундов, сделать простые анимации и т.д. Загрузите выполненное задание в Git-репозиторий, пожалуйста, убедитесь, что оно доступно для скачивания. Удачи!

About

SkyTec Games Developer Test

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages