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}")
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.