segunda-feira, 18 de novembro de 2024

UEFN Verse: if (controle de fluxo)

Um programa consiste de uma série de instruções. Existem tipos de instruções que definem quando algumas instruções devem ser executadas. Isto define o controle de fluxo do programa.

A instrução if é um exemplo muito usado no controle de fluxo. O if testa uma ou mais expressões que devem resultar em sucesso para que o bloco de código associado ao if seja executado.

No exemplo abaixo, GradeNumber e IntegerValue são variáveis. A função Print() só será executada se os valores das variáveis forem diferentes.

if (GradeNumber <> IntegerValue):
    Print("GradeNumber and IntegerValue are different")


O if é uma expressão e pode retornar valor. Ele também é um contexto de falha permitindo a execução de expressões falíveis.

O exemplo abaixo mostra o uso de um formato do comando if de uma única linha. Se a expressão de teste do if resultar em sucesso, o resultado é o valor de then. Se a expressão falhar, o resultado é o valor de else. O valor do resultado é armazenado na variável EvenOrOdd

set EvenOrOdd = if ( Mod[IntegerValue, 2] = 0) then "Even" else "Odd"
Print("IntegerValue is {EvenOrOdd}")

A função Mod[] retorna o resto da divisão entre inteiros. Ela é uma expressão falível. As funções falíveis usam [ ] ao invés de ( ). No exemplo acima, se o resta da divisão de um número inteiro por 2 for zero, então o número é par.

Podemos usar uma expressão if após uma expressão else. Isto permite a verificação de outras expressões até encontrar a expressão com sucesso.

No exemplo abaixo, está sendo usado o if .. else if para definir a escala de uma nota usando o seu valor numérico. Quando uma das expressões do if .. else if tiver sucesso, as demais serão ignoradas. A palavra resultante será armazenada na variável GradeScale.  

set GradeScale = 
    if (GradeNumber >= 9):   
        "Excellent"
    else if (GradeNumber >= 7):
        "Good"
    else if (GradeNumber >= 5):
        "Average"
    else:
        "Insufficient"

Print("GradeScale is {GradeScale}")


A expressão if possui mais um formato de escrita que é útil quando existem várias expressões que precisam ter sucesso para a execução do bloco de código do then. Neste formato, cada expressão do if pode ser escrita em uma linha deixando o código mais legível. O exemplo abaixo mostra este formato.

if: 
    GradeNumber > 0
    IntegerValue > 0
then: 
    Print("GradeNumber and IntegerValue are positive")

Vamos criar um dispositivo no UEFN para vermos as diferentes formas da expressão if em ação.

Em qualquer projeto UEFN, abra o Verse Explorer, clique com o botão-direito no nome do projeto e escolha a opção Add new Verse file to project.

Em Device Name coloque if_device e clique no botão Create Empty.

Copie o código Verse abaixo para o dispositivo if_device:

using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }

if_device := class(creative_device):

    @editable
    GradeNumber : int = 8

    @editable
    IntegerValue : int = 3
    
    var EvenOrOdd : string = ""
    var GradeScale : string = ""

    OnBegin<override>()<suspends>:void=

        if (GradeNumber <> IntegerValue):
            Print("GradeNumber and IntegerValue are different")

        set EvenOrOdd = if ( Mod[IntegerValue, 2] = 0) then "Even" else "Odd"
        Print("IntegerValue is {EvenOrOdd}")
    
        set GradeScale = 
            if (GradeNumber >= 9):   
                "Excellent"
            else if (GradeNumber >= 7):
                "Good"
            else if (GradeNumber >= 5):
                "Average"
            else:
                "Insufficient"

        Print("GradeScale is {GradeScale}")

        if: 
            GradeNumber > 0
            IntegerValue > 0
        then: 
            Print("GradeNumber and IntegerValue are positive")


Salve o arquivo e compile o código Verse usando a opção Verse > Build Verse Code do menu do UEFN. 

Acesse o Content Drawer e adicione o nosso dispositivo Verse if_device ao nível.

Selecione o if_device no nível. Na aba Details você pode modificar os valores das constantes que foram marcadas com @editable.



Clique no botão Launch Session localizado na barra de ferramentas do UEFN para carregar o nível no Fortnite. 

Após iniciar a partida no Fortnite, pressione a tecla Tab e selecione a aba  Registro para visualizar o log com as mensagens escritas pelas funções Print

 

Sumário Verse