Operadores são símbolos que representam operações aritméticas, relacionais ou lógicas.
- Operadores Aritméticos
Os operadores aritméticos efetuam operações matemáticas entre dois valores.
Estes são os principais operadores aritméticos:
Operador | Operação |
---|---|
+ | Adição |
- | Subtração |
* | Multiplicação |
/ | Divisão |
A linha abaixo mostra um exemplo de uso de um operador aritmético. Considere que Damage, AttackHit e ShieldLevel são variáveis. O valor de AttackHit é subtraído pelo valor de ShieldLevel. O resultado é armazenado na variável Damage:
set Damage = AttackHit - ShieldLevel
Os operadores aritméticos podem ser combinados com o operador de atribuição para modificar o valor de uma variável.
Por exemplo, na expressão abaixo, estamos somando o valor inicial da variável Damage com o valor da variável DamageAmplifier e armazenando o resultado na variável Damage:
set Damage = Damage + DamageAmplifier
Esta mesma expressão pode ser reescrita usando o operador += desta forma:
set Damage += DamageAmplifier
Nota 1: Na linguagem Verse existem expressões falíveis. Isto significa que a expressão precisa ser executada em um contexto de falha, como a expressão if.
Nota 2: A divisão entre números inteiros é falível. É preciso usar a função Floor() para obter a parte inteira do resultado ou a função Ceil() para arredondar o resultado para cima.
Nota 3: A linguagem Verse não possui o operador % (módulo) usado para obter o resto de uma divisão entre números inteiros. No lugar você pode usar a função Mod[].
- Operadores Relacionais
Os operadores relacionais (ou de comparação) são usados para comparar dois valores. O resultado da comparação será sucesso ou falha.
Observe esta diferença importante da linguagem Verse em relação a outras linguagens que usam valores Booleanos (verdadeiro ou falso) como resultado da comparação. A falha é um elemento da linguagem Verse usada no controle do fluxo do programa.
Operador | Comparação |
---|---|
< | Menor que |
<= | Menor ou igual a |
> | Maior que |
>= | Maior ou igual a |
= | Igual |
< > | Não é igual |
O exemplo abaixo verifica se o valor da variável PlayerHealth é menor ou igual a zero. Se a expressão do if tiver sucesso então a função GameOver() será executada.
if (PlayerHealth <= 0):
GameOver()
- Operadores Lógicos
Os operadores lógicos (ou de decisão) efetuam operações com expressões falíveis (o resultado de cada expressão pode ser sucesso ou falha).
Estes são os operadores lógicos:
Operador | Decisão |
---|---|
or | Sucesso se uma das expressões for sucesso |
and | Sucesso se ambas as expressões forem sucesso |
not | Usa somente uma expressão. O resultado é a situação oposta |
Antes de mostrar um exemplo de operador lógico, vamos conhecer mais um operador da linguagem Verse.
- ? (query)
O operador ? é chamado de query e é usado para verificar se um valor do tipo logic é true resultando em sucesso. A expressão falha se o valor logic for false.
O exemplo abaixo mostra o uso do operador ? e do operador lógico and. A variável HasKey é do tipo logic e a variável EnemyCount é do tipo int. A expressão do if terá sucesso se HasKey tiver o valor true e EnemyCount for igual a zero.
if (HasKey? and EnemyCount = 0):
OpenDoor()
- Precedência dos operadores
Os operadores possuem uma ordem de precedência. Isto significa que os operadores com maior precedência são executados primeiros em uma expressão.
A relação abaixo mostra a precedência dos operadores.
Maior precedência |
---|
? |
not |
* / |
+ - |
= < > < <= > >= |
and |
or |
set = |
Quando dois operadores tem a mesma precedência em uma expressão, o operador que está à esquerda será executado primeiro.
- Agrupamento de expressões
Você pode agrupar expressões usando parênteses ( ) para definir a ordem de execução das expressões. As expressões que estiverem dentro de ( ) tem precedência em relação aos operadores e devem ser executadas antes.
Como exemplo, veja as duas linhas abaixo:
set Result1 = 5 * 2 + 4
set Result2 = 5 * (2 + 4)
Na primeira linha, a variável Result1 receberá o valor de 14. A multiplicação será realizada primeiro porque o operador * tem precedência maior do que o operador +.
Na segunda linha, a variável Result2 receberá o valor de 30. A expressão dentro dos parênteses será executada primeiro. Depois será realizada a multiplicação.
Vamos criar um dispositivo no UEFN para vermos os operadores 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 operator_device e clique no botão Create Empty.
Copie o código Verse abaixo para o dispositivo operator_device:
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
operator_device := class(creative_device):
X : float = 6.0
Y : float = 2.0
LogicTrue : logic = true
LogicFalse : logic = false
OnBegin<override>()<suspends>:void=
Print("X = {X} --- Y = {Y}")
Print("X + Y = {X + Y}")
Print("X - Y = {X - Y}")
Print("X * Y = {X * Y}")
Print("X / Y = {X / Y}")
Print("X > Y --- { if(X > Y) then "Success" else "Failure"} ")
Print("X <= Y --- { if(X <= Y) then "Success" else "Failure"} ")
Print("X = Y --- { if(X = Y) then "Success" else "Failure"} ")
Print("X <> Y --- { if(X <> Y) then "Success" else "Failure"} ")
Print("LogicTrue? or LogicFalse? --- {
if(LogicTrue? or LogicFalse?) then "Success" else "Failure"} ")
Print("LogicTrue? and LogicFalse? --- {
if(LogicTrue? and LogicFalse?) then "Success" else "Failure"} ")
Print("not LogicFalse? --- {
if(not LogicFalse?) then "Success" else "Failure"} ")
A função Print permite a inclusão de uma expressão dentro dos caracteres { }. O resultado da expressão fará parte do texto que será escrito.
Nas funções Print que usam operadores relacionais e lógicos foram usados if para testar o sucesso ou falha da expressão e retornar este resultado como texto.
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 operator_device ao nível.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.