Página 1 de 1

[PROG]#IEM Aula 02 - Variáveis/Constantes

Enviado: Sex Abr 29, 2016 2:47 pm
por All-x

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
- Atribui o valor 55 à variável BALAS:

Código: Selecionar todos

BALAS = 55
- Atribui o valor 7.5 à variável forca:

Código: Selecionar todos

forca = 7.5
- Atribui o valor 3 à variável _vidas_:

Código: Selecionar todos

_vida_ = 3
- Atribui o valor "João Pedro José" à variável Nome3:

Código: Selecionar todos

Nome3 = "João Pedro José"
- Atribui o valor false à variável pode_atirar:

Código: Selecionar todos

pode_atirar = false
Repare que:
  • 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.
Entenda melhor:

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)
- Isso atribui o valor aleatório de 0 a 100 para a variável saude.

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)
- Isso desenha o valor armazenado na variável saude na posição x,y do objeto.

- Adicione vários deste objeto na room. Depois execute (F5).

O resultado é:

Imagem

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.
SPOILER: Clique para ver o conteúdo

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
Diferentemente das variáveis locais de instância, as variáveis globais não são replicadas, elas são únicas. Ou seja é um valor que pode ser alterado por qualquer evento ou objeto, mas é um só. Veja que colocamos global. antes do nome da variável. Isso que a transforma em uma variável global.

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:

Imagem

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;
Dessa maneira você declarou a variável meu_x. Você coloca o construtor var depois coloca o nome da variável e por fim coloca ponto e virgula (;). Para declarar mais de uma variável temporária faça o seguinte:

Código: Selecionar todos

var meu_x, meu_y, meu_cachorro, meu_papagaio;
Você acaba de criar quatro variáveis temporárias. Veja que você só precisou apenas colocar virgulas (,) sem a necessidade de colocar os outros construtores.

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
Faça um teste. Coloque esse código no evento Create de um objeto e coloque o na room. Agora adicione esse código no evento Step:

Código: Selecionar todos

//Muda a posição x do objeto para a posição da variável meu_x
x = meu_x
Execute. Você receberá uma mensagem de erro. Isso porque a variável meu_x já não existe mais. Ela foi deletada ao fim do evento Create (Que ocorre antes do Step). Então, percebeu a relação da variável com o evento?

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).

Imagem

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:

Imagem

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
Isso vai causar uma série de erros. Logo, utilize nomes diferentes para cada uma dos tipos variáveis. O mesmo vale para nomes de constantes, sprites, backgrounds, sons, paths, fonts, scripts, timelines, objetos e rooms. Todos devem ter nomes diferentes.

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!