Цельсоздать приложение позволяющее быстро оцифровать карту контурными объектами.У одного контурного объекта может быть несколько независимых контуров. Контуры должны быть заданы в фиксированных плоских экранных css координатах. ЗадачаИнструмент состоит из двух наложенных друг на друга слоёвДолжна быть кнопка или селектор перехода между слоями на первом слое отображается масштабируемая яндекс карта. Карту можно перемещать выбирая удобное положение масштаб и тип отображения. Второй слой используется для рисования - при перемещении первого слоя, объекты второго слоя должны перемещаться аналогично. Этот слой должен быть полупрозрачным. На втором слое должны быть реализованы действия: пересчёт координат при перемещении карты-подложки. Поставить точку. Формирование массива точек контура. Соединить новую точку с предыдущей линией. Проверить замкнутось контура. Замкнуть контур. Завершить создание контуров объекта. проверка limit точек в контуре. проверить дельта расстояния последней точки от начальной - если меньше заданного - замкнуть контур. Удалить точку. стек действий. отменить действие. Перевести контур в css стили. Сохранить css файл. Убрать подложку. Подсветить замкнутые контуры объекта при наведении. Выделить объект с контуром. Отобразить название и свойства выбранного контурного объекта. Изменить свойства выделенного контурного объекта. Получение состояния карты подложки: координаты и масштаб. Масштабирование. Удалить контур. Удалить объект. Выделить группу контуров. Проверить точку в группе контуров на внутренность. Объединить группу контуров в один контур. Добавить объекту новый контур. Получить ближайшую точку другого контура. пример - https://energy.q-pax.ru/map |
План3 недсоздание слоёв визуального и логического пересчёт координат географических и экранных действие клика - выставление точки формировать массив точек - limit количества замыкание по экранным координатам при заданном дельта правый клик - удаление точки 4 нед стек действий отмена ctrl+z - отменить последнее действие enter - замкнуть контур и сохранить css контур отобразить без карты-подложки onfocus - подсветить контур перетаскивание и масштабирование - пересчёт видимых точек изменить рисовку на контурном слое 5 нед получить масштаб и координаты - состояние карты подложки cntrl+click - взять ближайшую точку другого контура выделить контур переименовать, задать свойства del - удалить активный контур выделить группу контуров 6 нед построить новый контур по внешним точкам группы внешние - пренадлежат 1 контуру либо принадлежность к контурам меньше количества соседних точек по всем контурам которым принадлежит Отладка, рефакторинг с помощью инструмента оцифровать карты районов удмуртии и районов Ижевска |
Задача Разработать приложение состоящее из изолированного кода модулей: общей сцены, миникарты, камеры, экрана, модальные окна сообщений. Так чтобы заменяя методы или целый модуль можно было переходить к разным проекциям, из 2д в 3д и т.д Данные должны браться из таблиц сервера БД сами модули либо через замыкания прототипов function createSystem(options) { let name, version, self; function System(options) { } } тот же синглтон let buildProto = (function() { function Build(options) { } })(); либо на замыкании класса let intellect = (function() { class Intellect { } return new Intellect(); })(); либо на самом классе: class Intellect { } либо на замыкании функции let enviromentType = (function() { return function(params) { ... } })(); Что должно работать в модулях сцена - хранение данных обо всех объектах возможность подключать и использовать наборы разных объектов. камера - выделяет кусок сцены и передаёт его другим модулям. Должна подстраиваться под изометрию. Не должна выходить за рамки сцены при прямой проекции. миникарта - должна схематично отображать фон, объекты, цветовая схема-принадлежность объектов, изменяемые режимы карты. (физика социум политика экономика и т.д.) Должна отображать положение камеры(камер), и передавать управление камере для изменения положения. экран - отображение тайлов фона и объектов. В несколько слоёв. Перемещение объектов не должно затирать фон. Слоёв должно быть 3. модальные окна - выводить сообщения, скроллируемый текст + картинка + кнопка. Перехватывать все клики по экрану и не давать управления пока открыто окно. (только закрытие, листание и кнопка продолжить, либо 2 кнопки - согласия и отмены, либо поле ввода и 2 кнопки) |
План 3 нед main types build enviroment fraction unit --- objects furniture container transport 4 нед system engine scene map 5 нед menu_comand engine camera screen 6 нед build_factory build_interface |
Задача При разработке нужно вести дневник версий модулей. Написать редактор позволяющий создавать карты сцены с разной местностью, и размещением на ней статичных объектов. Созданные карты должны сохраняться в файл (или набор файлов) Редактор должен считывать созданные карты. Редактор должен переключаться между режимами прямой и изометрической проекции. У каждого модуля должны быть свойства: название и версия. у каждого модуля должен быть метод info - возвращающий строку названия + версии Данные должны грузиться с сервера из БД Модуль должен возвращать прототип модуля из которого можно получить прототипы объектов за которые отвечает модуль. (Здание, ландшафт, предмет, мебель) Методы типового модуля (type_className): Получить список всех типов объектов, которые порождаются классом Получить прототип объекта по указанному типу(ключу) Создать объект этого класса Получить нередактируемую копию объекта Получить изображение всех объектов (при необходимости) Получить изображение отдельного объекта (при необходимости) Если объекты могут объединятся в стек - метод сортировки объектов в стеке. Примеры использования: Обращаясь к модулю - мы получаем либо список возможных типов объектов, либо прототип конкретного объекта и возможность обратиться к его методам и свойствам, чтобы затем использовать эти прототипы в фабриках объектов, порождающих массивы объектов из этих прототипов. buildProto.getAllTypes().then(...); loadedProto = await buildProto.getAllTypes(); unitProto.getImage(); unitProto.getUnit(type).moveBonus; typeLand = enviromentType(type); |
План 3 нед main types build enviroment fraction unit 4 нед system загрузка данных с сервера с помощью модуля system engine scene map 5 нед map_editor слои деструктурирование смежных тайлов прямая и изометрическая проекция 6 нед map_editor редактор помещений интерьеров редактор города и логистики редактор стратегии | ||
Первые шаги: 0.01 создать файловую структуру проекта. (каталог проекта + что описано ниже) создать файлы документации проекта: описание и версии модулей. Создать основной файл логики приложения: js/main.js создать файл основных стилей css/main.css 0.02 создать файл основной разметки приложения: index.html определить в нём Языковую локализацию. Метаданные: кодировку, viewport, title Подключить стилевой файл main.css Разместить основной контейнер в body 0.03 создать js файлы системных модулей: экран сцена камера подключить js файлы с аттрибутом defer в index.html модуль screen 0.3 модуль scene 0.1 camera 0.1 0.04 Отобразить сетку мира на экране. screen 0.4 camera 0.2 0.05 Cоздать мини-карту. отобразить камеры на миникарте. map 0.1 camera 0.3 По модулям: camera 0.3 4 Камера. 0.1 создать файл camera.js - файл модуля. Подключить файл в html. создать замыкание: структуру модуля. Создать внутренние параметры: цвет, координаты, количество захваченных ячеек сцены. Создать конструктор. Задать размеры по умолчанию. Вернуть объект камеры. 0.2 Получить текущий снимок. (вернуть параметры камеры) Передвинуть камеру. 0.3 Разделить получение параметров и снимка. Получить снимок из переданной матрицы. |
По модулям: 1 Экран. screen 0.1 Создать screen.js - файл модуля. Подключить файл в html. создать замыкание: структуру модуля. Создать внутренние параметры: ширина высота, размер ячейки, параметры: количество ячеек по ширине и высоте 0.2 создать конструктор. вычислить размеры экрана. создать геттер и сеттер размеров экрана. Вернуть объект экрана. 0.3 Опция: селектор блока. Методы: Поиск блока по селектору. Создание холстов. Изменение холстов. перекрыть канвасы через css. 0.4 Создать холсты. Отобразить содержимое ячейки. Отобразить весь холст. Задать типы поверхностей. Задать окрас в зависимости от типа поверхности. scene 0.1 0.1 создать файл scene.js - файл модуля. Подключить файл в html. создать замыкание: структуру модуля. Создать внутренние параметры: ширина высота, слои природный и строений. map 0.1 3 Мини карта. map 0.1 создать файл map.js - файл модуля. Подключить файл в html. создать замыкание: структуру модуля. Создать внутренние параметры: . Создать конструктор. Вернуть объект карты. получить данные сцены и построить по ним канву. |
Задача создать модуль. (замыкание над классом) создать пару холстов для вывода изображений Найти несколько тайловых наборов персонажей из одной серии (в одном стиле) создать объект со свойствами: направление, состояние, шаг анимации Создать кнопки изменения направления и состояния объекта создать таймер меняющий шаг анимации В зависимости от значений свойств выбирать из тайлового набора и выводить изображение объекта Меняя тип объекта заменять таловый набор с сохранением избражения Анимация готова. Смена тайлового набора, направление, состояние - должны передаваться внешними параметрами. Должна быть кнопка запуска и остановки анимации. Создать модуль который не лету может реколлировать тайловый набор - подменить пиксели изображения определённого цвета - на другой цвет и его оттенки (несколько цветов) |
План 2 нед написать событийное приложение (управление объектом с клавиатуры или мышью) собрать html макет страниц проекта json отправка данных на сервер работа с fetch понятие программного модуля, изоляции кода поиск/создание тайловых наборов. 3 нед main types build enviroment fraction unit событийный автомат состояний набор действий, направлений 4 нед engine camera screen раскадровка 5 нед Анимация Движение Перемещение Восстановление смежных тайлов 6 нед Реколлер объектов основной цвет и его оттенки должны преобразоваться в новый цвет и его оттенки остальная часть изображения должна остаться неизменной примеры объектов: одежда, мебель, здание, салон автомобиля |
Задача |
План 3 нед main types build enviroment fraction unit 4 нед system engine scene map 5 нед unit_list life управление экономика перемещение 6 нед message window (reports) ИИ Функция поиска кратчайшего пути между пунктами Функция поиска кратчайшего пути с весами и разными возможностями состояние, оценка, и принятие решений роевой интеллект |