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
Help! - Show message
4 participantes
Página 1 de 1
Help! - Show message
Pessoal, estou desenvolvendo um jogo educativo sobre mudanças climáticas (faz parte de um projeto de pesquisa) e em uma determinada parte, o jogador precisa calcular a emissão de CO² da casa dele. Então ele vai em cada comodo da casa, clica em um aparelho eletrônico e responde as perguntas relacionadas. Para fazer as perguntas estou usando show_message e recebendo os valores. Mas são muitas perguntas, que vão aparecendo conforme clicamos em 'ok'. O problema é que quando clicamos em cancelar elas continuam aparecendo (o que faz todo sentido, já que são vários 'show_messages' rs). Existe alguma maneira mais eficiente de fazer essas perguntas? Ou apenas uma maneira de cancelar todas as perguntas e não apenas a que o usuário pedir para cancelar?
Link para o jogo, caso queiram visualizar. (Não reparem nos erros, preciso ajusta-lo!)
Link para o jogo, caso queiram visualizar. (Não reparem nos erros, preciso ajusta-lo!)
tha.sribeiro- Data de inscrição : 30/08/2014
Reputação : 0
Número de Mensagens : 14
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Help! - Show message
O jeito que vejo de resolver isso é condicionar uma pergunta à outra, colocando um contador pra ir avançando de acordo com as perguntas respondidas. Caso ele clique em cancelar, então usa um "break" ou "exit' no código.
Se clicarmos em ok, aumentamos 1 no contador perguntas, se clicarmos em cancelar, o contador é resetado. Depois fazemos algo como:
switch perguntas
{
case 1: show_message("oi")
break;
case 2: show_message("qual sua idade?")
break;
}
Se clicarmos em ok, aumentamos 1 no contador perguntas, se clicarmos em cancelar, o contador é resetado. Depois fazemos algo como:
switch perguntas
{
case 1: show_message("oi")
break;
case 2: show_message("qual sua idade?")
break;
}
Re: Help! - Show message
matheusco escreveu:O jeito que vejo de resolver isso é condicionar uma pergunta à outra, colocando um contador pra ir avançando de acordo com as perguntas respondidas. Caso ele clique em cancelar, então usa um "break" ou "exit' no código.
Se clicarmos em ok, aumentamos 1 no contador perguntas, se clicarmos em cancelar, o contador é resetado. Depois fazemos algo como:
switch perguntas
{
case 1: show_message("oi")
break;
case 2: show_message("qual sua idade?")
break;
}
Como eu passo pra ele que se for 'ok' é uma coisa e se não for é outra?
Por exemplo:
conta = 0;
switch (conta) {
case 0:
//Sobre o numero de moradores
mora = real(get_string("Quantas pessoas moram na sua casa?", ""));
global.cont_moradores = global.cont_moradores + mora;
if (mora == 'O QUE EU COLOCO AQUI??? ' ){
conta = conta + 1;
}
else {
break;
}
case 1:
//Sobre televisores
tv1 = real(get_string("Quantas TVs grandes tem na sua casa?", ""));
global.cont_tv = global.cont_tv + tv1;
conta = conta + 1;
break;
Porque se eu deixo apenas contando, como está no case 1 ele não continua a exibir as perguntas depois que eu clico em ok
(Não tem mais show message porque preciso guardar os valores )
tha.sribeiro- Data de inscrição : 30/08/2014
Reputação : 0
Número de Mensagens : 14
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Help! - Show message
Não precisa colocar o contador dentro do Case, faz um código à parte pra alterar o valor de "conta" e o case você coloca as situações de acordo com essas alterações.
Se clicar em ok e a pergunta for respondida, adiciona 1 à conta, se não, mostra uma mensagem mandando responder. Um bloco de código vai verificar o avanço do jogador e o case vai "guiando" como as perguntas vão ser mostradas.
Talvez tenha um jeito mais fácil de fazer isso, mas no momento não consegui pensar em algum.
Se clicar em ok e a pergunta for respondida, adiciona 1 à conta, se não, mostra uma mensagem mandando responder. Um bloco de código vai verificar o avanço do jogador e o case vai "guiando" como as perguntas vão ser mostradas.
Talvez tenha um jeito mais fácil de fazer isso, mas no momento não consegui pensar em algum.
Re: Help! - Show message
bom, ainda nao intendi oque voce quer, mais voce pode, primeiramente, trocar:
e no final do switch sempre coloque a funç. default... ela evita erros no seu projeto!
- Código:
mora =
real(get_string("Quantas pessoas moram na sua casa?", ""));
- Código:
mora = get_integer("Quantas pessoas moram na sua casa?", 0);
e no final do switch sempre coloque a funç. default... ela evita erros no seu projeto!
Re: Help! - Show message
matheusco escreveu:Não precisa colocar o contador dentro do Case, faz um código à parte pra alterar o valor de "conta" e o case você coloca as situações de acordo com essas alterações.
Se clicar em ok e a pergunta for respondida, adiciona 1 à conta, se não, mostra uma mensagem mandando responder. Um bloco de código vai verificar o avanço do jogador e o case vai "guiando" como as perguntas vão ser mostradas.
Talvez tenha um jeito mais fácil de fazer isso, mas no momento não consegui pensar em algum.
Ok, muito obrigada por responder!
Mas eu não sei como colocar no game maker se a pergunta foi respondida ou não, não sei como indicar o 'ok'... (sim, sou iniciante). Seria algo do tipo
conta = 0
if (mora == ok){
conta = conta+1
}
Como eu escrevo no Game Maker se foi 'ok' ou 'cancelar'?
tha.sribeiro- Data de inscrição : 30/08/2014
Reputação : 0
Número de Mensagens : 14
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Help! - Show message
Isaque Onix escreveu:bom, ainda nao intendi oque voce quer, mais voce pode, primeiramente, trocar:Por
- Código:
mora =
real(get_string("Quantas pessoas moram na sua casa?", ""));
- Código:
mora = get_integer("Quantas pessoas moram na sua casa?", 0);
e no final do switch sempre coloque a funç. default... ela evita erros no seu projeto!
Oii, é que eu estou fazendo essas perguntas em sequencia (são muitas), e elas são independentes pois preciso guardar os valores das respostas. Então, quando alguém clica em cancelar, cancela apenas uma pergunta e as outras continuam aparecendo. Eu preciso fazer isso de uma maneira que cancele todas as perguntas quando o usuário clicar em cancelar. Mas nunca fiz nada no Game Maker e tenho pouca experiencia em programação, então fico perdida hahaha
tha.sribeiro- Data de inscrição : 30/08/2014
Reputação : 0
Número de Mensagens : 14
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Help! - Show message
Bom, ai depende como é seu botão de "ok". Se for uma instância você pode aumentar a conta em cada clique sobre ela. Ou você pode analisar se a pergunta anterior teve uma resposta válida.
Re: Help! - Show message
matheusco escreveu:Bom, ai depende como é seu botão de "ok". Se for uma instância você pode aumentar a conta em cada clique sobre ela. Ou você pode analisar se a pergunta anterior teve uma resposta válida.
É uma janela do windows mesmo, ele cria sozinho. Tipo, eu coloco o real(get.... e ele já cria a pergunta com o campo de resposta e os botões ok e cancelar.
tha.sribeiro- Data de inscrição : 30/08/2014
Reputação : 0
Número de Mensagens : 14
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Help! - Show message
Hm, não sei como o Game Maker verifica se apertou OK ou Cancelar nesse método :/
Re: Help! - Show message
matheusco escreveu:Hm, não sei como o Game Maker verifica se apertou OK ou Cancelar nesse método :/
Vou pensar em outra maneira de fazer isso.
Muito obrigada!!!
tha.sribeiro- Data de inscrição : 30/08/2014
Reputação : 0
Número de Mensagens : 14
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Help! - Show message
Usando get_string, você pode testar se o valor retornado é uma string nula (get_string(...) == "", pelo menos é o que é retornado aqui ao cancelar). Se usar get_integer, como o Isaque Onix sugeriu, o único jeito é testar se o valor retornado é igual ao valor padrão (que teria que ser um valor negativo, como qualquer outro teoricamente é possível).
Se o resultado do teste for verdadeiro (uma string nula ou o valor padrão), exit. Esse comando sai na hora do script/piece of code que está sendo executado. Por exemplo:
O help do GMS diz que get_string e get_integer são apenas para debug (portanto, não indicam se clicou em ok ou cancel), e que no projeto final não devem ser usadas, mas sim get_string_async e get_integer_async em vez delas. Com essas funções, dá para saber se foi apertado ok ou cancel, mas elas são um pouco mais complicadas: elas não travam o resto do jogo e retornam o valor de um jeito diferente, por meio do evento Asynchronous > Dialog.
Se quiser usar, pode ler mais sobre elas no help, mas como você "nunca fiz nada no Game Maker e tenho pouca experiencia em programação", talvez não seja uma boa ideia... Mas não vou dizer que você não vá conseguir.
Até explicaria como usar, mas não tenho tempo... =/
Se o resultado do teste for verdadeiro (uma string nula ou o valor padrão), exit. Esse comando sai na hora do script/piece of code que está sendo executado. Por exemplo:
- Código:
var valor;
valor = get_string("Quantas pessoas moram na sua casa?", "");
if (valor == "")
exit; // Para tudo
mora = real(valor);
... // Usa o valor de "mora"
valor = get_string("Quantas TVs grandes tem na sua casa?", "");
if (valor == "")
exit;
tv1 = real(valor);
... // Usa o valor de "tv1"
- Sobre o 'var valor':
- O "var" em "var valor;" declara a variável como local, ou seja, ela vai existir apenas durante esse script/evento e depois desaparecer. É uma boa prática usar var para variáveis que só são necessárias na hora (como a "valor", que só é usada para o teste).
O help do GMS diz que get_string e get_integer são apenas para debug (portanto, não indicam se clicou em ok ou cancel), e que no projeto final não devem ser usadas, mas sim get_string_async e get_integer_async em vez delas. Com essas funções, dá para saber se foi apertado ok ou cancel, mas elas são um pouco mais complicadas: elas não travam o resto do jogo e retornam o valor de um jeito diferente, por meio do evento Asynchronous > Dialog.
Se quiser usar, pode ler mais sobre elas no help, mas como você "nunca fiz nada no Game Maker e tenho pouca experiencia em programação", talvez não seja uma boa ideia... Mas não vou dizer que você não vá conseguir.
Até explicaria como usar, mas não tenho tempo... =/
Igor KinGamer- Data de inscrição : 26/09/2008
Reputação : 11
Número de Mensagens : 890
Prêmios :
x 0 x 1 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Help! - Show message
Igor KinGamer escreveu:Usando get_string, você pode testar se o valor retornado é uma string nula (get_string(...) == "", pelo menos é o que é retornado aqui ao cancelar). Se usar get_integer, como o Isaque Onix sugeriu, o único jeito é testar se o valor retornado é igual ao valor padrão (que teria que ser um valor negativo, como qualquer outro teoricamente é possível).
Se o resultado do teste for verdadeiro (uma string nula ou o valor padrão), exit. Esse comando sai na hora do script/piece of code que está sendo executado. Por exemplo:
- Código:
var valor;
valor = get_string("Quantas pessoas moram na sua casa?", "");
if (valor == "")
exit; // Para tudo
mora = real(valor);
... // Usa o valor de "mora"
valor = get_string("Quantas TVs grandes tem na sua casa?", "");
if (valor == "")
exit;
tv1 = real(valor);
... // Usa o valor de "tv1"
- Sobre o 'var valor':
O "var" em "var valor;" declara a variável como local, ou seja, ela vai existir apenas durante esse script/evento e depois desaparecer. É uma boa prática usar var para variáveis que só são necessárias na hora (como a "valor", que só é usada para o teste).
O help do GMS diz que get_string e get_integer são apenas para debug (portanto, não indicam se clicou em ok ou cancel), e que no projeto final não devem ser usadas, mas sim get_string_async e get_integer_async em vez delas. Com essas funções, dá para saber se foi apertado ok ou cancel, mas elas são um pouco mais complicadas: elas não travam o resto do jogo e retornam o valor de um jeito diferente, por meio do evento Asynchronous > Dialog.
Se quiser usar, pode ler mais sobre elas no help, mas como você "nunca fiz nada no Game Maker e tenho pouca experiencia em programação", talvez não seja uma boa ideia... Mas não vou dizer que você não vá conseguir.
Até explicaria como usar, mas não tenho tempo... =/
Hey, deu certo!!!! Muito obrigada
tha.sribeiro- Data de inscrição : 30/08/2014
Reputação : 0
Número de Mensagens : 14
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Tópicos semelhantes
» show message
» Tem como mudar as palavras do Show Message ou Show Question para "Sim" ou "Não" ao invés de "Yes" e "Not"????
» show message- meu problema tem solução?
» [RESOLVIDO] Ajudem show message no esc
» Show-Message-ext execultada por uma global
» Tem como mudar as palavras do Show Message ou Show Question para "Sim" ou "Não" ao invés de "Yes" e "Not"????
» show message- meu problema tem solução?
» [RESOLVIDO] Ajudem show message no esc
» Show-Message-ext execultada por uma global
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos