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
» Como ajustar velocidade de cada frame da animação no game maker
por pequetux Hoje à(s) 16:45

» Preciso de ajuda
por AftonDuGrau Dom 21 Abr 2024, 20:18

» Como faz o evento drawn GUI, não se repetir?
por aminaro Sex 19 Abr 2024, 20:30

» PROBLEMAS COM FÍSICAS DE ÁGUA
por aminaro Ter 16 Abr 2024, 10:07

» Retorno da GMBR!!!
por Ralphed Sex 12 Abr 2024, 22:45

» JOGADOR PARANDO NO AR QUANDO ATACA
por aminaro Qua 10 Abr 2024, 13:51

» Problemas com texto interativo
por Kaaru72 Dom 07 Abr 2024, 11:31

» Erro escondido e indecifrável
por dev_gabize.azv Qui 04 Abr 2024, 10:11

» Mudar cor de apenas uma palavra
por Ralphed Sáb 30 Mar 2024, 00:39

» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27

» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30

» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17

» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18

» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34

» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13

» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18

» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12

» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02

» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55

» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42

» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56

» Alguém aqui já ganha dinheiro com seus games?
por Joton Seg 15 Jan 2024, 16:49

» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21

» como aumentar o obj sem aumentar a colisão??
por GabrielXavier Qua 10 Jan 2024, 07:21

» Asteroid Core - Early Acesse Update [0.2.0.0]
por JOZ. Seg 08 Jan 2024, 14:39


[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

- Tópicos semelhantes

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