Tres en raya#
Consideremos un ejemplo de un robot que inicia un juego de tres en raya, implementado en Sherpa Robot.
El proyecto del robot consta de seis diagramas. Si se describe paso a paso, este robot funciona de la siguiente manera:
- Inicia el juego, ofreciendo elegir el símbolo con el que el usuario jugará.
- Abre el campo de juego, después de lo cual el usuario y la computadora eligen alternativamente una celda para jugar.
- En caso de que el usuario gane, muestra una ventana con un mensaje al respecto.
El diagrama principal del proyecto se llama “TresEnRaya” y se ve así (para mayor comodidad, los bloques del diagrama están numerados):
- Bloque “Inicio” (desde este bloque comienza cualquier diagrama).
- Bloque “Obtener ruta” permite conocer la ruta completa al archivo. Para este bloque se especifican las siguientes propiedades:
- Nombre del archivo (nombre del archivo);
- Generar nombre (si se activa la bandera, se generará un nombre de archivo aleatorio, incluyendo la extensión).
- Bloque “Obtener ruta” permite conocer la ruta completa al archivo. Para este bloque se especifican las siguientes propiedades:
- Nombre del archivo (nombre del archivo);
- Generar nombre (si se activa la bandera, se generará un nombre de archivo aleatorio, incluyendo la extensión).
- Bloque “Mostrar ventana” permite crear sus propias ventanas (formularios) y mostrarlas en modo modal y no modal, incluso de forma asíncrona con respecto al flujo del script. Si se especifica un selector, las coordenadas de la ventana creada estarán vinculadas a un control en otra aplicación. Para este bloque se especifican las siguientes propiedades:
- Configuración (cadena de configuración);
- Objeto ventana (variable con el objeto ventana);
- Modal (si se activa la bandera, la ventana se mostrará como modal);
- ID del proceso (variable que almacena el identificador del proceso).
Para crear y editar la ventana se utiliza el botón “Editar…”, que se encuentra en el bloque. Al hacer clic en este botón se abre “Editor de ventanas”.
- Bloque “Switch/Caso”. El operador switch compara la expresión con los valores especificados y sale por el conector indicado. Si no se encuentran coincidencias, saldrá por el conector “Por defecto”. Para este bloque se especifican las siguientes propiedades:
- Expresión (expresión a comparar);
- Condición 1 (si hay coincidencia, se saldrá por el conector 1, y también se ejecutará la expresión 1 si está especificada. Si no se especifica el conector, la salida será por defecto);
- Ejecutar expresión 1 (si se cumple la condición 1, se ejecutará esta expresión y se saldrá por el conector correspondiente. Si el conector no está conectado, la salida será por defecto);
- Condición 2 (si hay coincidencia, se saldrá por el conector 2, y también se ejecutará la expresión 2 si está especificada. Si no se especifica el conector, la salida será por defecto);
- Ejecutar expresión 2 (si se cumple la condición 2, se ejecutará esta expresión y se saldrá por el conector correspondiente. Si el conector no está conectado, la salida será por defecto);
- Bloque “Asignar valor a variable” establece nuevos valores para una o varias variables. En este caso, en las propiedades se especifica un valor que debe asignarse a una variable, respectivamente.
- Bloque “Proceso” permite crear scripts que constan de varios diagramas. La ejecución del script continuará desde el bloque “Inicio” del diagrama especificado del proyecto. La ejecución del script volverá al bloque actual y continuará en el diagrama actual tan pronto como se alcance el bloque “Fin” en el diagrama externo. Para el bloque “Proceso” se especifica la propiedad “Nombre del diagrama” (nombre del archivo del diagrama en el que continuará la ejecución del script).
- Bloque “Condición” verifica la condición especificada para su veracidad, después de lo cual la ejecución del script continúa hacia la salida “Sí” (si se cumple la condición) o hacia la salida “No” (si la condición no se cumple).
La condición se escribe en el formato: “variable” es igual a (==)/ mayor que (>)/ menor que (<) “valor”.
Por ejemplo: $a == “Hola”, es decir, si el valor de la variable $a es igual a “Hola”, entonces salida “Sí”, de lo contrario – salida “No”.
$Result > 5, es decir, si el valor de la variable $Result es menor que 5, entonces salida “Sí”, de lo contrario – salida “No”.
En este caso, se ha establecido como condición: $IsFinal. Es decir, se está verificando si es el final.
- Bloque “Condición” verifica la veracidad de la condición indicada, después de lo cual la ejecución del escenario continúa hacia la salida “Sí” (si la condición se cumple) o hacia la salida “No” (si la condición no se cumple).
La condición se escribe en el formato: “variable” es igual a (==)/ mayor que (>)/ menor que (<) “valor”.
Por ejemplo: $a == “Hola”, es decir, si el valor de la variable $a es igual a “Hola”, entonces la salida es “Sí”, de lo contrario – la salida es “No”.
$Result > 5, es decir, si el valor de la variable $Result es menor que 5, entonces la salida es “Sí”, de lo contrario – la salida es “No”. En este caso, se ha establecido como condición: $IsStepUser. Es decir, se verifica el turno del jugador.
- Bloque “Proceso” permite crear escenarios compuestos por varios diagramas. La ejecución del escenario continuará desde el bloque “Inicio” del diagrama del proyecto indicado. La ejecución del escenario regresará al bloque actual y continuará en el diagrama actual tan pronto como se alcance el bloque “Fin” en el diagrama externo. Para el bloque “Proceso” se ha especificado la propiedad “Nombre del diagrama” (nombre del archivo del diagrama en el que continuará la ejecución del escenario).
- Bloque “Proceso” permite crear escenarios compuestos por varios diagramas. La ejecución del escenario continuará desde el bloque “Inicio” del diagrama del proyecto indicado. La ejecución del escenario regresará al bloque actual y continuará en el diagrama actual tan pronto como se alcance el bloque “Fin” en el diagrama externo. Para el bloque “Proceso” se ha especificado la propiedad “Nombre del diagrama” (nombre del archivo del diagrama en el que continuará la ejecución del escenario).
- Bloque “Asignar valor a la variable” establece nuevos valores para una o varias variables. En este caso, en las propiedades se ha indicado un valor que debe asignarse a una variable, respectivamente.
- – 15. Bloques “Fin” (con estos bloques se finaliza la ejecución del escenario o se devuelve el diagrama del subproceso al proceso principal).
Diagrama “Realizar movimiento”
Este diagrama consiste en pares de bloques “Condición” y “Fin”. El diagrama “Realizar movimiento” ejecuta cada movimiento subsiguiente y verifica el cumplimiento de la condición.
Diagrama “Turno del jugador”

- Bloque “Inicio” (desde este bloque comienza cualquier diagrama).
- Bloque “Mostrar ventana” permite crear sus propias ventanas (formularios) y mostrarlas en modo modal y no modal, incluyendo de manera asíncrona en relación al turno del escenario. Si se especifica un selector, las coordenadas de la ventana creada estarán vinculadas a un control en otra aplicación. Para este bloque se han especificado las siguientes propiedades:
- Configuración (cadena de configuración);
- Objeto ventana (variable con el objeto ventana);
- ID de proceso (variable en la que se almacena el identificador del proceso).
Para crear y editar la ventana se utiliza el botón “Editar…”, que se encuentra en el bloque. Al hacer clic en este botón se abre el “Editor de ventanas”.
- Bloque “Condición” verifica la veracidad de la condición indicada, después de lo cual la ejecución del escenario continúa hacia la salida “Sí” (si la condición se cumple) o hacia la salida “No” (si la condición no se cumple).
La condición se escribe en el formato: “variable” es igual a (==)/ mayor que (>)/ menor que (<) “valor”.
Por ejemplo: $a == “Hola”, es decir, si el valor de la variable $a es igual a “Hola”, entonces la salida es “Sí”, de lo contrario – la salida es “No”.
$Result > 5, es decir, si el valor de la variable $Result es menor que 5, entonces la salida es “Sí”, de lo contrario – la salida es “No”. En este caso, se ha establecido como condición: $ControlEvent -ne "linkStop.LinkClicked". Es decir, se verifica que no se haya hecho clic en el enlace “Finalizar juego”.
- Bloque “Proceso” permite crear escenarios compuestos por varios diagramas. La ejecución del escenario continuará desde el bloque “Inicio” del diagrama del proyecto indicado. La ejecución del escenario regresará al bloque actual y continuará en el diagrama actual tan pronto como se alcance el bloque “Fin” en el diagrama externo. Para este bloque se han especificado las siguientes propiedades:
- Nombre del diagrama (nombre del archivo del diagrama en el que continuará la ejecución del escenario);
- Variable 1 (nombre de la primera variable a la que se le debe asignar un nuevo valor);
- Valor 1 (nuevo valor de la primera variable);
- Variable 2 (nombre de la segunda variable a la que se le debe asignar un nuevo valor);
- Valor 2 (nuevo valor de la segunda variable).
- Bloque “Condición” verifica la veracidad de la condición indicada, después de lo cual la ejecución del escenario continúa hacia la salida “Sí” (si la condición se cumple) o hacia la salida “No” (si la condición no se cumple).
La condición se escribe en el formato: “variable” es igual a (==)/ mayor que (>)/ menor que (<) “valor”.
Por ejemplo: $a == “Hola”, es decir, si el valor de la variable $a es igual a “Hola”, entonces la salida es “Sí”, de lo contrario – la salida es “No”.$Result > 5, es decir, si el valor de la variable $Result es menor que 5, entonces la salida es “Sí”, de lo contrario – la salida es “No”. En este caso, la condición establecida es: $IsCorrectMove. Es decir, se verifica la validez del movimiento del jugador.
- Bloque “Detener” interrumpe la ejecución del script o genera un error.
- Bloque “Fin” (este bloque finaliza la ejecución del script o devuelve el diagrama del subproceso al proceso principal).
Diagrama “Movimiento del computador”
- Bloque “Inicio” (desde este bloque comienza cualquier diagrama).
- Bloque “Número aleatorio” genera números aleatorios con parámetros dados. Para este bloque se han establecido las siguientes propiedades:
- Valor mínimo (el número aleatorio no será menor que este valor);
- Valor máximo (el número aleatorio no será mayor que este valor);
- Paso (el paso del número aleatorio).
- Bloque “Asignar valor a la variable” establece nuevos valores para una o varias variables. En este caso, en las propiedades se indica un valor que debe asignarse a una variable, respectivamente.
- Bloque “Proceso” permite crear scripts compuestos de varios diagramas. La ejecución del script continuará desde el bloque “Inicio” del diagrama del proyecto indicado. La ejecución del script volverá al bloque actual y continuará en el diagrama actual tan pronto como se alcance el bloque “Fin” en el diagrama externo. Para este bloque se han establecido las siguientes propiedades:
- Nombre del diagrama (nombre del archivo del diagrama en el que continuará la ejecución del script);
- Variable 1 (nombre de la primera variable a la que se le debe asignar un nuevo valor);
- Valor 1 (nuevo valor de la primera variable);
- Variable 2 (nombre de la segunda variable a la que se le debe asignar un nuevo valor);
- Valor 2 (nuevo valor de la segunda variable).
- Bloque “Condición” verifica la condición especificada para su veracidad, después de lo cual la ejecución del script continúa hacia la salida “Sí” (si se cumple la condición) o hacia la salida “No” (si la condición no se cumple).
La condición se escribe en el formato: “variable” es igual (==)/ mayor (>)/ menor (<) “valor”.
Por ejemplo: $a == “Hola”, es decir, si el valor de la variable $a es igual a “Hola”, entonces la salida es “Sí”, de lo contrario – la salida es “No”.
$Result > 5, es decir, si el valor de la variable $Result es menor que 5, entonces la salida es “Sí”, de lo contrario – la salida es “No”. En este caso, la condición establecida es: $IsCorrectMove. Es decir, se verifica la validez del movimiento del jugador.
- Bloque “Fin” (este bloque finaliza la ejecución del script o devuelve el diagrama del subproceso al proceso principal).
Diagrama “Verificación de final”
Este diagrama consiste en pares de bloques “Condición” y “Asignar valor a la variable”. El diagrama “Verificación de final” realiza una verificación después de cada movimiento del jugador o del computador.
Diagrama “Juego terminado”
- Bloque “Inicio” (desde este bloque comienza cualquier diagrama).
- Bloque “Mostrar ventana” permite crear sus propias ventanas (formularios) y mostrarlas en modo modal y no modal, incluso de manera asíncrona con respecto al flujo del script. Si se establece un selector, las coordenadas de la ventana creada estarán vinculadas a un control en otra aplicación. Para este bloque se han establecido las siguientes propiedades:
- Configuración (cadena de configuración);
- Objeto de ventana (variable con el objeto de ventana);
- Modal (si se establece la bandera, la ventana se mostrará como modal);
- ID de proceso (variable en la que se almacena el identificador del proceso).
Para crear y editar la ventana se utiliza el botón “Editar…”, que se encuentra en el bloque. Al hacer clic en este botón se abre el “Editor de ventanas”.
- Bloque “Condición” verifica la condición especificada para su veracidad, después de lo cual la ejecución del script continúa hacia la salida “Sí” (si se cumple la condición) o hacia la salida “No” (si la condición no se cumple).
La condición se escribe en el formato: “variable” es igual (==)/ mayor (>)/ menor (<) “valor”.
Por ejemplo: $a == “Hola”, es decir, si el valor de la variable $a es igual a “Hola”, entonces la salida es “Sí”, de lo contrario – la salida es “No”.
$Result > 5, es decir, si el valor de la variable $Result es menor que 5, entonces la salida es “Sí”, de lo contrario – la salida es “No”. En este caso, la condición establecida es: $UserWon. Es decir, se verifica si el jugador ha ganado.
- Bloque “Ventana con mensaje” muestra al usuario una ventana de diálogo modal con un título, texto y un conjunto de botones dados. Si se utiliza una ventana con varios botones, el bloque permite grabar en una variable una constante de texto correspondiente al botón presionado por el usuario. Para este bloque se han establecido las siguientes propiedades:
- Mensaje (texto que se mostrará dentro de la ventana de diálogo);
- Botones (botones que estarán disponibles para que el usuario presione).
- El bloque “Ventana de mensaje” muestra al usuario un cuadro de diálogo modal con un título, texto y un conjunto de botones especificados. Si se utiliza una ventana con varios botones, el bloque permite almacenar en una variable una constante de texto correspondiente al botón presionado por el usuario. Para este bloque se especifican las siguientes propiedades:
- Mensaje (texto que se mostrará dentro del cuadro de diálogo);
- Botones (botones que estarán disponibles para que el usuario los presione).
- - 7. Bloques “Fin” (con estos bloques se finaliza la ejecución del guion o se devuelve el diagrama del subproceso al proceso principal).