Гибкая настройка 2D-модели

Помимо создания виртуального мира роботов в TRIK Studio, можно делать более гибкую настройку при помощи редактирования XML-файла: указывать точнее расположения объектов, цвет, ширину и другие параметры.
Для начала необходимо создать XML-файл виртуальной модели.

Создание XML-файла

Для создания пустого XML-файла используйте стандартные средства вашей операционной системы.
Для сохранения нарисованной в TRIK Studio модели мира:
    1
    Перейдите в режим 2D.
      2
      Перейдите в «Режим отладки».
      3
      Нажмите правой кнопкой мыши на сцену и в появившемся контекстном меню выберите «Сохранить модель мира…».
      4
      Укажите место сохранения и имя файла.

      Редактирование XML-файла

      Откройте сохраненный XML-файл в любом текстовом редакторе. Например, Notepad++.
      В отладке 2D-модели оси расположены следующим образом:
      Внимание! Одна клетка имеет размеры 17,5×17,5 сантиметров или 50×50 пикселей.
      XML-файл состоит из тегов и атрибутов.
      Тег — это элемент языка разметки. Существует начальный (открывающий) и конечный (закрывающий) тег. Текст, содержащийся между начальным и конечным тегом, отображается и размещается в соответствии со свойствами, указанными в начальном теге.
      Например:
      <walls> <!-- начальный (открывающий) тег -->
           <wall begin="200:-200" id="{a3ede76b-1d7e-4c72-9ed4-08d8ea9af4bf}" end="200:150"/>
      </walls> <!-- конечный (закрывающий) тег -->
      Атрибуты — это свойства тега, дающие дополнительные возможности форматирования текста. Они записываются в виде сочетания «имя атрибута — значение». Текстовые значения заключаются в кавычки.
      В вышеуказанном примере атрибутами являются:
      begin="200:-200" 
      id="{a3ede76b-1d7e-4c72-9ed4-08d8ea9af4bf}"
      end="200:150"
      Самая простая виртуальная модель мира без объектов в формате .xml выглядит следующим образом:
      <?xml version='1.0' encoding='utf-8'?>
      <root>
          <world>
              <background/>
              <walls/>
              <skittles/>
              <balls/>
              <colorFields/>
              <images/>
              <regions/>
          </world>
          <robots>
              <robot direction="0" id="trikKitRobot" position="0:0">
                  <sensors/>
                  <startPosition direction="0" id="{name}" y="25" x="25"/>
                  <wheels left="M4###output###М4###" right="M3###output###М3###"/>
              </robot>
          </robots>
      </root>

      Роботы

      Для описания роботов имеются следующие теги:

      <robots>...</robots>

      Определяет робота на сцене. Используется как контейнер.

      Синтаксис

      <robots>
           <robot id="trikKitRobot" position="0:0" direction="0">
      </robots>

      <robot>...</robot>

      Добавляет робота на сцену. Может использоваться как контейнер.
      Внимание! В TRIK Studio нельзя добавить несколько роботов на сцену.

      Атрибуты

      direction="0″ — направление робота, которое можно регулировать нажав на робота и потянув за стрелку.
      position="x:y" — положение робота, где x, y — положение левой верхней точки квадрата робота в системе координат.
      id="trikKitRobot" — уникальный идентификатор.

      Синтаксис

      <robot id="trikKitRobot" position="0:0" direction="0">

      Пример в 2D

      <sensors>...</sensors>

      Определяет датчики на роботе. Используется как контейнер.

      Синтаксис

      <sensors>
           <sensor type="kitBase::robotModel::robotParts::Motor" direction="0" port="M4###output###JM4$$$D$$$4###" position="75:25"/>
      </sensors>

      <sensor/>

      Добавляет датчик.

      Атрибуты

      position="x:y" — положение датчика, где x, y — положение центральной точки квадрата датчика в системе координат.
      direction="0″ — направление датчика, которое можно регулировать нажав на датчик и потянув за стрелку.
      port="A1###input######sensorA1" — порт, к которому подключен датчик.
      type="trik::robotModel::parts::TrikInfraredSensor" — тип подключенного сенсора.

      Существует 5 видов датчиков для TRIK:

      1. TrikSonarSensor — ультразвуковой датчик расстояния.
      2. TrikLineSensor — датчик линии.
      3. TrikLightSensor — датчик освещенности.
      4. TrikTouchSensor — датчик касания.
      5. TrikInfraredSensor — инфракрасный датчик расстояния.

      И 9 видов датчиков для EV3:

      1. RangeSensor — датчик расстояния.
      2. TouchSensor — датчик касания.
      3. Ev3Gyroscope — гиродатчик.
      4. LightSensor — датчик света.
      5. ColorSensorGreen — датчик цвета (зеленый).
      6. ColorSensorFull — датчик цвета (распознания).
      7. ColorSensorBlue — датчик цвета (синий).
      8. ColorSensorRed — датчик цвета (красный)
      9. ColorSensorPassive — датчик цвета (пассивный).

      Синтаксис

      <sensor position="75:25" direction="0" port="A1###input###А1###sensorA1"
      type="trik::robotModel::parts::TrikInfraredSensor"/>

      Пример в 2D

      <startPosition/>

      Определяет стартовое положение робота.

      Атрибуты

      id="{name}" — уникальный идентификатор.
      direction="0″ — направление робота, если нажать на кнопку «вернуть» чтобы отрегулировать, нажмите на крестик и потяните за стрелку.
      x="25″ — положение по оси x.
      y="25″ — положение по оси y.

      Синтаксис

      <startPosition id="{7a326d25-82f4-4eb4-9b42-1e75576f35a4}" direction="0" x="25" y="25"/>

      <wheels/>

      Добавляет колеса.

      Атрибуты

      left="M4###output###М4###" — порт, к которому подключен левый двигатель.
      right="M3###output###М3###" — порт, к которому подключен правый двигатель.

      Синтаксис

      Для TRIK:
      <wheels left="M4###output###М4###" right="M3###output###М3###"/>
      
      Для LEGO EV3:
      <wheels left="B###output###В###" right="C###output###С###"/>
      

      Пример в 2D

      Объекты

      Для описания объектов имеются следующие теги:

      <wall>

      Добавляет стену на сцену.

      Атрибуты

      begin="x:y" — начало стены, где x, y — положение начальной точки в системе координат.
      id="{name}" — уникальный идентификатор.
      end="x:y" — конец стены, где x, y — положение конечной точки в системе координат.

      Синтаксис

      <wall end="250:-50" id="{wall1}" begin="50:-50"/>
      

      Пример в 2D

      <skittle>

      Добавляет банку на сцену.

      Атрибуты

      markerY="44″ — позиция, на которую встанет банка по оси Y, если нажать на кнопку «вернуть».
      markerX="220″ — позиция, на которую встанет банка по оси X, если нажать на кнопку «вернуть».
      id="{name}" — уникальный идентификатор.
      y="44″ — положение по оси y.
      x="220″ — положение по оси x.

      Синтаксис

      <skittle rotation="0" id="{skittle1}" markerY="203" startRotation="0" x="-96" y="203"
      markerX="-96"/>

      Пример в 2D

      <ball>

      Добавляет мяч на сцену.

      Атрибуты

      markerY="49″ — позиция, на которую встанет мяч по оси Y, если нажать на кнопку «вернуть».
      markerX="287″ — позиция, на которую встанет мяч по оси X, если нажать на кнопку «вернуть».
      id="{name}" — уникальный идентификатор.
      y="49″ — положение по оси y.
      x="287″ — положение по оси x.

      Синтаксис

      <ball rotation="0" id="{ball1}" markerY="169" startRotation="0" x="-18" y="169" markerX="-18"/>

      Пример в 2D

      <line>

      Добавляет линию на сцену.

      Атрибуты

      begin="x:y" — начало линии, где x, y — положение начальной точки в системе координат.
      end="x:y" — конец линии, где x, y — положение конечной точки в системе координат.
      id="{name}" — уникальный идентификатор.
      stroke-width="6″ — ширина линии.
      fill="#ff000000″ — цвет заливки линии.
      fill-style="none" — заливка. В данном случае этот атрибут не имеет смысла, т.к. линия всегда однородная.
      stroke-style="solid" — вид линии.
      Существует 5 видов линии:
      • solid — сплошная;
      • dot — точечный пунктир;
      • dash — штриховой пунктир;
      • dashdot — штрихпунктир;
      • dashdotdot — штрихпунктир с двумя точками.

      Синтаксис

      <line stroke-width="6" fill-style="none" end="250:-50" id="{line1}" stroke-style="solid"
      fill="#ff000000" stroke="#ff000000" begin="50:-50"/>

      Пример в 2D

      <cubicBezier>

      Добавляет кривую Безье.

      Атрибуты

      cp1="x:y" — маркер, задающий изгиб кривой.
      cp2="x:y" — маркер, задающий изгиб кривой.
      stroke-style="solid" — вид кривой Безье. Виды кривой Безье аналогичны видам линии.
      begin="x:y" — начало кривой Безье, где x, y — положение начальной точки в системе координат.
      end="x:y" — конец кривой Безье, где x, y — положение конечной точки в системе координат.
      id="{name}" — уникальный идентификатор.
      fill-style="none" — заливка. В данном случае этот атрибут не имеет смысла, т.к. кривая Безье всегда однородная.
      stroke-width="6″ — ширина кривой Безье.
      stroke="#ff000000″ — цвет заливки кривой Безье.
      fill="#ff000000″ — цвет кривой Безье.

      Синтаксис

      <cubicBezier id="{cubicBezier1}" fill-style="none" stroke-width="6" end="-106.577:134.894"
      begin="-112.95:-192.25" fill="#ff000000" cp1="-142.95:-192.25" cp2="17.0502:-192.25"
      stroke="#ff000000" stroke-style="solid"/>
      

      Пример в 2D

      <rectangle>

      Добавляет прямоугольник.

      Атрибуты

      stroke-style="solid" — вид границ прямоугольника. Виды прямоугольника аналогичны видам линии.
      begin="x:y" — начало прямоугольника, где x, y — положение начальной точки в системе координат.
      end="x:y" — конец прямоугольника, где x, y — положение конечной точки в системе координат.
      id="{name}" — уникальный идентификатор.
      fill-style="none" — заливка. По умолчанию стоит «none». Заполненный прямоугольник будет со значением «solid».
      fill="#ff000000″ — цвет границ прямоугольника.
      stroke-width="6" — ширина границ прямоугольника.
      stroke="#ff000000″ — цвет заливки прямоугольника.

      Синтаксис

      <rectangle stroke-width="6" fill-style="none" end="344:511" id="{rectengle1}" 
      stroke-style="solid" fill="#ff000000" stroke="#ff000000" begin="285:229"/>

      Пример в 2D

      <ellipse>

      Добавляет эллипс.

      Атрибуты

      stroke-style="solid" — вид границ эллипса. Виды эллипса аналогичны видам линии.
      begin="x:y" — начало эллипса, где x, y — положение начальной точки в системе координат.
      end="x:y" — конец эллипса, где x, y — положение конечной точки в системе координат.
      id="{name}" — уникальный идентификатор.
      fill-style="none" — заливка. По умолчанию стоит «none». Заполненный эллипс
       — будет со значением «solid».
      stroke-width="6″ — ширина границ эллипса.
      fill="#ff000000″ — цвет границ эллипса.
      stroke="#ff000000″ — цвет заливки эллипса.

      Синтаксис

      <ellipse stroke-width="6" fill-style="none" end="-178:300" id="{ellipse1}" 
      stroke-style="solid" fill="#ff000000" stroke="#ff000000" begin="-260:7"/>

      Пример в 2D

      <stylus>

      Определяет стилус для рисования.

      Атрибуты

      stroke-style="solid" — вид фигуры. Виды фигур, нарисованных с помощью стилуса, аналогичны видам линии.
      id="{name}" — уникальный идентификатор.
      fill-style="none" — заливка. В данном случае этот атрибут не имеет смысла, т.к. нарисованные фигуры с помощью стилуса всегда однородные.
      stroke-width="6″ — толщина стилуса.
      fill="#ff000000″ — цвет стилуса.
      stroke="#ff000000″ — цвет заливки эллипса стилуса.

      Синтаксис

      <stylus stroke-width="6" fill-style="none" id="{stylus_name}" stroke-style="solid" 
      fill="#ff000000" stroke="#ff000000">

      Пример в 2D

      <stylusLine>

      Позволяет рисовать произвольные фигуры с помощью стилуса. Этот блок кода состоит из множества отрезков.

      Атрибуты

      stroke-style="solid" — вид фигуры. Виды фигур, нарисованных с помощью стилуса, аналогичны видам линии.
      id="{name}" — уникальный идентификатор.
      fill-style="none" — заливка. В данном случае этот атрибут не имеет смысла, т.к. нарисованные фигуры с помощью стилуса всегда однородные.
      stroke-width="6″ — толщина стилуса.
      fill="#ff000000″ — цвет стилуса.
      stroke="#ff000000″ — цвет заливки эллипса стилуса.

      Синтаксис

      <stylusLine stroke-width="6" fill-style="none" end="-334:259" id="{name1}" stroke-style="solid"
      fill="#ff000000" stroke="#ff000000" begin="-334:260"/>
      <stylusLine stroke-width="6" fill-style="none" end="-333:258" id="{name2}" stroke-style="solid"
      fill="#ff000000" stroke="#ff000000" begin="-334:259"/>
      <stylusLine stroke-width="6" fill-style="none" end="-333:254" id="{name3}" stroke-style="solid"
      fill="#ff000000" stroke="#ff000000" begin="-333:258"/>

      <region>

      Позволяет добавлять регионы на сцене.

      Атрибуты

      filled="true" — заполненность. Значение по умолчанию — true.
      type="rectangle" — геометрический вид региона.
      height="300″ — высота региона.
      width="300″ — ширина региона.
      text="Finish" — название, которое будет выводиться в TRIK Studio.
      textX="0″ — положение названия региона относительно левого нижнего угла по оси X.
      textY="0″ — положение названия региона относительно левого нижнего угла по оси Y.
      x="1300″ — положение начала региона (левого верхнего угла) по оси X.
      y="-200″ — положение начала региона (левого верхнего угла) по оси Y.
      visible="false" — видимость в TRIK Studio.
      id="finish" — уникальный идентификатор региона.
      color="#ff0000″ — цвет границ и заполнения.

      Синтаксис

      <regions>
                  <region filled="true" type="rectangle" height="300" textX="0" text="Finish" 
      textY="0" x="1300" y="-200" visible="true" id="Start" width="300" color="#ff0000"/>
      </regions>

      Пример в 2D

      Пример

      Задача «Штрихкод»

      Необходимо нарисовать штрихкод. Штрихкод состоит из белых и черных линий одинаковой толщины. Черная линия задает 1 в двоичном числе, а белая 0. Первая черная линия на пути робота — это старший бит числа.
      Порядок линий в штрихкоде: 1001011011.

      Создание мира

      В данной задаче линии должны быть одинаковой толщины и длины. От руки, с помощью инструмента «Линия» или «Стилус», нарисовать линии очень сложно, поэтому отредактируйте линии вручную:
      1
      Нарисуйте на сцене 10 линий.
      2
      Сохраните модель мира.
      3
      Откройте получившийся XML-файл в любом удобном редакторе. Обратите внимание на блок кода с тегом <line…>.
      4
      Для удобства назовите каждую линию black1-black5 и white1-white5. Сделать это можно в атрибуте «id». Называйте линии в порядке, указанном выше.
      5
      Укажите толщину линий «50» в атрибуте stroke-width.
      6
      Присвойте цвет каждой линии: #ff000000 — черный, #ffffffff — белый. Сделать это можно в атрибуте «fill». Присваивайте цвета таким образом, чтобы получился штрихкод.
      7
      Выставьте положение каждой линии в атрибутах «begin» и «end» без зазоров, чтобы получился ровный штрихкод.

      Результат