#IEM Aula 02 - Variáveis/Constantes

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

#IEM Aula 02 - Variáveis/Constantes

Mensagem por Alex FC em Qui 31 Dez 2009, 19:33

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:
balas = 100

- Atribui o valor 55 à variável BALAS:

Código:
BALAS = 55

- Atribui o valor 7.5 à variável forca:

Código:
forca = 7.5

- Atribui o valor 3 à variável _vidas_:

Código:
_vida_ = 3

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

Código:
Nome3 = "João Pedro José"

- Atribui o valor false à variável pode_atirar:

Código:
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:
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:
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 é:



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:
Apesar da variável local ser de uso restrito à instância em que foi criada, você pode modificá-la através de outro chamando por:

nome_do_objeto.nome_da_variavel

Ou seja, eu sou o player e quero q um botão que eu pressione tire -10 de saude do Boss. Eu usaria:

Código:
boss.saude -= 10

Mas atenção isso vale apenas se o objeto em questão existir, caso contrário será exibido um erro. Então o código correto seria:

Código:
if instance_exists(boss)
{
boss.saude -= 10
}

Ou seja, verificamos sua existência antes de tentar acessar sua variável.

Outra coisa interessante a se ater é quando o objeto em questão tem várias instancias. No caso o valor pego será da instancia mais velha, aquela que foi criada primeiro que as demais.

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:
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:



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


NOME
VALOR
True1
False0
pi3.1415
c_red255
vk_enter
13
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:
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:

http://gmbr.forumeiros.com/t15113-tutorial-variaveis

Próxima aula: Operações matemáticas



FLWS!


Última edição por Alex FC em Seg 09 Fev 2015, 19:22, editado 19 vez(es) (Razão : Atualização)

Alex FC

Ranking : Nota A
Número de Mensagens : 2503
Idade : 23
Data de inscrição : 20/12/2008
Notas recebidas : B A
Reputação : 174
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 1
   : 1

http://redscreensoft.blogspot.com

Voltar ao Topo Ir em baixo

Re: #IEM Aula 02 - Variáveis/Constantes

Mensagem por Henrique_GJ em Seg 04 Jan 2010, 16:07

bom, fiquei meio confuso... mas deu pra entender... variável é... é... tipo como se eu colocasse uma informação lá para poder utilizar em outros eventos... certo???

tipo... se eu criar uma variável vidas=5

então por exemplo... se eu colocar em uma colisão com um objeto vidas-=1, então ao colidir com o objeto a variável vida vai de 5 pra 4....

se for assim mesmo, só terá uma coisa que não entendi...

como, por exemplo, ao criar uma variável vida, mostrar ela na tela.... tipo, quantas vidas o jogador possui??? :|



... vlw pelos tutos!!!!

Henrique_GJ

Número de Mensagens : 1344
Idade : 19
Data de inscrição : 30/12/2009
Reputação : 4
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

http://sitedosjogos.forumeiros.com

Voltar ao Topo Ir em baixo

Re: #IEM Aula 02 - Variáveis/Constantes

Mensagem por Denis Lemos em Seg 04 Jan 2010, 16:20

É isso mesmo !!!

Agora para desenhar a variável na tela, você terá que primeiro transformá-la em global, coloque assim no create do objeto que você usa para controlar o jogo:
Código:
globalvar vidas;
E no draw desse mesmo objeto:
Código:
draw_text(view_xview+10,view_yview+25,vidas)

Denis Lemos

Número de Mensagens : 938
Idade : 28
Data de inscrição : 17/05/2009
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: #IEM Aula 02 - Variáveis/Constantes

Mensagem por Henrique_GJ em Seg 04 Jan 2010, 16:35

denis L. escreveu:É isso mesmo !!!

Agora para desenhar a variável na tela, você terá que primeiro transformá-la em global, coloque assim no create do objeto que você usa para controlar o jogo:
Código:
globalvar vidas;
E no draw desse mesmo objeto:
Código:
draw_text(view_xview+10,view_yview+25,vidas)

vou tentar... o q isso significa????? "draw_text(view_xview+10,view_yview+25,vidas)"

Henrique_GJ

Número de Mensagens : 1344
Idade : 19
Data de inscrição : 30/12/2009
Reputação : 4
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

http://sitedosjogos.forumeiros.com

Voltar ao Topo Ir em baixo

Re: #IEM Aula 02 - Variáveis/Constantes

Mensagem por Denis Lemos em Seg 04 Jan 2010, 19:17

vou tentar... o q isso significa????? "draw_text(view_xview+10,view_yview+25,vidas)"

Essa função serve para você escrever um texto ou um valor de uma variável na tela !
Ela possui três argumentos (x,y,string)

No primeiro "(X)" eu coloquei "view_xview+10" para pintar na posição x+10 da tela, e quando a tela se mover, a variável desenhada à acompanhará !

No segundo "(Y)"eu coloquei "view_yview+25" para pintar na posição y+25 da tela ''(ou seja 25 pixeis para baixo)'' !

E no terceiro "(string)" é o nome da variével que será desenhada na tela !

Agora para escrever um texto se faz assim:
Código:
draw_text(view_xview+10,view_yview+25,"vidas")
Agora ao invez de mostrar o valor da variável, irá apenas escrever a palavra vidas na tela !

A única diferença é que, tem que colocar o texto entre ifens "(ou aspas)" sei lá como que é o nome da queles dois risquinhos !

Follows Exclamation

Denis Lemos

Número de Mensagens : 938
Idade : 28
Data de inscrição : 17/05/2009
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: #IEM Aula 02 - Variáveis/Constantes

Mensagem por Alex FC em Ter 22 Nov 2011, 12:20

Aula atualizada (22/11/11):

Refiz toda essa aula adicionando exemplos mais objetivos para facilitar o aprendizado.

Pretendo fazer isso com todas as aulas, até porque o Game Maker mudou bastante não é?

FLWS!

Alex FC

Ranking : Nota A
Número de Mensagens : 2503
Idade : 23
Data de inscrição : 20/12/2008
Notas recebidas : B A
Reputação : 174
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 1
   : 1

http://redscreensoft.blogspot.com

Voltar ao Topo Ir em baixo

Re: #IEM Aula 02 - Variáveis/Constantes

Mensagem por Konnor em Seg 22 Out 2012, 20:48

Não sei por qual motivo ou circunstancia eu faço o que tu pedes, escrevo no Create este código mas ele não funciona, não aparece nada na room, apenas quando eu troco para evento Change, mas neste caso o resultado fica trocando constantemente.

Konnor

Número de Mensagens : 153
Idade : 19
Data de inscrição : 07/11/2010
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://socialbook.grouply.com/

Voltar ao Topo Ir em baixo

Re: #IEM Aula 02 - Variáveis/Constantes

Mensagem por Alex FC em Seg 22 Out 2012, 21:51

Konnor escreveu:Não sei por qual motivo ou circunstancia eu faço o que tu pedes, escrevo no Create este código mas ele não funciona, não aparece nada na room, apenas quando eu troco para evento Change, mas neste caso o resultado fica trocando constantemente.

Lembre-se que tu deve criar um objeto, adicionar o código no Create e para ver o valor adicione o código seguinte de desenho no evento Draw.

Leia desde o começo atentamente. Você deve ter pulado alguma etapa ou não ter posto o objeto na room.

Até mais.

FLWS!

Alex FC

Ranking : Nota A
Número de Mensagens : 2503
Idade : 23
Data de inscrição : 20/12/2008
Notas recebidas : B A
Reputação : 174
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 1
   : 1

http://redscreensoft.blogspot.com

Voltar ao Topo Ir em baixo

Re: #IEM Aula 02 - Variáveis/Constantes

Mensagem por Alex FC em Dom 02 Dez 2012, 16:04

Aula atualizada - 02/12/12:

- Melhora na grafia e explicação;
- Adição das variáveis de evento;
- Adição do link do tutorial do saim.

FLWS!

Alex FC

Ranking : Nota A
Número de Mensagens : 2503
Idade : 23
Data de inscrição : 20/12/2008
Notas recebidas : B A
Reputação : 174
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 1
   : 1

http://redscreensoft.blogspot.com

Voltar ao Topo Ir em baixo

Re: #IEM Aula 02 - Variáveis/Constantes

Mensagem por namikazealexandre em Sab 20 Dez 2014, 17:13

Não sei se é problema do fórum mas seus posts estão com a parte direita cortada aqui. Estou usando o firefox.

namikazealexandre

Número de Mensagens : 52
Data de inscrição : 31/05/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: #IEM Aula 02 - Variáveis/Constantes

Mensagem por Alex FC em Sab 20 Dez 2014, 22:40

Bom ter me avisado. Na verdade trata-se de erro na table que fiz pra ficar cheio de "frescuras". Vou aproveitar que amanhã estou a toa e fazer correções nessa e nas demais aulas.

FLWS!

Alex FC

Ranking : Nota A
Número de Mensagens : 2503
Idade : 23
Data de inscrição : 20/12/2008
Notas recebidas : B A
Reputação : 174
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 1
   : 1

http://redscreensoft.blogspot.com

Voltar ao Topo Ir em baixo

Re: #IEM Aula 02 - Variáveis/Constantes

Mensagem por Conteúdo patrocinado Hoje à(s) 04:49


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum