INTRODUÇÃO EM GML
Aula 02 - Variáveis e Constantes
(Atualizado 08/02/2015)
Variáveis são utilizadas para armazenar vários tipos de valores, como números, textos e frases. Elas também são chamadas de identificadores, pois apontam um valor.
Um nome de variável pode conter letras (sem acentos gráficos e o Ç), números (Desde que não comece com um ex: 8_tiro) e alguns símbolos como o underline (_). As que armazenam números são chamadas de variáveis de valor Real e as que armazenam textos são chamadas de Strings.
Veja alguns exemplos:
- Atribui o valor 100 à variável balas:
Código: Selecionar todos
balas = 100
Código: Selecionar todos
BALAS = 55
Código: Selecionar todos
forca = 7.5
Código: Selecionar todos
_vida_ = 3
Código: Selecionar todos
Nome3 = "João Pedro José"
Código: Selecionar todos
pode_atirar = false
- As quatro primeiras variáveis são de valor Real.
- A variável forca é de valor Real fracionado. Aqui usamos pontos (.) e não virgulas (,).
- As variáveis balas e BALAS são duas variáveis diferentes. Isso por causa do case-sensitive, ou seja mesmo que só uma das letras seja maiúscula já é uma nova variável.
- A penúltima variável é uma String.
- A última variável é de valor booleano.
String: Textos, palavras e letras que devem vir entre apóstrofos, como "Eu venci! Então eu sou o ganhador".
Real inteiro: Números inteiros como 5, 670, 100000, e 31.
Real fracionado: Números fracionados 5.67, 100.55, e 0.5.
Booleano: true que é a mesma coisa que 1 e false que é o mesmo que 0. Tanto faz você usar 1 como usar true, ambos tem o mesmo valor.
Existem três contextos para variáveis: global, local de instância e local de evento que definem como e de onde as variáveis podem ser acessadas.
Variável local de instância:
O Game Maker usa objetos para criar a aplicação. E cada objeto tem suas atribuições padrão, como a posição na room (Cenário). Cada objeto e suas réplicas (instâncias) têm uma posição, ou seja as variáveis x e y. Vamos criar um exemplo:
- Crie um objeto e uma room.
- Adicione o evento Create (evento que acontece 1 vez, quando o objeto é criado) ao objeto.
- Neste evento insira o código:
Código: Selecionar todos
saude = irandom(100)
PS: a função irandom(X) nos devolve um número inteiro de 0 a X, no caso 100. Aprenderemos mais sobre funções mais a frente, não se preocupe em entender isso agora.
- Adicione o evento Draw (Evento de desenho, ocorre o tempo todo) ao objeto. Neste evento insira o código:
Código: Selecionar todos
draw_text(x, y, saude)
- Adicione vários deste objeto na room. Depois execute (F5).
O resultado é:
Veja que cada instância do objeto tem uma saude diferente. É dessa maneira que funciona uma variável local de instância. Para ver todas as variáveis de instância padrão/nativa para os objetos, vá na barra de menu clique em Scripts depois selecione a opção Show Built-in Variables. Elas estão no fim da lista em azul com o inicio "local:".
Acesso à uma variável local a partir de outro objeto: Deixarei em um spoiler, pois pode ser que seja um pouco complexo aprender essa parte. Se quiser pular ela não há problema, depois volte pra dar uma olhada.
Variável global:
Esse é o tipo de variável que pode ser utilizada por todos os objetos e em qualquer momento durante a execução da aplicação (desde que seja criada antes de modificada ou acessada).
Código: Selecionar todos
global.saude = 100
Faça o mesmo procedimento que fizemos com a variável local de instância trocando saude por global.saude (Nos dois códigos). Os resultados de todas as instancias serão os mesmos, pois estamos falando de uma mesma variável.
Resultado:
Se você criou 6 instâncias, a variável vai ser modificada 6 vezes, sendo que o valor que vai aparecer será o do último objeto adicionado a room.
Lista de algumas variáveis globais embutidas no Game Maker:
health: variável para representar a saúde do player
lives: variável para representar a quantidade de vidas
room: variável que define/representa a room atual
score: variável que representa a pontuação
mouse_x: variavel que representa a posição x do mouse
mouse_y: variavel que representa a posição y do mouse
Para ver todas as variáveis globais, vá na barra de menu e clique em Scripts depois selecione a opção Show Built-in Variables.
Repare que estas não possuem global.. Isso porque são do próprio game maker.
Variável local de evento:
Essa variável é comumente chamada de "variável temporária". Isso porque ela é declarada em um evento e descartada nesse mesmo evento. Vamos fazer um exemplo simples, mas antes vamos aprender a declarar essa variável temporária:
[var][nome da variável][;]
Código: Selecionar todos
var meu_x;
Código: Selecionar todos
var meu_x, meu_y, meu_cachorro, meu_papagaio;
Após declarar a variável temporária você pode dar um valor à ela. É a mesma forma de uma variável comum:
Código: Selecionar todos
//Declaro a variável meu_x
var meu_x;
//Coloco o valor 320 na variável meu_x
meu_x = 320
Código: Selecionar todos
//Muda a posição x do objeto para a posição da variável meu_x
x = meu_x
Para ter uma ideia mais clara, transfira o código para o evento Create, onde ela foi declarada. Veja que funciona perfeitamente.
Resumindo, a variável local de evento é usada para reduzir o consumo de memória da aplicação. Ou seja, ele não deixa a informação parada na memória sem uso. Ela mantém seu valor por apenas 1 step (frame), depois ela é deletada. Tanto que se a usássemos no evento Step, teríamos que declará-la sempre antes de a usar:
Código: Selecionar todos
//Declara variável temporária
var meu_numero;
//Guarda o valor 5 na variável
meu_numero = 5
//Move o objeto adicionando 5 a Step ao x
x += meu_numero
Constantes:
Uma constante é um identificador que não pode ter o valor modificado, por isso o nome de constante, valor constante, ou seja que não muda (Ao contrário das variáveis).
Para ver todas as constantes, vá na barra de menu e clique em Scripts depois selecione a opção Show Constants.
E para adicionar suas próprias constantes vá na arvore de recursos e clique em Macros e depois selecione a opção All Configurations. Sempre que quiser adicionar uma nova clique em insert e defina o nome e o valor:
Resumindo:
Variável local de instância *só pode ser modificada pelo objeto em que foi criada (*Ou de outro objeto chamando este quando ele ainda existe).
Variável local de evento só pode ser modificada no evento em que foi criada.
Variável global pode ser modificada por qualquer objeto e evento.
E as Constantes não podem ter seu valor modificado
MUITO IMPORTANTE:
Não dê os mesmos nomes para variáveis globais, de instância e de evento. Ex:
Código: Selecionar todos
carro = 5
var carro;
carro = 5
global.carro = 5
Para ter uma noção mais avançada sobre variáveis, acesse o tutorial do saim abaixo:
[PROG] [Tutorial] Variáveis
Aula Anterior: #IEM Aula 01 - Editor de Script GMS
Próxima aula: #IEM Aula 03 - Operações matemáticas
FLWS!