Entrar
Últimos assuntos
» player não consegue andarpor lovn7 Qui 21 Nov 2024, 13:33
» É possível fazer istó no game maker
por William Lima Qui 21 Nov 2024, 10:56
» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por Lua Sáb 16 Nov 2024, 20:22
» (Resolvido) Cenario longo x Texture Pages
por josuedemoraes Sáb 16 Nov 2024, 15:31
» Kids' band
por Adilson Lucindo Santos Sex 15 Nov 2024, 12:23
» (RESOLVIDO) Engasgos-Troca de Sprites/animações
por josuedemoraes Ter 12 Nov 2024, 01:49
» Block Room - DEMO
por Joton Qua 06 Nov 2024, 22:58
» Game Infinito vertical (subindo)
por macmilam Sáb 26 Out 2024, 12:36
» Retorno da GMBR!!!
por Dancity Ter 22 Out 2024, 16:36
» Máquina de estados
por aminaro Qui 10 Out 2024, 13:33
» como faço pra um objeto colidir com o outro e diminuir a vida do player ?
por josuedemoraes Qui 03 Out 2024, 16:51
» RESOLVIDO: Colisão com objetos moveis
por josuedemoraes Qua 02 Out 2024, 20:28
» Crypt of the Blood Moon
por divin sphere Qua 11 Set 2024, 18:18
» como fazer um objeto seguir?
por divin sphere Dom 18 Ago 2024, 18:08
» Procuro de alguém para Modelar/Texturizar/Animar objetos 3D
por un00brn Dom 11 Ago 2024, 11:10
» Destruição de cenário (estilo DD Tank)
por CoronelZeg Sex 09 Ago 2024, 17:16
» RESOLVIDO-Como destruir uma instancia especifica de um objeto
por josuedemoraes Ter 23 Jul 2024, 00:40
» Automatizar a coleta de id
por GabrielXavier Seg 22 Jul 2024, 18:01
» Preciso de ajuda para concluir um pequeno projeto
por lmoura Qui 27 Jun 2024, 15:45
» ANGULO ACOMPANHAR O OBJETO
por Klinton Rodrigues Qui 27 Jun 2024, 08:34
» Musica reinicia quando sala reinicia
por GabrielXavier Ter 18 Jun 2024, 07:28
» como fazer uma copia de gd
por generico_cube Sex 14 Jun 2024, 15:48
» Square Adventure
por guilherme551 Ter 11 Jun 2024, 09:54
» como posso definir limite de uma variavel
por GabrielXavier Sex 07 Jun 2024, 14:14
» [Resolvido] Dúvida, colisão única de objeto
por vdm842 Sex 24 maio 2024, 09:50
#IEM Aula 02 - Variáveis/Constantes
5 participantes
GMBR :: Ensine & Aprenda :: Tutoriais :: Game Maker
Página 1 de 1
#IEM Aula 02 - Variáveis/Constantes
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;
- Código:
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:
//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 |
True | 1 |
False | 0 |
pi | 3.1415 |
c_red | 255 |
vk_enter | 13 |
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:
https://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) (Motivo da edição : Atualização)
Re: #IEM Aula 02 - Variáveis/Constantes
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!!!!
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!!!!
Re: #IEM Aula 02 - Variáveis/Constantes
É 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:
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;
- Código:
draw_text(view_xview+10,view_yview+25,vidas)
Denis Lemos- Data de inscrição : 17/05/2009
Reputação : 1
Número de Mensagens : 938
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Plataformas :- Game Maker 8.0 ou 8.1
- Game Maker Studio 1.4
- Unity
- C#
- Godot
- C ou C++
Re: #IEM Aula 02 - Variáveis/Constantes
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:E no draw desse mesmo objeto:
- Código:
globalvar vidas;
- 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)"
Re: #IEM Aula 02 - Variáveis/Constantes
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")
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
Denis Lemos- Data de inscrição : 17/05/2009
Reputação : 1
Número de Mensagens : 938
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Plataformas :- Game Maker 8.0 ou 8.1
- Game Maker Studio 1.4
- Unity
- C#
- Godot
- C ou C++
Re: #IEM Aula 02 - Variáveis/Constantes
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!
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!
Re: #IEM Aula 02 - Variáveis/Constantes
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.
Re: #IEM Aula 02 - Variáveis/Constantes
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!
Re: #IEM Aula 02 - Variáveis/Constantes
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!
- Melhora na grafia e explicação;
- Adição das variáveis de evento;
- Adição do link do tutorial do saim.
FLWS!
Re: #IEM Aula 02 - Variáveis/Constantes
Não sei se é problema do fórum mas seus posts estão com a parte direita cortada aqui. Estou usando o firefox.
namikazealexandre- Data de inscrição : 31/05/2013
Reputação : 0
Número de Mensagens : 52
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: #IEM Aula 02 - Variáveis/Constantes
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!
FLWS!
Tópicos semelhantes
» [Vídeo-Aula] Aula 4 - Variáveis
» Aula 2 - Variáveis
» [INICIANTES] 1ª Aula - Variáveis
» Game Maker - Aula 4 - Variáveis
» [Vídeo-Aula]Aula 4.1 - Usando funções básicas do draw
» Aula 2 - Variáveis
» [INICIANTES] 1ª Aula - Variáveis
» Game Maker - Aula 4 - Variáveis
» [Vídeo-Aula]Aula 4.1 - Usando funções básicas do draw
GMBR :: Ensine & Aprenda :: Tutoriais :: Game Maker
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos