# 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:

1. Inicia el juego, ofreciendo elegir el símbolo con el que el usuario jugará.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcGD7I4VCwXOIVc5PMM6KozNHuaS8Kb0LosBpSs33u5IB89ZYzLAX3Jp8TKkSVN9Wac0jlEzZh_JInf2Vkpq2aU2k1M9NbGW7uEfT6W5qJEXSb7wFX9WNaqAHPoyDjtbUMhxXGSkg?key=8OqHXqKR2hFCRM0MvJDUmXXN" alt=""><figcaption></figcaption></figure>

2. Abre el campo de juego, después de lo cual el usuario y la computadora eligen alternativamente una celda para jugar.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdwKr3tkiXq8CVbjJgqzOSffJeBt1STul-vs5QwL9fJL9gi8zwBqdrCuZvU0TqS03NruHAvgumIrGOX16HTQKpZeLKKqg16dREc1VPGU-LB0-2YGAvQQUmIvTYnKsSL3sNJdfuMnQ?key=8OqHXqKR2hFCRM0MvJDUmXXN" alt=""><figcaption></figcaption></figure>

3. En caso de que el usuario gane, muestra una ventana con un mensaje al respecto.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXc7Mxcz3VCswuBwv-RcPDEng1qsshmrBdxnxhLIXMDGo2QZDgY1vfDLk5LTIW-4E5CNotknwlZChOFKMiOehtVeDh6rv5NTdKUFgbmfPndRVek6gHqEz4SRjDFAp4Y0HAuMQaHW_Q?key=8OqHXqKR2hFCRM0MvJDUmXXN" alt=""><figcaption></figcaption></figure>

El diagrama principal del proyecto se llama “TresEnRaya” y se ve así (para mayor comodidad, los bloques del diagrama están numerados):

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXf18SaDH552gEsXQvmBqhIcrw65NW6KDljR4NM8C4YLfIlUX0dda0cPebtQXHOYzxN4D6uW2Fy-ImlCpLHrbN-QDuK4dGUPHJ0_qkT7yDgMC2WeCMdibXiZcjaNnhRttpFEiidsEg?key=8OqHXqKR2hFCRM0MvJDUmXXN" alt=""><figcaption></figcaption></figure>

1. **Bloque “Inicio”** (desde este bloque comienza cualquier diagrama).
2. **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).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeqoscEXVmxeWC6UsE9SAx1q8utQ-aFgqmAHMte70_NtN8rONyIpaT-BgSZTmfjzwX2j4I9Iu-vouw4J2TitNFbz3ZzsmPXLOD-dtWFpqq8FJG-7ILnEZQ1FGDnFW35QXde1_-9?key=8OqHXqKR2hFCRM0MvJDUmXXN" alt=""><figcaption></figcaption></figure>

3. **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).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdAYKpoL4iuDH--fZvseYmKEebB_tMXosKfYJsJGrL7YrodP1oG-an3pJ2wfFiohXFcuutN063QP2_InA4TKHDefnONxX0huLzzVTszorqtWWMyhi1Ta5Ro0QsTuaebvpc0Yct-?key=8OqHXqKR2hFCRM0MvJDUmXXN" alt=""><figcaption></figcaption></figure>

4. **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).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdC1ciF21txiUHWdW_QXMNCLCwwb8N3vG72_FTJFKhJz8Z8n14-QddBS3lW-JGPPIQMpmv951hu5hrXOZJzFUYlRKDcbRMUD3hZUtKwxZFT7gYBq2vXtQczn8vpf2aHykjuV-q-?key=8OqHXqKR2hFCRM0MvJDUmXXN" alt=""><figcaption></figcaption></figure>

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](https://docs.sherparpa.ru/es/sherpa-rpa/sherpa-designer/rabota-v-sherpa-designer/osnovnoe-menyu/panel-razrabotka/menyu-dopolnitelno/redaktor-okon)”.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfoNIdYzd3rA8EtB8PzZ6ZpR3ThxUovLmWudzCurx7dJRtjQ3nxUQrnSwe_z5GmIU-0rpVx2AZExbSVjbje53WyVX4toIO5nJld4oMxeQpKK8VPXx746tFU1h7CsqozzHD7qNMFpw?key=8OqHXqKR2hFCRM0MvJDUmXXN" alt=""><figcaption></figcaption></figure>

5. **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);

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeYWfNurXMOyfAarm85dIa3vQnFa-d1zcUjsssxHsT53uAd7TGi9jSeyyHsvAQxonEwxAc5Ju00Fd8id0jECMim2ZrgKd3cchrch4odoJoGRxFdB75mYsNPWQk97kNZA5keeVo9VA?key=8OqHXqKR2hFCRM0MvJDUmXXN" alt=""><figcaption></figcaption></figure>

6. **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.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXePfUen2D_5epkkpriBctr_go5a7nLOz54FzKWPsU8sYf55LX3XBv_TuBif7Gfeam1vQtWm-4aEOIHlSqE5cYWIfvapFPEgfUMDXdkveaCKUvyp9_0aav4RcSMbpHenvwt2It2fpQ?key=8OqHXqKR2hFCRM0MvJDUmXXN" alt=""><figcaption></figcaption></figure>

7. **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).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeA5LwUHPpv55WZkC15R0wWLftaTKt8yqKrmCUgm-oZ8Wi0Q-uKQGfdvWQVj_MhhDyXEjX1bgGnhW17JWXDQ_IBb8fyPjOpO8kWi7CEqq5KNId7NveUeeFL0TaGnyvf_OeS_yMvsg?key=8OqHXqKR2hFCRM0MvJDUmXXN" alt=""><figcaption></figcaption></figure>

8. **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.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdoaNwyxwik2eEAhB_JGb12YhAb1Q3WEjqvqR03J89tPNk38Q-2tdFJ3c7o9fMZRQw_T61PW1cZpIqYE_N3TkhM8w61lit5Au6unBwdr9eZtCsdOZYjFybHrTG6eh8xnYab5bUITg?key=8OqHXqKR2hFCRM0MvJDUmXXN" alt=""><figcaption></figcaption></figure>

9\. \*\*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).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfrvRVlhsLZrN90bppRvnPoqiTNlnaKy_i-_BmKmot5cljnauBac5dPMtK72JlNlFWOggy5PyYCt9fx5Qs2p4alTDY0JqVX96Ot0O67eXZUyB1UTmwGIT0fZAnKcmquLa_834n5?key=8OqHXqKR2hFCRM0MvJDUmXXN" alt=""><figcaption></figcaption></figure>

10. **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.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXervXuw-7wfa3-sdFul5F2SuoMsnCJ7Fr0IuDYoSkdo_MmowmEaYnOwPKRZpgibPx2I8mhLc9IlaExJliEcA-LySpjJcpKpfUMyd05-cEvxS8QEqoWTlUGRYBv05O4iQHCUUpqC?key=8OqHXqKR2hFCRM0MvJDUmXXN" alt=""><figcaption></figcaption></figure>

11. **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).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdD-DWNu8IEACpULf1w-XM1QX9Qz0Ldg9L1Ncuc7ingMPGChLmN8AI73-5xAOxeDr8UsoKGmtdNrRvCXatmOndMBAIe7285gmvnIvhcZ8Y2biod2dlQIBebhDAZJ58ekghpuVPIqQ?key=8OqHXqKR2hFCRM0MvJDUmXXN" alt=""><figcaption></figcaption></figure>

12. **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).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXddHDkXiXMJGUrl5BxWiqkt8Z54SuM1yYarJ-EKJdg-xPr0s0pH5UK1AT_a65tyInOFhfkrcgRXY-vfhrW1stcFSH9H5dMasLc6qngJzZzT-fJnPkXfavTIROCi-Voqh0pckHiJdQ?key=8OqHXqKR2hFCRM0MvJDUmXXN" alt=""><figcaption></figcaption></figure>

13. **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.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdXN7SMvYppUx6BXjFKG5i3IBhD4U2R_EcFaJ8D3oMjTJU2EsDRuXUPOidevc_-yJs-nCmyB473t9C86URLLccO94dwmW3bO2SODfVsA7Vb3GN7zLQW3J8zsC2-KZAhqSH5WJnM7g?key=8OqHXqKR2hFCRM0MvJDUmXXN" alt=""><figcaption></figcaption></figure>

14. – 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.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXc8gk2qGajWIr1Nw5xrr7jzxo2smpa-oRsgNAtLfbraaa0XARZyaaw4gUWRctRrOz-y_0OCSf6QO3Iwo1QSwNGVFsiq_jo-pyb_2VGjLN4oOGgjei8mMN4ONxT5AZfR1yjCjY7tow?key=8OqHXqKR2hFCRM0MvJDUmXXN" alt=""><figcaption></figcaption></figure>

**Diagrama “Turno del jugador”**

<figure><img src="https://3940823687-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8QfFNyYLPzoIrRZpZokA%2Fuploads%2Fgit-blob-cb549cd6e701bae9055bf6bb4450aa102ba9bdcb%2F%D0%A5%D0%BE%D0%B4%D0%98%D0%B3%D1%80%D0%BE%D0%BA1.png?alt=media" alt=""><figcaption></figcaption></figure>

1. **Bloque “Inicio”** (desde este bloque comienza cualquier diagrama).
2. **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).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdusoAzXULW57mVoWYCC3eiaskn-Egtz9sZ0tXMWR6mB4CLLHZmD7F189wg0-5QDj8_NoaAAHT1vJXwV488QK8GfUPIAXsLWKDX6-XGbu7fGzxPxa-sJQKaWtrZ8X8sqpB8HuRs0w?key=8OqHXqKR2hFCRM0MvJDUmXXN" alt=""><figcaption></figcaption></figure>

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”.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcER_K2baWfUb8iOTGLAgcnJpAkqWyMMiLbo4hdlTq6XlDDPded6_gwUSgkdaOybetW7vF1Fd_jQ3S0yCUwu4MyGyY-AE-QaVcUSFrJto18rIooM_f6PU0lbERbMoeR0HGYQvxAjg?key=8OqHXqKR2hFCRM0MvJDUmXXN" alt=""><figcaption></figcaption></figure>

3. **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”.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXf1lDXqw30eRN3lBC0gHrONjYW1GajlCjOH0MtI9hNb4C8sR-qCOeLK6sY4uYbqPY64LhXdpdJDMfwdIYWK0PtGYliMIxjfSJIOq_nWcWbAbt7SwctjUaD2-Nul3xDAwvavq5_KYg?key=8OqHXqKR2hFCRM0MvJDUmXXN" alt=""><figcaption></figcaption></figure>

4. **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).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXepDeOWbdQdwnh_X5kaPD1juuWm-4xrWijQqqt_uiBlX99C1BgPggVzDmHKBAQati7ob1b5lBbozaZLu_m3t5gwa3VyvUfd_r0iOcs00RhZKoL3FxVPxGC0dc9fV_V6WHBlJVAW?key=8OqHXqKR2hFCRM0MvJDUmXXN" alt=""><figcaption></figcaption></figure>

5. **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.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfOLhaiXpLy5r2zCIzznePrGNNQj787VhClzx-kWUhhguLS63odgcGSXis1lSdkm8Fc7rVu0aFFBaJAQYYenTq5u3zvMs-2pdEx6YIRHv7D9YYx05q3FGWe8_SfAmf4EEdbJxL7?key=8OqHXqKR2hFCRM0MvJDUmXXN" alt=""><figcaption></figcaption></figure>

6. **Bloque “Detener”** interrumpe la ejecución del script o genera un error.
7. **Bloque “Fin”** (este bloque finaliza la ejecución del script o devuelve el diagrama del subproceso al proceso principal).

**Diagrama “Movimiento del computador”**

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXerMFtAloxxwOwXQOW3NkaxHF-QOSdylq5mS3jJkRMzaPIqGHlM5y08AtjPBd-ZKjDcL0EJXttN_0ZJdm4l4OoVpr1-l3tZ4PLPp4RdRBUL8DuzUel8k5kp_DEbEP-t94O7M_4oKg?key=8OqHXqKR2hFCRM0MvJDUmXXN" alt=""><figcaption></figcaption></figure>

1. **Bloque “Inicio”** (desde este bloque comienza cualquier diagrama).
2. **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).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXd3MnPszQ4sCVrDLLDn9gg8U4yl5wkC4f62OtSzmWVDOihPiMiV2AGeaUOaUVbYwulLJrZt5vtRw2avchNhhE3O6gOI6kcWPbP-sQZjHCHYdubC3goEsiCObgkaB3I4Zu4jxqHhOQ?key=8OqHXqKR2hFCRM0MvJDUmXXN" alt=""><figcaption></figcaption></figure>

3. **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.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfE2Rd56Vk_PeLUHUD416RjJnbyOuBpb4w4rMVBHDQwqAeP9gTw_Pyj1Wfrl_HaUdbbZ-6SV05kpsDDBje7Z3UDUjAU0GqBrKbi-wZZvPFgxQRFzBMugoKFheodH5ZX9Zyd0Q6Z?key=8OqHXqKR2hFCRM0MvJDUmXXN" alt=""><figcaption></figcaption></figure>

4. **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).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcjlem_r8ny4HqWMMVbqok1_l_k-AGdykATARUr6rLVEoWejcCAOtnnrxouIcSGKqj0R8CHMshKSu3o2yq-VnK9cZYZUxUfKp-o8SXf2fr1qH67G1Vg12v-THtFDhw_sB0LkWEASg?key=8OqHXqKR2hFCRM0MvJDUmXXN" alt=""><figcaption></figcaption></figure>

<br>

5. **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.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfp-DNjBmoYKXHDXNOj3B8mzkXXl5EVF6c_zTkHlmdeYje72A8D3kKsgNehOMHTxQDuIA809USTEceGzAvbpMe6bKDdc6QjaZIqUKfVxODVtzu6qBDcVM6iQNODRYoLnUBNqlbrUg?key=8OqHXqKR2hFCRM0MvJDUmXXN" alt=""><figcaption></figcaption></figure>

6. **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.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeU-mLT0RT44FkTpX-hRFOPlvoooP7R_iUlvapgopTBToIirz2Drzzr-Sm8tVSSdhHtlUt-10_YCsSMEkHsyHnhWmqlCkRfwDMW067Ak3pfUFqcnAuTtU12EzLKsSsvd4ogrnmZQQ?key=8OqHXqKR2hFCRM0MvJDUmXXN" alt=""><figcaption></figcaption></figure>

<br>

**Diagrama “Juego terminado”**

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdNuaCa03qLf6tNJaj2ehSbmUfSO1-dMhwpTX8rygElb2AsfZDC3576qARUBqvEEH2d0QleLai4TFv7XVkeeriEEErZsGZKQdUOmXe0VWmiy-BLIf-dlAjvmo8yYfgoLDpCTkZUCg?key=8OqHXqKR2hFCRM0MvJDUmXXN" alt=""><figcaption></figcaption></figure>

1. **Bloque “Inicio”** (desde este bloque comienza cualquier diagrama).
2. **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).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfEkV91ynbheNtmDoTRzkdt4eLNCbLGPUXluKxwK0NoK8d3hMrsIPWDOV8zg9ms-mZWk-0-rPWuLVaIm657AatKylrtzBIxs-mYl_QftfxZUSDUl_XeRkdNuMtz1-TS4OeyB97nSg?key=8OqHXqKR2hFCRM0MvJDUmXXN" alt=""><figcaption></figcaption></figure>

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”.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfC_b9lskCt5R8o_tajztewaoyjtlPWYOyh2IgJXtvHvUQR7WblAfYMO82rqRoO3r00r-TN7o81hZLehF4FICtU7wRY_X3NOUjy3iT2Bm5Lli9fDOFbz5YjCHF1wrh9EeObfZ0Gww?key=8OqHXqKR2hFCRM0MvJDUmXXN" alt=""><figcaption></figcaption></figure>

3. **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.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcUW3qCe_jrjybivhgtbvQA8uS5yRa8etRIxBcUHT-a3A68LCTDlDKqDBhFOvJkmb6ZmcIPES8vJmsNuvCDHpSvnzJGNUn_tyGZQdtjFwCX9y50wfmKBVPKiwoNByTemWJRHT_x9Q?key=8OqHXqKR2hFCRM0MvJDUmXXN" alt=""><figcaption></figcaption></figure>

4. **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).

  <figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcNJ2CuS4uMoH__MroPin5PuFvUtoYaA0ZtQvo1UH5fzEyJ2p0sKKXmYPTE3BDX34GH9dSQ_J8LsDbX9t0N69OV2AqIy_EzujjaDpbJ4yBiO0iBUmLtGs9IGyXfRuTrGjo5M3Wl?key=8OqHXqKR2hFCRM0MvJDUmXXN" alt=""><figcaption></figcaption></figure>

5. 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).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXc_E6Yi_mrjKkApFIXseb5l0Z8ENSH-atYtQtFfAVG2MAB2ilr_DLlSBKsnuRHuWrudU1uxKX4OHKVu38h_jZkA1hppF_k7oI9UQjQijk4YqJohP5DVC0dT2HWSYcfSueKi3I5Xiw?key=8OqHXqKR2hFCRM0MvJDUmXXN" alt=""><figcaption></figcaption></figure>

6. \- 7. **Bloques “Fin”** (con estos bloques se finaliza la ejecución del guion o se devuelve el diagrama del subproceso al proceso principal).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.sherparpa.ru/es/sherpa-rpa/sherpa-designer/primery-robotov/krestiki-noliki.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
