26 de agosto de 2014

Funções Executivas

Assim como as Funções Interativas, essa não é uma denominação oficial; vou considerar como funções executivas aquelas que executam outras funções. Este tutorial tem como objetivo explicar e exemplificar o uso das funções executivas do Game Maker.

Condicionais - São funções que exigem que certas condições, definidas pelo usuário, sejam atendidas para que as linhas de código sejam executadas.

IF

Exemplo:

if keyboard_check(vk_space)
{
   vspeed = -1
}
else 
{
   vspeed = 1
}

Este código irá verificar se a tecla de espaço está sendo pressionada e fará com que o objeto voe(vspeed = -1), caso esteja. Caso contrário, o objeto começara a cair(vspeed = 1).

Dicas: É possível fazer que um if dependa de outro if, mas é preferível utilizar o operador && (veja outros operadores no Tutorial sobre Operadores), pois se houver mais que uma condição este operador fará com que as outras condições só sejam verificadas caso suas antecessoras sejam verdadeiras, evitando perda desnecessária de memória. Por exemplo:

Esse código:

if keyboard_check(vk_space) && place_meeting(x, y + 1, obj_parede)
{
  vspeed = -1
}

É melhor que esse:

if keyboard_check(vk_space)
{
   if place_meeting(xy + 1obj_parede)
   {
      vspeed = -1
   }
}

Até mesmo por uma questão de organização.


SWITCH

Exemplo:

switch alavanca
{
   case 1:
   case 4: 
   case 5: porta = true
   break;
   case 2:
   case 3: porta = false
   break;
   default: porta = false
}

Tem praticamente a mesma funcionalidade do if, porém com muito menos liberdade. Nesse exemplo se a porta estará aberta ou fechada depende do valor da variável "alavanca". 1, 4 e 5 abrem a porta, 2 e 3 fecham. Caso "alavanca" não tenha nenhum dos valores de 1 a 5 a porta estará fechada por padrão(default). A função break serve para parar a execução do código, caso contrário as funções dentro das cases seguintes também seriam executadas.

Repetição - Fazem com que um código seja executado até que uma condição, determinada pelo usuário, seja cumprida.

WHILE

Exemplo:

Create Event:

contador = 0

Step Event:

while contador < 10
{
   show_message(contador)
   contador += 1
}

Essa função será executada enquanto(while) o contador for menor que 10 e mostrará uma mensagem com o número da contagem toda vez que for executada e adicionará + 1 ao contador.

Dica: Faça que a própria função while faça com que ela seja finalizada, para garantir que essa função não rode indefinidamente fazendo com que o jogo gaste memória excessiva e acabe travando.

REPEAT

Exemplo:

Create Event:

contador = 0

Step Event:

repeat 10
{
   show_message(contador)
   contador += 1
}

Neste caso os códigos dentro da função repeat serão executados 10 vezes por step e a função nunca deixará de ser executada. Para que ela termine em algum momento basta colocarmos a função repeat dentro de uma "if contador < 10", por exemplo.

DO - UNTIL

Exemplo:

do
{
   show_message(contador)
   contador += 1
}
until contador >= 10

Deveria fazer faz exatamente a mesma coisa que a função while, porém invertendo o modo como é escrito o código. Esta função executa(do) as linhas de código até que(until) uma condição seja atingida.

Nota: Até o momento não consegui fazer valer a pena usar essa função, achei ela bem mais complicada e imprevisível que as funções similares. Mas, vou deixá-la aqui para que vocês saibam da existência dela, apesar de acreditar que nunca farão uso da mesma.

FOR

Exemplo:

for (contador = 0; contador < 10; contador += 1)
{
   show_message(contador)
}

Esta função consiste em 4 etapas. O primeiro código é executado (contador = 0), o segundo código é testado (contador < 10) e, caso  o segundo seja verdadeiro, o terceiro código é executado; depois o código dentro da função, que neste caso é show_message, é executado. O segundo termo será testado e o terceiro executado até que o segundo torne-se falso, ou seja, quando "contador" for maior ou igual a 10.

Esse código funciona da mesma forma que:

if contador < 10
{
   show_message(contador)
   contador += 1
}

A diferença é que usando if a variável precisa/pode ser declarada antes do código, enquanto no for ela é declarada dentro do mesmo e é reiniciada toda vez que a função for executada.

Um comentário :

  1. a função do until pra mim é útil se for preciso inserir dados pelo usuário(jogador), pois a verificação é feita no final :D

    é igual a função do while da linguagem C

    ResponderExcluir