Caixas de diálogo em GML Parte 1

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

Qualidade Caixas de diálogo em GML Parte 1

Mensagem por fonetico em Dom 03 Out 2010, 15:30

Nome: Caixas de diálogo em GML Parte 1
Descrição: Neste tutorial eu explico os principais códigos para mostrar e customizar caixas de diálogo no Game Maker.
Requerimentos: Qualquer GM superior à versão 6 (LITE E PRO)
Nível: Básico

Nota: Recomendável deixar o HTML ativado no seu perfil para visualizar o tutorial adequadamente.

Caixas de Diálogo em GML


Como todo programador sabe, um script possui várias funções inimagináveis, simples, complicadas e até incontáveis. O GML não é diferente. Ele possui muitíssimas funções e entre elas, há um grupo muito útil para os programadores. As funções de caixas de diálogo. Vale lembrar que uma caixa de diálogo é um elemento que nos dá informação em forma de mensagem, sendo que há vários tipos delas, algumas para clicar em botões, outras para escrever entre muitos outros.

Neste tutorial, eu vou mostrar códigos para fazermos aparecer essas mensagens, manipulá-las e modificá-las, mudando cores e designs. Primeiro, vamos começar pelos tipos de mensagens que há no GML, sua manipulação, e por fim sua customização, nessa ordem.


Tipos de Mensagens


Há um número considerável de mensagens que podemos usar: mensagem simples, mensagem com opções, mensagem de pergunta, mensagem para escrever uma frase e mensagem para escrever números.

Cada um possui uma característica diferente e é usado de formas diferentes.

Mensagens Simples

Essa mensagem é um clássico. Vários de vocês a usam. E como sabem, serve somente para mostrar uma determinada informação e um botão de OK. Sua estrutura é a seguinte:

show_message(str);

Ela é fácil de usar. Porque só é necessário colocar entre aspas no lugar de str a frase que quer aparecer.

Mensagens com Opções


Está já é mais sofisticada. Por sua vez, ela exibe a mensagem em si e mais três botões, ao contrário da mensagem simples, que só mostrava um botão de OK. E o melhor de tudo! Você pode colocar as funções que quiser para cada botão pressionado. Sua estrutura é:

show_message_ext(str,but1,but2,but3);

Em str assim como a mensagem simples, coloca-se a mensagem propriamente dita sempre entre aspas não se esqueça. Em but1 deve-se colocar o texto do primeiro botão da mensagem, também entre aspas. O mesmo vale para os demais itens do código. Lembrando que não é obrigatório ter três botões para apertar, quero dizer, se você quiser, pode deixar somente dois, ou até mesmo um botão. Basta deixar um dos argumentos vazio. Abaixo um exemplo com dois botões: um de sair e outro de continuar.

show_message_ext(“pause”,”continuar”,””,”sair”)


--> Aplicando funções para cada botão: Não é difícil, mas exige atenção, principalmente se você usar o método sem variável.

•--> Com variável: Logicamente precisamos de uma variável que não precisa ser criada antes, porque ela será criada no momento que você usar a mensagem. A função de mensagem com opções, depois de ter um dos seus três botões pressionados, ela retorna um valor, que é o botão pressionado. A variável serve para guardar esse valor. Então primeiro a ligamos com a função:

Nome_da_variavel = show_message_ext(“Está gostando do tutorial?”,”sim”,”não”,”claro!”);

Os valores retornados são: 1 se o primeiro botão foi pressionado, 2 se foi o segundo, e 3 se foi o terceiro. Logo abaixo do código acima, verificaremos o valor que a variável ficou, ou seja, o botão que foi pressionado. Então podemos fazer:

If nome_da_variavel = 1 //se o primeiro botão foi pressionado
{
//função
}
If nome_da_variavel = 2 //se o segundo botão foi pressionado
{
//função
}
If nome_da_variavel = 3 //se o terceiro botão foi pressionado
{
//função
}


•--> Sem variável: Sim isso é possível, mas um pouco mais complicado porque usaremos uma função complexa, switch. Essa função funciona da seguinte forma:

switch(condição)
{
case val:
Função; break;

case val:
Função; break;

case val:
Função; break;
...
}


É um pouco difícil de explicar, mas é assim. Como a maioria do pessoal sabe certas funções retornam valores, como podemos ver na função da mensagem com opções. Então, em condição devemos colocar a função que estamos trabalhando agora, para que o switch teste seus valores. Logo abaixo, colocamos os cases. Eles são como if só que são mais práticos. Nessa hora, colocamos case + o valor que vai ser testado + : + função se for verdadeiro; + break; . O break serve para parar o switch de executar as demais funções, porque senão ele vai direto, mesmo que os outros valores não sejam verdadeiros. E como estamos usando o show_message_ext, precisamos fazer 3 cases, se formos usar três botões, dois cases, se for dois botões e assim sucessivamente. Então voltando ao nosso exemplo, fica assim:

switch(show_message_ext(“Está gostando do tutorial?”,”sim”,”não”,”claro!”))
{
case 1:
show_message(“que bom que está gostando”); break;
case 2:
show_message(“Ah, que pena!”); break;
case 3:
show_message(“Ah, estou tão feliz por ter gostado tanto!”); break;
}


E é dessa forma que podemos usar a função sem variáveis. Qualquer dúvida pode perguntar em baixo do tópico.

Mensagem de Perguntas


Eu considero esse tipo de mensagem inútil. Porque com as mensagens de opções, podemos fazer a mesma coisa que essa caixa faz. Sua função é fazer uma pergunta ao jogador e lhe fornecer dois botões para respondê-la: Yes (sim) e No (não). Se o jogador escolher Yes, o código retornará 1, se for No, retornará 0. Seu código é:

show_question(str);

Em str você deve colocar a pergunta entre aspas.
E para saber se o usuário clicou em Yes ou no, você pode fazer da mesma forma com a mensagem de opções. Com variável:

mensagem = show_question(“Gostou do tutorial?”);
if mensagem = 0
show_message(“Que pena!”);
if mensagem = 1
show_message(“Que bom!”);


Ou com switch:

switch(show_question(“Gostou do tutorial?”))
{
case 0:
show_message(“Que pena!”); break;
case 1:
show_message(“Que bom!”); break;
}


Mensagem para escrever Números


Esse tipo de mensagem é mais interessante. Ele mostra ao jogador uma mensagem, com uma caixa de texto embutida para o usuário escrever algo e um botão de OK. E o melhor de tudo, ela guarda esse valor em uma variável.
É usado com mais freqüência para inserir algum número durante o jogo, que não seja considerado uma string. Para usá-la, usa-se:

get_integer(str,def);

Em str, coloca-se a mensagem que vai aparecer. E em def, deve-se colocar o texto que irá aparecer dentro da caixa para se escrever.

Para usar a função, por exemplo, para identificar um número, você pode usar o mesmo método da mensagem com opções. É só ir testando os valores como, por exemplo:

if mensagem = 16
show_message(“Eu tenho 16 anos oO”);


Mensagem para escrever Frases


Não há muito que falar sobre essa função. Ela funciona igual à mensagem de número, a diferença é que é usada para escrever uma frase, ou seja, uma string. Seu código é:

get_string(str,def)

Sua estrutura é igual à mensagem acima.

E abaixo a diferença visual entre as mensagens:


Adicionando variáveis às mensagens


É possível mostrar valores de variáveis nas mensagens, como por exemplo: "Parabéns! Você fez 150 pontos!". Os 150 seria o valor do score, adicionado à mensagem. É bem simples. Para isso, basta colocar no argumento str, entre aspas, o texto, em string(variavel) a variavel, separando os elementos por um sinal de adição. Para não complicar, vamos usar o exemplo acima.


show_message("Parabéns! Você fez "+string(score)+" pontos.");


Esse é o fim da primeira parte do tutorial. Na segunda parte (e última), vou mostrar a customização dessas mensagens. Até lá! E qualquer coisa, pergunte no tópico.

Próxima aula --->


Última edição por fonetico em Seg 04 Out 2010, 21:57, editado 2 vez(es)

fonetico

Número de Mensagens : 1830
Idade : 21
Data de inscrição : 05/10/2009
Reputação : 7
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Qualidade Re: Caixas de diálogo em GML Parte 1

Mensagem por GuiEdu em Dom 03 Out 2010, 15:52

hehe, parece que foi ontem que sugeriu isso xD
Cara, entendi tudo direitinho, muito bem explicado com exemplos e tal, parabens =)vai demorar mto para postar como customozá-las? vc já tá editando um tuto?
vlw Happy

GuiEdu

Número de Mensagens : 505
Idade : 23
Data de inscrição : 04/06/2010
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

Qualidade Re: Caixas de diálogo em GML Parte 1

Mensagem por victor_aco em Dom 03 Out 2010, 16:01

Muito bom o tuto. Tudo muito bem explicado.
Espero a segunda parte pra ver se vale a pena usar essas funções do GM.

victor_aco

Número de Mensagens : 666
Idade : 21
Data de inscrição : 25/03/2010
Reputação : 2
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Qualidade Re: Caixas de diálogo em GML Parte 1

Mensagem por freysun em Dom 03 Out 2010, 16:10

Fonetico prabens,ótimo tuto,só uma pergunta?
Na de escrever a frase tem como ex
Escreva a senha
Se ele escrever a senha certa ele passa tipo(a senha é to aki)
e ele escreve oi,aparece uma mensagem vc errou.
Mas se ele escrever to aki aparece Vc acertou

freysun

Número de Mensagens : 344
Idade : 21
Data de inscrição : 23/06/2010
Reputação : 6
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Qualidade Re: Caixas de diálogo em GML Parte 1

Mensagem por victor_aco em Dom 03 Out 2010, 16:13

freysun basta voce seguir o raciocínio do exemplo que ele deu na caixa de Mensagem para escrever Números e vai conseguir montar o que você quer.

victor_aco

Número de Mensagens : 666
Idade : 21
Data de inscrição : 25/03/2010
Reputação : 2
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Qualidade Re: Caixas de diálogo em GML Parte 1

Mensagem por freysun em Dom 03 Out 2010, 16:19

Não deu aki ta falando que não existe a variavel mensagem

freysun

Número de Mensagens : 344
Idade : 21
Data de inscrição : 23/06/2010
Reputação : 6
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Qualidade Re: Caixas de diálogo em GML Parte 1

Mensagem por fonetico em Dom 03 Out 2010, 17:00

GuiEdu disse:
hehe, parece que foi ontem que sugeriu isso xD
Cara, entendi tudo direitinho, muito bem explicado com exemplos e tal, parabens =)vai demorar mto para postar como customozá-las? vc já tá editando um tuto?
vlw

Acho que amanhã já posto a segunda parte. Mas antes de escrevê-la, eu estou adicionando mais um ítem à este tutorial que acabei me esquecendo... Segredo xD

Victor_bh disse:

Muito bom o tuto. Tudo muito bem explicado.
Espero a segunda parte pra ver se vale a pena usar essas funções do GM.

Ah obrigado pelo elogio. Espero que você goste das funções, pra mim elas valem mesmo à pena! xD São fáceis e versáteis.

freysun disse:
Fonetico prabens,ótimo tuto,só uma pergunta?
Na de escrever a frase tem como ex
Escreva a senha
Se ele escrever a senha certa ele passa tipo(a senha é to aki)
e ele escreve oi,aparece uma mensagem vc errou.
Mas se ele escrever to aki aparece Vc acertou

Sim tem! Só que depende. Se a senha é números, você usa o get_integer, e se for uma frase, palavra etc. Você usa o get_string. E se o erro da variável aconteceu, deve ser porque você está usando o código de outra forma. Uma forma de resolver seria colocando a variável no create, lembrando que nem sempre é necessário.

Fiz um exemplo usando o que você pediu:

De preferência, coloca no create pra que não apareçam infinitas mensagens:


msg = get_string("Digite a sua senha","Escreva aqui")
if msg = "to aki"
show_message("Você acertou!");
else
show_message("Você errou!");


EDIT

Atualização no tutorial!
Adicionado a forma de como se coloca variáveis nas mensagens

fonetico

Número de Mensagens : 1830
Idade : 21
Data de inscrição : 05/10/2009
Reputação : 7
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Qualidade Re: Caixas de diálogo em GML Parte 1

Mensagem por lcj em Dom 03 Out 2010, 17:58

Parabens! pelo tutorial fonetico. Muito bem explicado e formatado, a unica que eu ainda não conhecia era a get_integer.
Espero pela segunda parte xD

lcj

Número de Mensagens : 41
Idade : 19
Data de inscrição : 18/01/2010
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

Qualidade Re: Caixas de diálogo em GML Parte 1

Mensagem por fonetico em Dom 03 Out 2010, 18:32

lcj escreveu:Parabens! pelo tutorial fonetico. Muito bem explicado e formatado, a unica que eu ainda não conhecia era a get_integer.
Espero pela segunda parte xD

Obrigado! Dessa vez eu escolhi um assunto que acredito chamar a atenção do pessoal. Espero ter acertado! Very Happy

fonetico

Número de Mensagens : 1830
Idade : 21
Data de inscrição : 05/10/2009
Reputação : 7
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Qualidade Re: Caixas de diálogo em GML Parte 1

Mensagem por Vikintor em Dom 03 Out 2010, 18:48

Parabéns pelo tutorial muito bom principalmente para os iniciantes ou para quem desconhece tal funções.
Cool

Vikintor

Ranking : Nota B
Número de Mensagens : 901
Idade : 26
Data de inscrição : 28/03/2010
Notas recebidas : B
Reputação : 17
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://vikintor.tumblr.com/

Voltar ao Topo Ir em baixo

Qualidade Re: Caixas de diálogo em GML Parte 1

Mensagem por vitor_liminha123 em Sab 09 Out 2010, 17:01

Santo God of War!!!
Obrigado pelo tuto, foi uma luz na escuridão *.*
Muito bom e explicado, adorei!

Nota:10

vitor_liminha123

Número de Mensagens : 510
Idade : 18
Data de inscrição : 16/08/2010
Reputação : 12
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://www.newgrounds.com/tanber

Voltar ao Topo Ir em baixo

Qualidade Re: Caixas de diálogo em GML Parte 1

Mensagem por fonetico em Sab 09 Out 2010, 23:00

Mais uma vez obrigado!
E vitor, me deixou até sem jeito xD

Bem, de qualquer forma, mais uma vez obrigado.

fonetico

Número de Mensagens : 1830
Idade : 21
Data de inscrição : 05/10/2009
Reputação : 7
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Qualidade Re: Caixas de diálogo em GML Parte 1

Mensagem por Conteúdo patrocinado Hoje à(s) 00:06


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