Крестики-нолики#
Рассмотрим пример робота, который запускает игру в крестики-нолики, реализованную на Sherpa Robot.
Проект робота состоит из шести диаграмм. Если описывать пошагово, то данный робот работает следующим образом:
- Запускает игру, предлагая выбрать символ, которым пользователь будет играть.
- Открывает игровое поле, после чего пользователь и компьютер поочередно выбирают клетку для хода.
- В случае выигрыша пользователя, выводит окно с сообщением об этом.
Основная диаграмма проекта называется “КрестикиНолики” выглядит так (для удобства блоки диаграммы пронумерованы):
- Блок “Старт” (с этого блока начинается любая диаграмма).
- Блок “Получить путь” позволяет узнать полный путь к файлу. Для данного блока указаны следующие свойства:
- Имя файла (имя файла);
- Генерировать имя (при установленном флаге будет сгенерировано случайное имя файла, включая расширение).
- Блок “Получить путь” позволяет узнать полный путь к файлу. Для данного блока указаны следующие свойства:
- Имя файла (имя файла);
- Генерировать имя (при установленном флаге будет сгенерировано случайное имя файла, включая расширение).
- Блок “Показать окно” позволяет создавать свои собственные окна (формы) и отображать их в модальном и немодальном режиме, в том числе асинхронно по отношению к ходу сценария. Если задан селектор, координаты созданного окна будут привязаны элементу управления в другом приложении. Для данного блока указаны следующие свойства:
- Конфигурация (строка конфигурации);
- Объект окна (переменная с объектом окна);
- Модальное (при установленном флаге окно будет показано как модальное);
- ID процесса (переменная, в которой хранится идентификатор процесса).
Для создания и редактирования окна используется кнопка “Редактировать…”, находящаяся в блоке. При нажатии на данную кнопку открывается “Редактор окон”.
- Блок “Switch/Case”. Оператор switch сравнивает выражение с указанными значениями и выходит по указанному коннектору. Если совпадений не будет обнаружено, то выходит по коннектору “По умолчанию”. Для данного блока указаны следующие свойства:
- Выражение (сравниваемое выражение);
- Условие 1 (при совпадении будет произведен выход по коннектору 1, а также выполнено выражение 1 если оно задано. Если коннектор не задан, то выход будет произведен по умолчанию);
- Выполнить выражение 1 (при выполнении условия 1 будет выполнено данное выражение и произведен выход по соответствующему коннектору. Если коннектор не подключен, то выход будет производится по умолчанию);
- Условие 2 (при совпадении будет произведен выход по коннектору 2, а также выполнено выражение 2 если оно задано. Если коннектор не задан, то выход будет произведен по умолчанию);
- Выполнить выражение 2 (при выполнении условия 2 будет выполнено данное выражение и произведен выход по соответствующему коннектору. Если коннектор не подключен, то выход будет производится по умолчанию);
- Блок “Присвоить значение переменной” устанавливает новые значения для одной или нескольких переменных. В данном случае, в свойствах указано одно значение, которое необходимо присвоить одной переменной, соответственно.
- Блок “Процесс” позволяет создавать сценарии, состоящие из нескольких диаграмм. Выполнение сценария продолжится с блока “Старт” указанной диаграммы проекта. Выполнение сценария вернётся к текущему блоку и продолжится в текущей диаграмме как только будет достигнут блок “Конец” во внешней диаграмме. Для блока “Процесс” указано свойство “Имя диаграммы” (имя файла диаграммы, в которой продолжится выполнение сценария).
- Блок “Условие” проверяет указанное условие на истинность, после чего выполнение сценария продолжается в сторону выхода “Да” (если условие выполняется) или в сторону выхода “Нет” (если условие не выполнилось).
Условие записывается в формате: “переменная” равна (==)/ больше (>)/ меньше (<) “значение”.
Например: $a == “Привет”, то есть, если значение переменной $a равно “Привет”, то выход “Да”, в противном случае – выход “Нет”.
$Result > 5, то есть, если значение переменной $Result меньше 5, то выход “Да”, в противном случае – выход “Нет”.
В данном случае, в качестве условия установлено:$IsFinal. Т.е., происходит проверка на финал.
- Блок “Процесс” позволяет создавать сценарии, состоящие из нескольких диаграмм. Выполнение сценария продолжится с блока “Старт” указанной диаграммы проекта. Выполнение сценария вернётся к текущему блоку и продолжится в текущей диаграмме как только будет достигнут блок “Конец” во внешней диаграмме. Для блока “Процесс” указано свойство “Имя диаграммы” (имя файла диаграммы, в которой продолжится выполнение сценария).
- Блок “Условие” проверяет указанное условие на истинность, после чего выполнение сценария продолжается в сторону выхода “Да” (если условие выполняется) или в сторону выхода “Нет” (если условие не выполнилось).
Условие записывается в формате: “переменная” равна (==)/ больше (>)/ меньше (<) “значение”.
Например: $a == “Привет”, то есть, если значение переменной $a равно “Привет”, то выход “Да”, в противном случае – выход “Нет”.
$Result > 5, то есть, если значение переменной $Result меньше 5, то выход “Да”, в противном случае – выход “Нет”. В данном случае, в качестве условия установлено: $IsStepUser. Т. е., делается проверка на ход игрока.
- Блок “Процесс” позволяет создавать сценарии, состоящие из нескольких диаграмм. Выполнение сценария продолжится с блока “Старт” указанной диаграммы проекта. Выполнение сценария вернётся к текущему блоку и продолжится в текущей диаграмме как только будет достигнут блок “Конец” во внешней диаграмме. Для блока “Процесс” указано свойство “Имя диаграммы” (имя файла диаграммы, в которой продолжится выполнение сценария).
- Блок “Процесс” позволяет создавать сценарии, состоящие из нескольких диаграмм. Выполнение сценария продолжится с блока “Старт” указанной диаграммы проекта. Выполнение сценария вернётся к текущему блоку и продолжится в текущей диаграмме как только будет достигнут блок “Конец” во внешней диаграмме. Для блока “Процесс” указано свойство “Имя диаграммы” (имя файла диаграммы, в которой продолжится выполнение сценария).
- Блок “Присвоить значение переменной” устанавливает новые значения для одной или нескольких переменных. В данном случае, в свойствах указано одно значение, которое необходимо присвоить одной переменной, соответственно.
- – 15. Блоки “Конец” (этими блоками завершается работа сценария или возврат диаграммы подпроцесса в основной процесс).
Диаграмма “Выполнить ход”
Данная диаграмма состоит из пар блоков “Условие” и “Конец”. Диаграмма “Выполнить ход” выполняет каждый последующий ход и проверяет соблюдение условия.
Диаграмма “Ход игрока”

- Блок “Старт” (с этого блока начинается любая диаграмма).
- Блок “Показать окно” позволяет создавать свои собственные окна (формы) и отображать их в модальном и немодальном режиме, в том числе асинхронно по отношению к ходу сценария. Если задан селектор, координаты созданного окна будут привязаны элементу управления в другом приложении. Для данного блока указаны следующие свойства:
- Конфигурация (строка конфигурации);
- Объект окна (переменная с объектом окна);
- ID процесса (переменная, в которой хранится идентификатор процесса).
Для создания и редактирования окна используется кнопка “Редактировать…”, находящаяся в блоке. При нажатии на данную кнопку открывается “Редактор окон”.
- Блок “Условие” проверяет указанное условие на истинность, после чего выполнение сценария продолжается в сторону выхода “Да” (если условие выполняется) или в сторону выхода “Нет” (если условие не выполнилось).
Условие записывается в формате: “переменная” равна (==)/ больше (>)/ меньше (<) “значение”.
Например: $a == “Привет”, то есть, если значение переменной $a равно “Привет”, то выход “Да”, в противном случае – выход “Нет”.
$Result > 5, то есть, если значение переменной $Result меньше 5, то выход “Да”, в противном случае – выход “Нет”. В данном случае, в качестве условия установлено: $ControlEvent -ne "linkStop.LinkClicked". Т. е., осуществляется проверка, что не была нажата ссылка “Завершить игру”.
- Блок “Процесс” позволяет создавать сценарии, состоящие из нескольких диаграмм. Выполнение сценария продолжится с блока “Старт” указанной диаграммы проекта. Выполнение сценария вернётся к текущему блоку и продолжится в текущей диаграмме как только будет достигнут блок “Конец” во внешней диаграмме. Для данного блока указаны следующие свойства:
- Имя диаграммы (имя файла диаграммы, в которой продолжится выполнение сценария);
- Переменная 1 (имя первой переменной, которой необходимо присвоить новое значение);
- Значение 1 (новое значение первой переменной);
- Переменная 2 (имя второй переменной, которой необходимо присвоить новое значение);
- Значение 2 (новое значение второй переменной).
- Блок “Условие” проверяет указанное условие на истинность, после чего выполнение сценария продолжается в сторону выхода “Да” (если условие выполняется) или в сторону выхода “Нет” (если условие не выполнилось).
Условие записывается в формате: “переменная” равна (==)/ больше (>)/ меньше (<) “значение”.
Например: $a == “Привет”, то есть, если значение переменной $a равно “Привет”, то выход “Да”, в противном случае – выход “Нет”.
$Result > 5, то есть, если значение переменной $Result меньше 5, то выход “Да”, в противном случае – выход “Нет”. В данном случае, в качестве условия установлено: $IsCorrectMove. Т. е., проверяется корректность хода игрока.
- Блок “Стоп” прерывает работу сценария или генерирует ошибку.
- Блок “Конец” (этим блоком завершается работа сценария или возврат диаграммы подпроцесса в основной процесс).
Диаграмма “Ход компьютера”
- Блок “Старт” (с этого блока начинается любая диаграмма).
- Блок “Случайное число” генерирует случайное числа с заданными параметрами. Для данного блока заданы следующие свойства:
- Мин. значение (случайное число не будет меньше данного значения);
- Макс. значение (случайное число не будет больше данного значения);
- Шаг (шаг случайного числа).
- Блок “Присвоить значение переменной” устанавливает новые значения для одной или нескольких переменных. В данном случае, в свойствах указано одно значение, которое необходимо присвоить одной переменной, соответственно.
- Блок “Процесс” позволяет создавать сценарии, состоящие из нескольких диаграмм. Выполнение сценария продолжится с блока “Старт” указанной диаграммы проекта. Выполнение сценария вернётся к текущему блоку и продолжится в текущей диаграмме как только будет достигнут блок “Конец” во внешней диаграмме. Для данного блока указаны следующие свойства:
- Имя диаграммы (имя файла диаграммы, в которой продолжится выполнение сценария);
- Переменная 1 (имя первой переменной, которой необходимо присвоить новое значение);
- Значение 1 (новое значение первой переменной);
- Переменная 2 (имя второй переменной, которой необходимо присвоить новое значение);
- Значение 2 (новое значение второй переменной).
- Блок “Условие” проверяет указанное условие на истинность, после чего выполнение сценария продолжается в сторону выхода “Да” (если условие выполняется) или в сторону выхода “Нет” (если условие не выполнилось).
Условие записывается в формате: “переменная” равна (==)/ больше (>)/ меньше (<) “значение”.
Например: $a == “Привет”, то есть, если значение переменной $a равно “Привет”, то выход “Да”, в противном случае – выход “Нет”.
$Result > 5, то есть, если значение переменной $Result меньше 5, то выход “Да”, в противном случае – выход “Нет”. В данном случае, в качестве условия установлено: $IsCorrectMove. Т. е., проверяется корректность хода игрока.
- Блок “Конец” (этим блоком завершается работа сценария или возврат диаграммы подпроцесса в основной процесс).
Диаграмма “Проверка на финал”
Данная диаграмма состоит из пар блоков “Условие” и “Присвоить значение переменной”. Диаграмма “Проверка на финал” осуществляет проверку после каждого хода игрока или компьютера.
Диаграмма “Игра окончена”
- Блок “Старт” (с этого блока начинается любая диаграмма).
- Блок “Показать окно” позволяет создавать свои собственные окна (формы) и отображать их в модальном и немодальном режиме, в том числе асинхронно по отношению к ходу сценария. Если задан селектор, координаты созданного окна будут привязаны элементу управления в другом приложении. Для данного блока указаны следующие свойства:
- Конфигурация (строка конфигурации);
- Объект окна (переменная с объектом окна);
- Модальное (при установленном флаге окно будет показано как модальное);
- ID процесса (переменная, в которой хранится идентификатор процесса).
Для создания и редактирования окна используется кнопка “Редактировать…”, находящаяся в блоке. При нажатии на данную кнопку открывается “Редактор окон”.
- Блок “Условие” проверяет указанное условие на истинность, после чего выполнение сценария продолжается в сторону выхода “Да” (если условие выполняется) или в сторону выхода “Нет” (если условие не выполнилось).
Условие записывается в формате: “переменная” равна (==)/ больше (>)/ меньше (<) “значение”.
Например: $a == “Привет”, то есть, если значение переменной $a равно “Привет”, то выход “Да”, в противном случае – выход “Нет”.
$Result > 5, то есть, если значение переменной $Result меньше 5, то выход “Да”, в противном случае – выход “Нет”. В данном случае, в качестве условия указано: $UserWon. Т. е., проверка на то, выиграл ли игрок.
- Блок “Окно с сообщением” показывает пользователю модальное диалоговое окно с заданным заголовком, текстом и набором кнопок. Если используется окно с несколькими кнопками, блок позволяет записать в переменную текстовую константу, соответствующую нажатой пользователем кнопке. Для данного блока указаны следующие свойства:
- Сообщение (текст, который будет отображен внутри диалогового окна);
- Кнопки (кнопки, которые будут доступны пользователю для нажатия).
- Блок “Окно с сообщением” показывает пользователю модальное диалоговое окно с заданным заголовком, текстом и набором кнопок. Если используется окно с несколькими кнопками, блок позволяет записать в переменную текстовую константу, соответствующую нажатой пользователем кнопке. Для данного блока указаны следующие свойства:
- Сообщение (текст, который будет отображен внутри диалогового окна);
- Кнопки (кнопки, которые будут доступны пользователю для нажатия).
- - 7. Блоки “Конец” (этими блоками завершается работа сценария или возврат диаграммы подпроцесса в основной процесс).