Блочный пример нескольких рабочих областей

Я пытаюсь создать платформу, которая позволяет учащимся играть в кодовые задачи лицом к лицу, используя blockly. Я представляю что-то вроде:

введите здесь описание изображения

В документации упоминается «Несколько рабочих областей» с фабрикой блоков, но я чувствую как будто я изобретаю велосипед здесь, так что, прежде чем я начну, существует ли что-то подобное уже? В идеале, подключиться к движку приложения, чтобы учащиеся могли брать код у любого другого учащегося и тестировать, чтобы сравнить их код?


person Luke Schlangen    schedule 15.10.2017    source источник


Ответы (1)


Да, он существует! Мы используем это в инструментах разработчика, чтобы предоставить как редактор, так и предварительный просмотр. Две демонстрации, которые стоит посмотреть, — это Multi-Playground (src) и Зеркальные рабочие области (источник).

Вы заметите, что на многопользовательской игровой площадке мы просто вызываем Blockly.inject(..) для каждого элемента div:

function start() {
  // ...
  startBlocklyInstance('VertStartLTR', false, false, 'start', toolbox);
  startBlocklyInstance('VertStartRTL', true, false, 'start', toolbox);
  startBlocklyInstance('VertEndLTR', false, false, 'end', toolbox);
  startBlocklyInstance('VertEndRTL', true, false, 'end', toolbox);
  startBlocklyInstance('HorizontalStartLTR', false, true, 'start', toolbox);
  startBlocklyInstance('HorizontalStartRTL', true, true, 'start', toolbox);
  startBlocklyInstance('HorizontalEndLTR', false, true, 'end', toolbox);
  startBlocklyInstance('HorizontalEndRTL', true, true, 'end', toolbox);
}

function startBlocklyInstance(suffix, rtl, horizontalLayout, position,
    toolbox) {
  options.rtl = rtl;
  options.toolbox = toolbox;
  options.horizontalLayout = horizontalLayout;
  options.toolboxPosition = position;
  Blockly.inject('blocklyDiv' + suffix, options);
}
person Anm    schedule 17.10.2017