# Jogo da Velha

Vamos considerar um exemplo de robô que inicia um jogo da velha, implementado no Sherpa Robot.

O projeto do robô consiste em seis diagramas. Descrevendo passo a passo, este robô funciona da seguinte maneira:

1. Inicia o jogo, oferecendo a escolha do símbolo que o usuário irá jogar.

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

2. Abre o tabuleiro, após o que o usuário e o computador escolhem alternadamente uma célula para jogar.

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

3. Em caso de vitória do usuário, exibe uma janela com a mensagem sobre isso.

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

O diagrama principal do projeto é chamado “JogoDaVelha” e se parece com isso (para conveniência, os blocos do diagrama estão numerados):

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

1. **Bloco “Início”** (todas as diagramas começam a partir deste bloco).
2. **Bloco “Obter caminho”** permite descobrir o caminho completo para o arquivo. Para este bloco, as seguintes propriedades são especificadas:

* Nome do arquivo (nome do arquivo);
* Gerar nome (com a flag ativada, um nome de arquivo aleatório será gerado, incluindo a extensão).

<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. **Bloco “Obter caminho”** permite descobrir o caminho completo para o arquivo. Para este bloco, as seguintes propriedades são especificadas:

* Nome do arquivo (nome do arquivo);
* Gerar nome (com a flag ativada, um nome de arquivo aleatório será gerado, incluindo a extensão).

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

4. **Bloco “Mostrar janela”** permite criar suas próprias janelas (formulários) e exibi-las em modo modal e não modal, incluindo de forma assíncrona em relação ao fluxo do script. Se um seletor for definido, as coordenadas da janela criada serão vinculadas ao controle em outro aplicativo. Para este bloco, as seguintes propriedades são especificadas:

* Configuração (string de configuração);
* Objeto da janela (variável com o objeto da janela);
* Modal (com a flag ativada, a janela será exibida como modal);
* ID do processo (variável que armazena o identificador do processo).

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

Para criar e editar a janela, utiliza-se o botão “Editar…”, localizado no bloco. Ao clicar neste botão, abre-se o “[Editor de Janelas](https://docs.sherparpa.ru/pt/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. **Bloco “Switch/Case”**. O operador switch compara a expressão com os valores especificados e sai pelo conector indicado. Se nenhuma correspondência for encontrada, sai pelo conector “Padrão”. Para este bloco, as seguintes propriedades são especificadas:

* Expressão (expressão a ser comparada);
* Condição 1 (se houver correspondência, sairá pelo conector 1, e a expressão 1 será executada se estiver definida. Se o conector não estiver definido, a saída será feita por padrão);
* Executar expressão 1 (se a condição 1 for atendida, esta expressão será executada e a saída será feita pelo conector correspondente. Se o conector não estiver conectado, a saída será feita por padrão);
* Condição 2 (se houver correspondência, sairá pelo conector 2, e a expressão 2 será executada se estiver definida. Se o conector não estiver definido, a saída será feita por padrão);
* Executar expressão 2 (se a condição 2 for atendida, esta expressão será executada e a saída será feita pelo conector correspondente. Se o conector não estiver conectado, a saída será feita por padrão);

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

6. **Bloco “Atribuir valor à variável”** define novos valores para uma ou mais variáveis. Neste caso, nas propriedades, é especificado um valor que deve ser atribuído a uma variável, respectivamente.

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

7. **Bloco “Processo”** permite criar scripts compostos por vários diagramas. A execução do script continuará a partir do bloco “Início” do diagrama especificado. A execução do script retornará ao bloco atual e continuará no diagrama atual assim que o bloco “Fim” for alcançado no diagrama externo. Para o bloco “Processo”, a propriedade “Nome do diagrama” é especificada (nome do arquivo do diagrama onde a execução do script continuará).

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

8. **Bloco “Condição”** verifica a condição especificada para ver se é verdadeira, após o que a execução do script continua na saída “Sim” (se a condição for atendida) ou na saída “Não” (se a condição não for atendida).

A condição é escrita no formato: “variável” igual a (==)/ maior que (>)/ menor que (<) “valor”.

Por exemplo: $a == “Olá”, ou seja, se o valor da variável $a for igual a “Olá”, então a saída é “Sim”, caso contrário – a saída é “Não”.

$Result > 5, ou seja, se o valor da variável $Result for menor que 5, então a saída é “Sim”, caso contrário – a saída é “Não”.

Neste caso, a condição estabelecida é: $IsFinal. Ou seja, está sendo verificado se é a finalização.

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

9\. \*\*Bloco “Processo”\*\* permite criar cenários compostos por vários diagramas. A execução do cenário continuará a partir do bloco “Início” do diagrama do projeto especificado. A execução do cenário retornará ao bloco atual e continuará no diagrama atual assim que o bloco “Fim” no diagrama externo for alcançado. Para o bloco “Processo” está especificada a propriedade “Nome do diagrama” (nome do arquivo do diagrama onde a execução do cenário continuará).

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

10. **Bloco “Condição”** verifica a condição especificada quanto à veracidade, após o que a execução do cenário continua na saída “Sim” (se a condição for atendida) ou na saída “Não” (se a condição não for atendida).

A condição é escrita no formato: “variável” igual (==)/ maior (>)/ menor (<) “valor”.

Por exemplo: $a == “Olá”, ou seja, se o valor da variável $a for igual a “Olá”, então a saída é “Sim”, caso contrário – a saída é “Não”.

$Result > 5, ou seja, se o valor da variável $Result for menor que 5, então a saída é “Sim”, caso contrário – a saída é “Não”. Neste caso, a condição estabelecida é: $IsStepUser. Ou seja, está sendo verificado o movimento do jogador.

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

11. **Bloco “Processo”** permite criar cenários compostos por vários diagramas. A execução do cenário continuará a partir do bloco “Início” do diagrama do projeto especificado. A execução do cenário retornará ao bloco atual e continuará no diagrama atual assim que o bloco “Fim” no diagrama externo for alcançado. Para o bloco “Processo” está especificada a propriedade “Nome do diagrama” (nome do arquivo do diagrama onde a execução do cenário continuará).

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

12. **Bloco “Processo”** permite criar cenários compostos por vários diagramas. A execução do cenário continuará a partir do bloco “Início” do diagrama do projeto especificado. A execução do cenário retornará ao bloco atual e continuará no diagrama atual assim que o bloco “Fim” no diagrama externo for alcançado. Para o bloco “Processo” está especificada a propriedade “Nome do diagrama” (nome do arquivo do diagrama onde a execução do cenário continuará).

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

13. **Bloco “Atribuir valor à variável”** estabelece novos valores para uma ou mais variáveis. Neste caso, nas propriedades está especificado um valor que deve ser atribuído a uma variável, respectivamente.

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

14. – 15. **Blocos “Fim”** (esses blocos encerram a execução do cenário ou retornam o diagrama do subprocesso ao processo principal).

**Diagrama “Executar movimento”**

Este diagrama consiste em pares de blocos “Condição” e “Fim”. O diagrama “Executar movimento” realiza cada movimento subsequente e verifica a conformidade da condição.

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

**Diagrama “Movimento do jogador”**

<figure><img src="https://1245874961-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fti2Raw08aYi0Vr2rkcD9%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. **Bloco “Início”** (a partir deste bloco começa qualquer diagrama).
2. **Bloco “Mostrar janela”** permite criar suas próprias janelas (formulários) e exibi-las em modo modal e não modal, inclusive de forma assíncrona em relação ao movimento do cenário. Se um seletor for especificado, as coordenadas da janela criada serão vinculadas ao controle em outro aplicativo. Para este bloco estão especificadas as seguintes propriedades:

* Configuração (string de configuração);
* Objeto da janela (variável com o objeto da janela);
* ID do processo (variável que armazena o identificador do processo).

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

Para criar e editar a janela, utiliza-se o botão “Editar…”, que se encontra no bloco. Ao clicar neste botão, o “Editor de janelas” é aberto.

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

3. **Bloco “Condição”** verifica a condição especificada quanto à veracidade, após o que a execução do cenário continua na saída “Sim” (se a condição for atendida) ou na saída “Não” (se a condição não for atendida).

A condição é escrita no formato: “variável” igual (==)/ maior (>)/ menor (<) “valor”.

Por exemplo: $a == “Olá”, ou seja, se o valor da variável $a for igual a “Olá”, então a saída é “Sim”, caso contrário – a saída é “Não”.

$Result > 5, ou seja, se o valor da variável $Result for menor que 5, então a saída é “Sim”, caso contrário – a saída é “Não”. Neste caso, a condição estabelecida é: $ControlEvent -ne "linkStop.LinkClicked". Ou seja, está sendo verificado se o link “Encerrar jogo” não foi clicado.

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

4. **Bloco “Processo”** permite criar cenários compostos por vários diagramas. A execução do cenário continuará a partir do bloco “Início” do diagrama do projeto especificado. A execução do cenário retornará ao bloco atual e continuará no diagrama atual assim que o bloco “Fim” no diagrama externo for alcançado. Para este bloco estão especificadas as seguintes propriedades:

* Nome do diagrama (nome do arquivo do diagrama onde a execução do cenário continuará);
* Variável 1 (nome da primeira variável à qual um novo valor deve ser atribuído);
* Valor 1 (novo valor da primeira variável);
* Variável 2 (nome da segunda variável à qual um novo valor deve ser atribuído);
* Valor 2 (novo valor da segunda variável).

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

5. **Bloco “Condição”** verifica a condição especificada quanto à veracidade, após o que a execução do cenário continua na saída “Sim” (se a condição for atendida) ou na saída “Não” (se a condição não for atendida).

A condição é escrita no formato: “variável” igual (==)/ maior (>)/ menor (<) “valor”.

Por exemplo: $a == “Olá”, ou seja, se o valor da variável $a for igual a “Olá”, então a saída é “Sim”, caso contrário – a saída é “Não”.\`\`\`markdown $Result > 5, ou seja, se o valor da variável $Result for menor que 5, a saída será “Sim”, caso contrário – a saída será “Não”. Neste caso, a condição estabelecida é: $IsCorrectMove. Ou seja, verifica-se a correção da jogada do jogador.

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

6. **Bloco “Parar”** interrompe a execução do script ou gera um erro.
7. **Bloco “Fim”** (este bloco encerra a execução do script ou retorna o diagrama do subprocesso ao processo principal).

**Diagrama “Jogada do 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. **Bloco “Início”** (a partir deste bloco começa qualquer diagrama).
2. **Bloco “Número aleatório”** gera números aleatórios com parâmetros definidos. Para este bloco, as seguintes propriedades estão definidas:

* Valor mínimo (o número aleatório não será menor que este valor);
* Valor máximo (o número aleatório não será maior que este valor);
* Passo (passo do número aleatório).

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

3. **Bloco “Atribuir valor à variável”** define novos valores para uma ou mais variáveis. Neste caso, nas propriedades está indicado um valor que deve ser atribuído a uma variável, respectivamente.

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

4. **Bloco “Processo”** permite criar scripts compostos por vários diagramas. A execução do script continuará a partir do bloco “Início” do diagrama do projeto indicado. A execução do script retornará ao bloco atual e continuará no diagrama atual assim que o bloco “Fim” for alcançado no diagrama externo. Para este bloco, as seguintes propriedades estão definidas:

* Nome do diagrama (nome do arquivo do diagrama onde a execução do script continuará);
* Variável 1 (nome da primeira variável à qual um novo valor deve ser atribuído);
* Valor 1 (novo valor da primeira variável);
* Variável 2 (nome da segunda variável à qual um novo valor deve ser atribuído);
* Valor 2 (novo valor da segunda variável).

<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. **Bloco “Condição”** verifica a condição especificada quanto à veracidade, após o que a execução do script continua na direção da saída “Sim” (se a condição for atendida) ou na direção da saída “Não” (se a condição não for atendida).

A condição é registrada no formato: “variável” igual a (==)/ maior que (>)/ menor que (<) “valor”.

Por exemplo: $a == “Olá”, ou seja, se o valor da variável $a for igual a “Olá”, a saída será “Sim”, caso contrário – a saída será “Não”.

$Result > 5, ou seja, se o valor da variável $Result for menor que 5, a saída será “Sim”, caso contrário – a saída será “Não”. Neste caso, a condição estabelecida é: $IsCorrectMove. Ou seja, verifica-se a correção da jogada do jogador.

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

6. **Bloco “Fim”** (este bloco encerra a execução do script ou retorna o diagrama do subprocesso ao processo principal).

**Diagrama “Verificação de fim”**

Este diagrama consiste em pares de blocos “Condição” e “Atribuir valor à variável”. O diagrama “Verificação de fim” realiza a verificação após cada jogada do jogador ou do 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 “Jogo terminado”**

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

1. **Bloco “Início”** (a partir deste bloco começa qualquer diagrama).
2. **Bloco “Mostrar janela”** permite criar suas próprias janelas (formulários) e exibi-las em modo modal e não modal, inclusive de forma assíncrona em relação à execução do script. Se um seletor for definido, as coordenadas da janela criada serão vinculadas a um controle em outro aplicativo. Para este bloco, as seguintes propriedades estão definidas:

* Configuração (string de configuração);
* Objeto da janela (variável com o objeto da janela);
* Modal (com a flag definida, a janela será exibida como modal);
* ID do processo (variável onde o identificador do processo é armazenado).

<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 criar e editar a janela, utiliza-se o botão “Editar…”, que está localizado no bloco. Ao clicar neste botão, o “Editor de janelas” é aberto.

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

3. **Bloco “Condição”** verifica a condição especificada quanto à veracidade, após o que a execução do script continua na direção da saída “Sim” (se a condição for atendida) ou na direção da saída “Não” (se a condição não for atendida).

A condição é registrada no formato: “variável” igual a (==)/ maior que (>)/ menor que (<) “valor”.

Por exemplo: $a == “Olá”, ou seja, se o valor da variável $a for igual a “Olá”, a saída será “Sim”, caso contrário – a saída será “Não”.

$Result > 5, ou seja, se o valor da variável $Result for menor que 5, a saída será “Sim”, caso contrário – a saída será “Não”. Neste caso, a condição estabelecida é: $UserWon. Ou seja, verifica-se se o jogador ganhou.

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

4. **Bloco “Janela de mensagem”** mostra ao usuário uma janela de diálogo modal com um título, texto e um conjunto de botões definidos. Se uma janela com vários botões for utilizada, o bloco permite gravar em uma variável uma constante de texto correspondente ao botão pressionado pelo usuário. Para este bloco, as seguintes propriedades estão definidas:

* Mensagem (texto que será exibido dentro da janela de diálogo);
* Botões (botões que estarão disponíveis para o usuário pressionar).

```<figure><img

5. O bloco “Janela de Mensagem” mostra ao usuário uma caixa de diálogo modal com um título, texto e um conjunto de botões definidos. Se uma janela com vários botões for utilizada, o bloco permite gravar em uma variável uma constante de texto correspondente ao botão pressionado pelo usuário. Para este bloco, as seguintes propriedades são especificadas:

* Mensagem (texto que será exibido dentro da caixa de diálogo);
* Botões (botões que estarão disponíveis para o usuário pressionar).

<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. **Blocos “Fim”** (esses blocos encerram a execução do script ou retornam o diagrama do subprocesso ao processo 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/pt/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.
