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


[RESOLVIDO] Ajuda em sistema de condições

5 participantes

Ir para baixo

[RESOLVIDO] Ajuda em sistema de condições Empty [RESOLVIDO] Ajuda em sistema de condições

Mensagem por Adriano Heartless Ter 29 Mar 2011, 12:20

Fala galera viciada do GM O/
Estou aqui mais uma vez para pedir ajuda pos estou desenvolvendo um jogo educativo e a galera aqui do fórum tem me ajudado bastante. Se alguem puder me dar umas dicas para facilitar a programação ou alguma opinião vai ajudar muito lol. Então vamos lá!

Bom estou fazendo uma atividade onde aparecerá um pequeno trecho de um poema na tela.

As palavras de cada verso apareceram grudades umas nas outros sem espaço:

exemplo "chucknorriséocaramaispoderosodouniverso!"

O objetivo desse ativdade é clicar nos espaços onde as apalavras estão juntas para separar cada palavra ficando assim no final

"chuck norris é o cara mais poderoso do universo!"

Logo abaixo tem uma imagem para mostar como está o desenvolvimento

[RESOLVIDO] Ajuda em sistema de condições Dkjslfkjsdlfks


Bom, eu fiquei desesperado para fazer isso e conseguir fazer da seguinte maneira vou falar passo a passo o que fiz

:::: LÓGICA :::::

Criei uma variavel global onde se ela for false seria sem espaço e true com espaço
false >> Estoucomdordebarriga
true >> Estou com dor de barriga
Criei varios objetos chamados "espaços" no lugar de onde vai ser clicado para quando a pessoa clicar ali na verdade esta clicando no objeto espaço onde trocaria a variavel para true fazendo assim o efeito de espaço entre as palavras






:::: PASSO A PASSO:::::

--> Criei um objeto chamado "controle"
--> No create dele criei uma variavel chamada global.espaco e numerei para cada espaço que deverá ser clicada na atividade.

global.espaco[1]=false;
global.espaco[2]=false;
global.espaco[3]=false;
// verso 2
global.espaco[4]=false;
global.espaco[5]=false;
global.espaco[6]=false;
...

-->No DRAW do objeto controle eu executei o seguinte codigo

//ESTROFE 1
// VERSO 1
// JACARÉFOIALAGOA

if global.espaco[1]=false and global.espaco[2]=false and global.espaco[3]=false{
draw_text(95,130,"Jacaréfoialagoa.")}


// JACARÉ FOIALAGOA
if global.espaco[1]=true and global.espaco[2]=false and global.espaco[3]=false{
draw_text(95,130,"Jacaré foialagoa.")}


// JACARÉFOI ALAGOA
if global.espaco[1]=false and global.espaco[2]=true and global.espaco[3]=false{
draw_text(95,130,"Jacaréfoi alagoa.")}


// JACARÉFOIA LAGOA
if global.espaco[1]=false and global.espaco[2]=false and global.espaco[3]=true{
draw_text(95,130,"Jacaréfoia lagoa.")}

// JACARÉ FOIA LAGOA ( VERSO 1 COMPLETO)
if global.espaco[1]=true and global.espaco[2]=true and global.espaco[3]=true{
draw_text(95,130,"Jacaré foi a lagoa.")}

...

-->E por final criei varios objetos chamado "espaco_1", "espaco_2" ...
Coloquei eles no lugar dos espaços onde deve ser clicado
E ao ser clicado muda o valor da respectiva variavel para verdadeiro


Objeto espaco_1
Left Pressed >>
global.espaco[1]=true;
instance_destroy();





É isso pessoal, só que vem o ploblema agora com esse formato que cliquei. Eu fiz as conta e desanimei com o resultado. Vou falar o porque

No terceiro verso por exemplo são 7 espaços
Logo são 7 variaveis com 2 possibilidades diferente, true e false

Eu teria que programar todas as possibilidades ou seja
2.2.2.2.2.2.2= 128 O____O

Eu teria que fazer 128 possibilidades diferente de true e false para cada variavel!!!!!!!!!!!!!!!!!!!!!!!!!! >.<
Teria que fazer isso aqui 128 vezes

""
// JACARÉ FOIA LAGOA ( VERSO 1 COMPLETO)
if global.espaco[1]=true and global.espaco[2]=true and global.espaco[3]=true{
draw_text(95,130,"Jacaré foi a lagoa.")}
""




Pessoal se alguem tiver uma dica para facilitar ou então me der algum conselho sobre como posso fazer isso ai em cima por favor me falem. Enquanto isso eu estou programado umas das 128 possibilidades pale


Última edição por adriano Heartleless em Dom 26 Jun 2011, 01:22, editado 1 vez(es)
Adriano Heartless
Adriano Heartless

Data de inscrição : 12/02/2011
Reputação : 2
Número de Mensagens : 95
Prêmios : [RESOLVIDO] Ajuda em sistema de condições 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://ganelse.blogspot.com.br/

Ir para o topo Ir para baixo

[RESOLVIDO] Ajuda em sistema de condições Empty Re: [RESOLVIDO] Ajuda em sistema de condições

Mensagem por Math Maker Ter 29 Mar 2011, 16:48

Cara, você pode usar a família string e tornar isso MUITO mais fácil a partir de uma função baseada no número de letrar, largura da str e altura da str. Usa-se três variáveis: texto1 (embaralhado), texto2 (terminado), texto_modi (arrumando o texto1).

Dividindo a largura da string pelo número de letras se obtem um espaço padrão no qual pode ser dividido pela localização do mouse ao clicar (como uma escala), que pode ser arredondado com uma função do GM.

Com todos os cálculos você pode programar para ser inserido a str " " (espaço) a frente da letra clicada. No final se compara texto_mod com o texto2, quando iguais o problema está resolvido, entende? Precisa-se de algumas variáveis a mais (como uma para guardar a l clicada, etc).

Fiz aqui e deu certo, não vou dar mastigadinho, mas estiver com dificuldades é só falar.
Math Maker
Math Maker

Data de inscrição : 26/02/2011
Reputação : 6
Número de Mensagens : 107
Prêmios : [RESOLVIDO] Ajuda em sistema de condições 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

[RESOLVIDO] Ajuda em sistema de condições Empty Re: [RESOLVIDO] Ajuda em sistema de condições

Mensagem por Adriano Heartless Qui 31 Mar 2011, 01:05

uhmm usando string deve ser melhor do que o modo que estou fazendo. Não sou muito familharizado com string mas, vou estudar e ver como ela funciona
Cara muito obrigado pela ajuda. Pelo seu jeito é bem mais simples porem ainda é muito tecnico para mim. Nada que uma boa leitura e tópicos daqui não faça. Você me deixou no caminho certo vlw Happy
Adriano Heartless
Adriano Heartless

Data de inscrição : 12/02/2011
Reputação : 2
Número de Mensagens : 95
Prêmios : [RESOLVIDO] Ajuda em sistema de condições 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://ganelse.blogspot.com.br/

Ir para o topo Ir para baixo

[RESOLVIDO] Ajuda em sistema de condições Empty Re: [RESOLVIDO] Ajuda em sistema de condições

Mensagem por Fuzenrad Qui 31 Mar 2011, 08:54

Só complementando/corrigindo o que o Math Maker disse, você usa o string_width que retorna o tamanho da palavra em pixels, porém só funciona corretamente com uma fonte regular (com todas as letras da mesma largura), se usar o Arial por exemplo, a letra 'I' tem uma largura diferente do 'W', isso dá uma diferença significativa na hora de clicar, ou seja, vai adicionar espaço no lugar errado, além disso pra localizar um espaço pelo mouse, você deve considerar 2 variáveis, as posições x do mouse e do objeto na tela e o string_width do texto, dividindo string_width pelo string_length, assim você obtém um valor em pixels que cada caracter ocupa na palavra e não a posição dele, fora que o string_insert adiciona na exata posição que você informar, então deve ser valor+1 (pra adicionar na frente da letra escolhida), até a 'função de arredondar' deve ser pensada, a melhor escolha é o ceil, que arredonda sempre pra cima, pode ser 1.01 ou 1.90, ele mostrará 2.

Você está iniciando agora, seria difícil você pegar um raciocínio assim de cara, então vou deixar os códigos aqui, mas lembre-se, estude, não copie e cole apenas, tudo bem?

/* CREATE */
texto="SAPONÃOLAVAOPÉ" //Texto qualquer
fixedsys=font_add("FixedSys",12,0,0,0,255) //Fonte regular FixedSys

/* STEP */
val=ceil((mouse_x-x)/(string_width(texto)/string_length(texto)))
/* Calcula a posição em caracteres considerando a posição do mouse em relação à posição x do objeto e o tamanho da palavra */

if mouse_check_button_pressed(mb_left)
texto=string_insert(" ",texto,val+1);
/* Se botão esquerdo do mouse for pressionado, adiciona na posição atual do mouse +1 */

/* DRAW */
draw_set_font(fixedsys)
draw_text(x,y,texto)

Um defeito desse código, é que adiciona espaço em qualquer lugar, até mesmo em lugares onde já existe um espaço, a solução é verificar se o caracter da posição escolhida é diferente de " " (espaço), assim:

if string_char_at(texto,val)!=" " and string_char_at(texto,val+1)!=" " {
//( ... )
}

Outro problema é que só funciona na primeira linha, o string_width só retorna a largura, não importando se tem 1 ou 10 linhas, pra corrigir isso você deverá calcular considerando posição y do mouse e somar as larguras das linhas anteriores para verificar a posição na linha corrente, é fácil eu diria, só dar uma estudada.
Dica: Use o string_height.

Sua segunda opção é usar uma array no lugar dos espaços, primeiro você indica por meio de um for que todos os espaços são vazios, assim:

for (k=0; k<=200; k+=1) {
e[k]=""; }

//O 200 representa a quantidade de espaços.

Segundo, modifica todo o texto pra ficar com o array nos lugares correspondentes aos espaços:
texto="Jacaré"+e[0]+"foi"+e[1]+"a"+e[2]+"lagoa.";

Se mostrar na tela agora, aparecerá: Jacaréfoialagoa.

E por fim adiciona um espaço na array correspondente ao espaço, logo pra fazer a frase ficar correta, os valores e[0], e[1] e e[2] devem possuir o char 'espaço', assim:

e[0]=" ";
e[1]=" ";
e[2]=" ";

É uma maneira mais simples, porém trabalhosa, mas não tanto quanto a que você estava usando. Aconselho usar a primeira.


Última edição por fUzEnRaD em Sáb 16 Abr 2011, 15:59, editado 1 vez(es)
Fuzenrad
Fuzenrad

Games Ranking : Nota A

Notas recebidas : A-A-A-A-B
Data de inscrição : 04/07/2010
Reputação : 46
Número de Mensagens : 1063
Prêmios : [RESOLVIDO] Ajuda em sistema de condições Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 1

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

Ir para o topo Ir para baixo

[RESOLVIDO] Ajuda em sistema de condições Empty Re: [RESOLVIDO] Ajuda em sistema de condições

Mensagem por saim Sex 01 Abr 2011, 09:48

Isso pode ser útil pra um projeto que eu tenho engavetado, portanto vou colocar um texto inútil aqui pra facilitar seguir o tópico.
Pro texto não ficar totalmente inútil, umas dicas bobas relativas ao código do fUzEnRaD:
- A menos que existam outros objetos definido a fonte, na room, usar draw_set_font no create, ao invés do draw, economiza memória. Havendo outros objetos, tem que ser no draw mesmo.
- Prefiro usar o evento de soltar o botão do mouse. Dá tempo do jogador mudar de idéia e soltar o botão longe de onde aconteceria alguma coisa.
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : [RESOLVIDO] Ajuda em sistema de condições Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

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

Ir para o topo Ir para baixo

[RESOLVIDO] Ajuda em sistema de condições Empty Re: [RESOLVIDO] Ajuda em sistema de condições

Mensagem por Markituh Sex 01 Abr 2011, 10:34

Com o "SAPONÃOLAVAOPÉ" fica legal, mas quando eu coloco a frase que ele queria, "chucknorriséocaramaispoderosodomundo", tem um certo problema em relação a posição em que adiciona o espaço. Se eu clico na letra "s" de "Norris", ele adiciona antes do S, não na frente. E as vezes quando clico no meio de algumas letras, nem acontece nada. (Como por exemplo no meio da letra "R" e "I" de "Norris". De qualquer modo, esse método é muito interessante, serve EXATAMENTE para o que ele diz. Destaquei o exatamente porque se eu uso o ceil para desenhar uma linha(para fazer uma espécie de cursor), não fica alinhado. =/
saim escreveu: A menos que existam outros objetos definido a fonte, na room, usar draw_set_font no create, ao invés do draw, economiza memória. Havendo outros objetos, tem que ser no draw mesmo.
Não seria "Não havendo outros objetos, tem que ser no draw mesmo"? Pois quando tem vários objetos usando os Draw Sets, o Draw de um objeto pode afetar o do outro, e assim sucessivamente. Para driblar isso, só usar no Create, que só irá definir para o próprio objeto. Estou correto?
Markituh
Markituh

Games Ranking : Sem avaliações

Data de inscrição : 11/10/2009
Reputação : 106
Número de Mensagens : 2184
Prêmios : [RESOLVIDO] Ajuda em sistema de condições Empty

Medalhas x 0 Tutoriais x 1 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

[RESOLVIDO] Ajuda em sistema de condições Empty Re: [RESOLVIDO] Ajuda em sistema de condições

Mensagem por saim Sex 01 Abr 2011, 13:24

Markituh escreveu:
saim escreveu: A menos que existam outros objetos definido a fonte, na room, usar draw_set_font no create, ao invés do draw, economiza memória. Havendo outros objetos, tem que ser no draw mesmo.
Não seria "Não havendo outros objetos, tem que ser no draw mesmo"? Pois quando tem vários objetos usando os Draw Sets, o Draw de um objeto pode afetar o do outro, e assim sucessivamente. Para driblar isso, só usar no Create, que só irá definir para o próprio objeto. Estou correto?
Não. Os draw_sets são globais, de forma que usar só no create e havendo mais de um objeto definindo alguma coisa, a última definição valerá para todos os objetos. Se você coloca no draw, antes de desenhar e em todos objetos, cada um irá re-definir o status do draw e usar da forma que for mais conveniente.
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : [RESOLVIDO] Ajuda em sistema de condições Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

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

Ir para o topo Ir para baixo

[RESOLVIDO] Ajuda em sistema de condições Empty Re: [RESOLVIDO] Ajuda em sistema de condições

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo


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