GMBR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Entrar

Esqueci-me da senha

Últimos assuntos
» player não consegue andar
por 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


Caixas de diálogo em GML Parte 1

+3
victor_aco
GuiEdu
fonetico
7 participantes

Ir para baixo

Caixas de diálogo em GML Parte 1 Empty Caixas de diálogo em GML Parte 1

Mensagem por fonetico 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:
Caixas de diálogo em GML Parte 1 Imagemhsf

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
fonetico

Data de inscrição : 05/10/2009
Reputação : 7
Número de Mensagens : 1830
Prêmios : Caixas de diálogo em GML Parte 1 Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

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

Mensagem por GuiEdu 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
GuiEdu

Data de inscrição : 04/06/2010
Reputação : 0
Número de Mensagens : 505
Prêmios : Caixas de diálogo em GML Parte 1 Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

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

Mensagem por victor_aco 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
victor_aco

Data de inscrição : 25/03/2010
Reputação : 2
Número de Mensagens : 666
Prêmios : Caixas de diálogo em GML Parte 1 Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

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

Mensagem por freysun 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
freysun

Data de inscrição : 23/06/2010
Reputação : 6
Número de Mensagens : 344
Prêmios : Caixas de diálogo em GML Parte 1 Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

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

Mensagem por victor_aco 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
victor_aco

Data de inscrição : 25/03/2010
Reputação : 2
Número de Mensagens : 666
Prêmios : Caixas de diálogo em GML Parte 1 Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

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

Mensagem por freysun Dom 03 Out 2010, 16:19

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

Data de inscrição : 23/06/2010
Reputação : 6
Número de Mensagens : 344
Prêmios : Caixas de diálogo em GML Parte 1 Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

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

Mensagem por fonetico 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
fonetico

Data de inscrição : 05/10/2009
Reputação : 7
Número de Mensagens : 1830
Prêmios : Caixas de diálogo em GML Parte 1 Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

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

Mensagem por lcj 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
avatar
lcj

Data de inscrição : 18/01/2010
Reputação : 0
Número de Mensagens : 41
Prêmios : Caixas de diálogo em GML Parte 1 Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

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

Mensagem por fonetico 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
fonetico

Data de inscrição : 05/10/2009
Reputação : 7
Número de Mensagens : 1830
Prêmios : Caixas de diálogo em GML Parte 1 Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

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

Mensagem por Vikintor 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
Vikintor

Games Ranking : Nota B

Notas recebidas : B
Data de inscrição : 28/03/2010
Reputação : 17
Número de Mensagens : 901
Prêmios : Caixas de diálogo em GML Parte 1 Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

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

Mensagem por vitor_liminha123 Sáb 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
vitor_liminha123

Data de inscrição : 16/08/2010
Reputação : 12
Número de Mensagens : 510
Prêmios : Caixas de diálogo em GML Parte 1 Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://www.newgrounds.com/tanber

Ir para o topo Ir para baixo

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

Mensagem por fonetico Sáb 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
fonetico

Data de inscrição : 05/10/2009
Reputação : 7
Número de Mensagens : 1830
Prêmios : Caixas de diálogo em GML Parte 1 Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

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

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos