Ativa o menu
Alternar menu de preferências
Alternar menu pessoal
Não autenticado(a)
Your IP address will be publicly visible if you make any edits.

FOR and WHILE loops

De Brdoom wiki
Revisão de 15h14min de 7 de março de 2026 por MegaManx3 (discussão | contribs) (Criou página com ''''Loops''' podem reduzir dramaticamente o tamanho de um script quando uma ação precisa ser executada repetidamente. Neste script há vários setores, aqui de 1 até X. É claro, X deve ser substituído pelo maior número de ID de setor. Cada setor tem o special Floor_Waggle. Isso é fácil de configurar com copiar e colar, mas aí os IDs dos setores precisam ser alterados manualmente. O script poderia ser escrito assim: #include "zcommon.acs" SCRIPT 1 {{SType...')
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)

Loops podem reduzir dramaticamente o tamanho de um script quando uma ação precisa ser executada repetidamente.

Neste script há vários setores, aqui de 1 até X. É claro, X deve ser substituído pelo maior número de ID de setor. Cada setor tem o special Floor_Waggle.

Isso é fácil de configurar com copiar e colar, mas aí os IDs dos setores precisam ser alterados manualmente. O script poderia ser escrito assim:

#include "zcommon.acs"
SCRIPT 1 OPEN
{
     Floor_Waggle (1, 200, 50, 0, 0);
     delay (7);
     Floor_Waggle (2, 200, 50, 0, 0);
     delay (7);
     Floor_Waggle (3, 200, 50, 0, 0);
     delay (7);

                      |
                      |
                      |

    Floor_Waggle (X, 200, 50, 0, 0);
    delay (7);
}

Uma forma mais fácil seria se um script atualizasse os IDs de setor em um loop. Tanto um loop FOR quanto um loop WHILE podem ser usados.

Loop FOR

O loop for pode ser escrito de duas maneiras; a diferença é como a variável é declarada.

#include "zcommon.acs"
SCRIPT 1 OPEN
{
    for ( int sid = 1; sid < X; sid++ )  // sid é o ID do setor
    {
        Floor_Waggle (sid, 200, 50, 0, 0);
        delay (7); 
    }
}

ou assim

#include "zcommon.acs"
script 1 OPEN
{
    int sid = 0;

    for ( sid = 1; sid < X; sid++ )  // sid é o ID do setor
    {
        Floor_Waggle (sid, 100, 20, 0, 0 );
        delay (7);
    }
}

A primeira parte da instrução for (aqui sid = 1) é executada uma vez antes do loop começar a rodar. A terceira parte da instrução for (aqui sid++) é executada a cada iteração do loop, logo antes de ele reiniciar ou terminar. A segunda parte da instrução for (aqui sid < X) é a condição que precisa ser verdadeira para continuar repetindo.

Neste exemplo, o loop for define sid como 1 (sid = 1) antes que qualquer coisa dentro do loop execute. Depois do delay, ele incrementa sid em um (sid++). Enquanto sid for menor que X (sid < X), ele repetirá tudo dentro das chaves.

Loop WHILE

#include "zcommon.acs"
script 1 OPEN
{
    int sid = 1;  // sid é o ID do setor

    while ( sid < X )
    {
        Floor_Waggle (sid, 100, 20, 0, 0);
        delay (7);  
        sid++;
    }
}

Num caso como este, a decisão de usar for ou while depende da preferência do programador, porque no for todas as instruções de controle do loop ficam em um único lugar.

Loop UNTIL

#include "zcommon.acs"
script 1 OPEN
{
    int sid = 1;  // sid é o ID do setor

    until ( sid >= X )
    {
        Floor_Waggle (sid, 100, 20, 0, 0);
        delay (7);  
        sid++;
    }
}

Um loop until é o oposto de um loop while. Um until continuará repetindo até que uma condição se torne verdadeira, enquanto um while continuará repetindo até que uma condição se torne falsa.