27 de agosto de 2014

Variáveis

As variáveis podem ser entendidas como sendo armazenadores. Podemos armazenar nelas qualquer tipo de informação que iremos usar futuramente, uma coordenada, o resultado de uma equação, a própria equação, entre muitas outras coisas. Tudo vai depender da sua capacidade de programar e fazer uso dessas informações. No Game Maker existem três tipos distintos de variáveis: Locais, Instânciais e Globais.

É possível manipular variáveis à partir de outros objetos (com exceção das variáveis locais), para isso basta utilizar a função with ou usar a estrutura "objeto.variável", por exemplo:

Usando with:

with(obj_jogador)
{
   x = 10
   y10
   vida = 100
}

Usando "objeto.variável":

obj_jogador.x10
obj_jogador.y = 10
obj_jogador.vida = 100

Ambos códigos modificam a posição do jogador para x = 10 e y = 10 e a vida para 100, decida qual usar de acordo com sua necessidade e preferência.

Dica: Nunca dê o mesmo nome para variáveis, a menos que saiba exatamente o que está fazendo, mesmo que sejam de diferentes tipos. Para evitar usar o mesmo nome uma boa dica é usar prefixos ou sufixos, como sugeri no Tutorial sobre Sprites, por exemplo: lcomida para local e gcomida para global.

Locais

São variáveis que são usadas durante a execução do script e são descartas no final. Só podem ser utilizadas dentro de um mesmo evento, portanto, se a variável local "vida" for declarada em Step Event outros scripts dentro do mesmo evento  a reconhecerão, porém um script usado no Collision Event não, pois ela já terá sido deletada ao fim da execução do Step Event. Para usar variáveis como sendo locais é necessário declará-las utilizando a função var.

Exemplo:

var xx = 10, yy;

yy = irandom(5)

instance_create(xx, yy, obj_projetil)

Neste exemplo o Projétil será criado na posição x = 10 e y = um número de 0 a 5. Como não precisaremos dessas variáveis futuramente podemos descartá-las a fim do código.

Notas:

-Essas variáveis são feitas para serem utilizadas somente uma vez, portanto, são apagadas da memória após seu uso.

-Assim como no exemplo acima, o Game Maker: Studio possibilita que a variável local seja declarada e receba um valor ao mesmo tempo ou que receba um valor depois de ser declarada, só depende da sua preferência.

-Não use esta variável caso precise manipulá-la à partir de outro objeto.

-Quando usadas da maneira correta são uma ótima ferramente para economizar memória e otimizar o jogo.

Instânciais

São variáveis que podem ser utilizadas por quaisquer eventos dentro de uma mesma instância. Para declará-las basta dar um valor para ela, o que chamamos de "inicializar uma variável". Caso tente usar uma variável que não foi inicializada ocorrerá erro de execução do código. Diferente das variáveis locais, podemos utilizá-las em eventos posteriores ao que ela foi declarada/inicializada. Essas variáveis são destruídas juntamente com a instância.

Exemplo:

Step Event:

if  vida <= 0
{
   morte = true
}

Neste caso teríamos uma mensagem de erro dizendo que a variável não foi declarada, portanto, ela não existe para o Game Maker.

A maneira correta seria:

Create Event:

vida = 100

Step Event:

if  vida <= 0
{
   morte = true
}

Nota: Cuidado para não declarar a variável no lugar errado, por exemplo, se declarássemos vida = 100 no Step Event, a cada step a vida do personagem seria igualada a 100, o que provavelmente não é o resultado esperado. Outro exemplo seria usar o código if morte = true {instance_destroy()} no Create Event, pois quando o objeto foi criado morte era igual a false e esse valor nunca mudará pois o Create Event só é executado uma única vez, que é na criação da instância.

Para mais informações leia: Tutorial sobre Eventos

Globais

Estas variáveis ficam guardadas na memória do jogo, portanto, independentemente que o objeto seja destruído ou desativado, esta variável permanecerá no jogo. Podem ser acessadas por qualquer instância através de duas maneiras, que dependem como a variável foi primeiramente declarada.

Método 1 - Declarar uma única vez.

Create Event:

globalvar vida;

Step Event:

if  vida <= 0
{
   morte = true
}

Método 2 - Declarar todas vezes que usar a variável.

Step Event:

if global.vida <= 0
{
   morte = true
}

Utilizando o primeiro método temos a vantagem de não precisar escrever global toda vez que for fazer uso da variável, já com o segundo não acontecerá de você esquecer que está usando uma variável global e também poderá usar o mesmo nome para uma variável local ou uma instâncial, mas sugiro que não faça.

4 comentários :

  1. Olá gostaria de formar uma parceira contigo, faço videos de game maker e gostaria de posta-los juntos aos seus textos, aumentando a minha visibilidade quanto a sua :)

    ResponderExcluir
    Respostas
    1. Oi Fábio, tudo bem? Pode me mandar um link do seu canal e um email para contato?

      Excluir
  2. olá, gostaria de saber o canal!
    obrigado

    ResponderExcluir
  3. adorei esse canal , nao sei nada de programaçao mas adoro game , sou design grafico, e gostaria muito de aprender tota ajuda é muito bom grato galera

    ResponderExcluir