Aulas Anteriores
• 1 - Criando a Tela de Título
• 2 - Salvar, Carregar, Iniciar e Sair
• 3 - Diferentes técnicas com as teclas.
Introdução
Fala, rapaziada! Hoje eu vou ensinar um comando que eu aprendi há pouco tempo e que já o utilizei no meu jogo. Se vocês abrirem-no pelo editor vão reparar que eu substituí as condições possíveis e compatíveis com esse comando ao máximo no intuito de otimizar o código e reduzir o lag do jogo.
O tal comando é o Case, útil para criar inúmeras condições com diferentes valores exatos de variáveis. Usando o case o seu código ficará mais limpo e curto.
No projeto que eu terminei há poucos dias eu usei o código “Case” em inúmeros casos mas, praticamente, com o mesmo objetivo. Duas situações importantes que você poderá utilizá-lo: Title e Timer.
Daqui a pouco vocês vão falar que eu só sei explicar title. kkk’ Tira a mão de mim, deixa eu vacilar. Mas isso não é verdade, eu acho. haha’
Bem, nenhum novato no 2k começa aprendendo destiny script e depois parte para eventos. Ninguém faz isso. Então se você está aqui é porque já tem uma base sobre o que são switches, variáveis, condições e como aplicá-las.
Eu vou falar hoje sobre as condições. Irei me restringir às condições If e Case porque são as que eu sei um pouco para explicar. Conforme eu for aprendendo irei atualizá-los do meu conhecimento.
[center][center]Condições
• Condições IF (Se)
Esse tipo de condição é bem amplo. Com ele você pode verificar diversas coisas que não são possíveis por eventos. E existem dois tipos de condições If, as simples e compostas.
- Simples
São aquelas condições diretas. Você verifica algo e pronto. Por exemplo: “SE hoje fizer calor vou para a praia.” Há uma questão sem nenhum argumento caso haja uma exceção. É prático.
Exemplo no destiny: Verificar se uma switch está ligada. Se sim, mudar o valor de uma variável.
$
if (s[1] == true)
v[1] = 7;
endif;
Diretas porque caso a switch tal não esteja ligada nada acontecerá e o programa passará para o código seguinte.
- Composta
São as indiretas. Você verifica se algo acontece e se não acontecer realiza-se um comando. Não há como pulá-la. O código presente na condição será lido de qualquer maneira. Exemplo na vida: Se o Sol aparecer eu vou à praia, SE NÃO ficarei dormindo.
Exemplo no destiny: Se uma imagem tem a metade do seu tamanho original então ative uma switch.
$
if (Picture[1].Magnification == 50)
s[1] = true;
endif;
• Case
Ao contrário das condições If, a estrutura Case é um pouco mais limitada. Eu ainda não testei se ela permite com que eu crie diversas condições como tamanho de uma imagem, etc. Só testei com valores de variáveis.
- Criando um Timer de 7 segundos. ( por imagens )
Crie um outro evento ( processo paralelo ) que a cada segundo diminua uma unidade da variável utilizada.
[spoiler=Case/Timer]
$ switch(v[1]) case7:Command.ShowPicture(ID,”Nome da Imagem”,X,Y);break; case6:Command.ShowPicture(ID,”Nome da Imagem”,X,Y);break; case5:Command.ShowPicture(ID,”Nome da Imagem”,X,Y);break; case4:Command.ShowPicture(ID,”Nome da Imagem”,X,Y);break; case3:Command.ShowPicture(ID,”Nome da Imagem”,X,Y);break; case2:Command.ShowPicture(ID,”Nome da Imagem”,X,Y);break; case1:Command.ShowPicture(ID,”Nome da Imagem”,X,Y);break; case0:Command.ShowPicture(ID,”Nome da Imagem”,X,Y);break; endswitch;
[/spoiler]
- Otimizando a title
Se você não lembra dos códigos da title clique aqui para se lembrar.
( supondo que a title tenha 3 opções na vertical e que cada imagem seja uma opção )
[spoiler=Title/CIMA]
$ // CIMAif(Keyboard.GetKeyState(VK_UP))switch(v[1]) case1:Command.ShowPicture(ID,”Nome da Imagem”,X,Y);Command.Wait(1); v[1]=2;break; case2:Command.ShowPicture(ID,”Nome da Imagem”,X,Y);Command.Wait(1); v[1]=3;break; case3:Command.ShowPicture(ID,”Nome da Imagem”,X,Y);Command.Wait(1); v[1]=1;break; endswitch;
[/spoiler]
[spoiler=Title/BAIXO]
$ // BAIXOif(Keyboard.GetKeyState(VK_DOWN))switch(v[1]) case1:Command.ShowPicture(ID,”Nome da Imagem”,X,Y);Command.Wait(1); v[1]=3;break; case2:Command.ShowPicture(ID,”Nome da Imagem”,X,Y);Command.Wait(1); v[1]=1;break; case3:Command.ShowPicture(ID,”Nome da Imagem”,X,Y);Command.Wait(1); v[1]=2;break; endswitch;
[/spoiler]
[spoiler=Title/ENTER]
$ // Escolher apertando enterif(Keyboard.GetKeyState(VK_RETURN))switch(v[1]) case1:Command.Wait(1); v[1]=4;break; case2:Command.Wait(1); v[1]=5;break; case3:Command.Wait(1); v[1]=6;break; endswitch;
[/spoiler]
Lembrando que você deve criar Fork’s logo abaixo desse comando caso queira resultados mais dinâmicos, como por exemplo informar alguma mensagem.
[center][center]Partiu
Isso é tudo, pessoal! Até a próxima. (: