Conectar-se

Esqueci minha senha

Últimos assuntos
» [Enquete] Concursos GMBR
por Willy Ontem à(s) 19:49

» CR - Concurso Relâmpago!!
por Willy Ter 18 Jul 2017, 17:11

» 3D:como rodar a camara em horizontal?
por Cambalinho Ter 18 Jul 2017, 15:09

» [Resolvido] pode explicar a d3d_set_projection()?
por Cambalinho Ter 18 Jul 2017, 11:28

» Escrever a resposta certa muda de room
por PedroX Seg 17 Jul 2017, 21:46

» Nota de esclarecimento - GMBR voltou!
por Mentos e Coca-cola Seg 17 Jul 2017, 17:05

» [CR] Campo Minado
por Katerp Dom 16 Jul 2017, 23:09

» [CR] The Bazooka Cat
por Tedi Ripper Dom 16 Jul 2017, 23:01

» Como melhorar um protótipo(Design)
por lolandoplayer Dom 16 Jul 2017, 22:56

» Diminuir velocidade ao arrastar objeto
por LwysF Dom 16 Jul 2017, 17:33

Quem está conectado
15 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 15 Visitantes

Nenhum

[ Ver toda a lista ]


O recorde de usuários online foi de 324 em Ter 05 Out 2010, 13:36
Estatísticas
Temos 12700 usuários registrados
O último usuário registrado atende pelo nome de Eduardo Gomes

Os nossos membros postaram um total de 220919 mensagens em 30412 assuntos

Comandos

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

Comandos

Mensagem por Kapoty em Ter 18 Set 2012, 12:16

Bom, como eu faço isso :

Digamos que eu criei uma text_box e lá tudo que eu escrevo e envio apertando enter é reconhecido como um comando, digamos assim que eu enviei o seguinte comando :

Código:
adicionar_ponto[x,y]

Quero que quando eu envie isto eu possa :

- Pegar o valor de x
- Pegar o valor de y
- Reconhecer se adicionar_ponto está escrito corretamente

Bem, é isto.

ps : eu consegui pegar o valor de x e y mas o problema é que se eu colocar no x "20" eu só estou conseguindo pegar o "2".


Última edição por kapoty em Ter 18 Set 2012, 12:35, editado 1 vez(es)
avatar
Kapoty

Ranking : Nota B
Notas recebidas : E + D + C + B + D +B + A
Data de inscrição : 05/11/2011
Número de Mensagens : 635
Insígnias de JAM :

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

Prêmios
   : 1
   : 0
   : 1

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Comandos

Mensagem por un00brn em Ter 18 Set 2012, 12:30

avatar
un00brn

Data de inscrição : 18/06/2012
Número de Mensagens : 117
Insígnias de JAM :

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

Ver perfil do usuário http://www.djurielrn.blogspot.com

Voltar ao Topo Ir em baixo

Re: Comandos

Mensagem por Kapoty em Ter 18 Set 2012, 12:33

@un00brn escreveu:Talvez esse tutorial sirva para alguma coisa

http://gmbr.forumeiros.com/t6975-tutorial-fazendo-combinacoes-de-comandos

Não serve... você leu oque eu disse?
avatar
Kapoty

Ranking : Nota B
Notas recebidas : E + D + C + B + D +B + A
Data de inscrição : 05/11/2011
Número de Mensagens : 635
Insígnias de JAM :

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

Prêmios
   : 1
   : 0
   : 1

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Comandos

Mensagem por Ferna49 em Ter 18 Set 2012, 12:58

Vai se acustumando o povo daqui é assim mesmo, simplismente chega e manda você ler um tutorial.


Outros chegam floodando nos tópicos...
Leia as regras!
avatar
Ferna49

Data de inscrição : 19/07/2012
Número de Mensagens : 54
Insígnias de JAM :

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

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Comandos

Mensagem por saim em Ter 18 Set 2012, 14:09

Eu usaria comandos de strings. Limitadores.
Tipo, pegaria o comando inteiro e jogaria numa string. Daí, procuraria por caracteres como "[", ",", ";", "."... tem mais, mas depende de você querer enumerar todos ou não.
Depois disso, eu separaria a string em substrings e separadores. Daí pra frente, a coisa seria complicada. Por exemplo, se eu encontrasse um "[", isso significa que a string anterior é o nome de uma array. Se encontrar um "(", a string anterior é um script ou função.
Se temos uma array, o valor depois do "[" TEM QUE SER um número inteiro. Então, se não der pra transformar em um número inteiro diretamente, provavelmente (mas não certamente) trata-se de uma variável ou função. Nesse caso, começa-se tudo de novo.
A vírgula serve pra separar argumentos numa função ou índices numa array.

Caramba, a cada possibilidade levantada, me parece mais e mais que você está reinventando o game maker (por estar criando um interpretador de códigos, tal). Posso perguntar qual o objetivo do programa?
avatar
saim

Ranking : Nota B
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Número de Mensagens : 2964
Insígnias de JAM :

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

Prêmios
   : 1
   : 0
   : 3

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Comandos

Mensagem por Kapoty em Ter 18 Set 2012, 14:44

@saim escreveu:
Caramba, a cada possibilidade levantada, me parece mais e mais que você está reinventando o game maker (por estar criando um interpretador de códigos, tal). Posso perguntar qual o objetivo do programa?

Sim, ontem anoite eu estava sem nada para fazer e comecei a "brincar" com o draw do game maker, enquanto eu brincava tive uma ideia interessante que era fazer um modelador de imagens usando linhas convencionais dai pra frente não parei mais de ter novas ideias e ai me veio a cabeça que já que vou colocar muitas funções por que não fazer um "interpretador de códigos" ?

Se quiser ver uma minima parte do programa clique aqui.

Como eu disse é uma parte minima do programa, comecei ontem a noite e a vai a lista de funções com o mouse :

Código:
- Mecha os quadrados azuis para mudar a posição de uma determinada linhas
- Mecha a bolinha vermelha para trocar todos os pontos de posição
- Clique com o botão direito do mouse para adicionar um ponto no lugar onde o mouse está
- Clique com o botão do scroll do mouse para deletar um ponto no lugar onde o mouse está
- Aperte espaço para ver apenas as linhas e vice-versa
- Aperte enter para fechar as linhas
avatar
Kapoty

Ranking : Nota B
Notas recebidas : E + D + C + B + D +B + A
Data de inscrição : 05/11/2011
Número de Mensagens : 635
Insígnias de JAM :

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

Prêmios
   : 1
   : 0
   : 1

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Comandos

Mensagem por un00brn em Ter 18 Set 2012, 17:19

@kapoty escreveu:
@un00brn escreveu:Talvez esse tutorial sirva para alguma coisa

http://gmbr.forumeiros.com/t6975-tutorial-fazendo-combinacoes-de-comandos

Não serve... você leu oque eu disse?

Li sim man'.. Pensava que poderia ser assim.
Mas, descobri outra forma que pode ser também.
Usando o "string_pos".
E voce vai montando um por um, ou voce pode montar um mini script ou mandar por variáveis. Voce que escolhe.
Como quem me passou o codigo foi o Vinians, eu não sei de quase nada sobre ele, é só voce se informar.
Mas, vai aí um exemplo.
Código:

Frase = "se eu fosse o pelé, jogaria sem cueca!";
if (string_pos("pelé", Frase) > 0)
{
    // Se existir o nome pelé na minha variavel, fazer algo
}
if (string_pos("se eu", Frase) > 0)
{
    // Se existir o nome se seu na minha variavel, fazer algo
}
Daqui, voce já tem meio caminho andado ( ou não )
Valeu, e desculpa ae não saber usar o comando, mas, vai que voce o entenda, e tinha se esquecido dele! =) Boa sorte com o projeto!
avatar
un00brn

Data de inscrição : 18/06/2012
Número de Mensagens : 117
Insígnias de JAM :

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

Ver perfil do usuário http://www.djurielrn.blogspot.com

Voltar ao Topo Ir em baixo

Re: Comandos

Mensagem por Kapoty em Ter 18 Set 2012, 17:23

@un00brn escreveu:
@kapoty escreveu:
@un00brn escreveu:Talvez esse tutorial sirva para alguma coisa

http://gmbr.forumeiros.com/t6975-tutorial-fazendo-combinacoes-de-comandos

Não serve... você leu oque eu disse?

Li sim man'.. Pensava que poderia ser assim.
Mas, descobri outra forma que pode ser também.
Usando o "string_pos".
E voce vai montando um por um, ou voce pode montar um mini script ou mandar por variáveis. Voce que escolhe.
Como quem me passou o codigo foi o Vinians, eu não sei de quase nada sobre ele, é só voce se informar.
Mas, vai aí um exemplo.
Código:

Frase = "se eu fosse o pelé, jogaria sem cueca!";
if (string_pos("pelé", Frase) > 0)
{
    // Se existir o nome pelé na minha variavel, fazer algo
}
if (string_pos("se eu", Frase) > 0)
{
    // Se existir o nome se seu na minha variavel, fazer algo
}
Daqui, voce já tem meio caminho andado ( ou não )
Valeu, e desculpa ae não saber usar o comando, mas, vai que voce o entenda, e tinha se esquecido dele! =) Boa sorte com o projeto!

Bem, obrigado pela ajuda mas string_pos não vai servir, pois não quero sabe se existe e sim pegar estes valores.

Já tenho meio caminho andado, já consigo pegar o valor mas só se o valor só tiver um algarismo.
avatar
Kapoty

Ranking : Nota B
Notas recebidas : E + D + C + B + D +B + A
Data de inscrição : 05/11/2011
Número de Mensagens : 635
Insígnias de JAM :

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

Prêmios
   : 1
   : 0
   : 1

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Comandos

Mensagem por luiz_eldorado em Ter 18 Set 2012, 21:53

Uma vez eu tentei fazer isso, mas é realmente complicado, não pelas funções de strings (tem que ficar checando posições, copiando, deletando, etc), mas por, nos códigos, achar funções dentro de funções. Por exemplo:
Código:
funcao1("dorgas!",funcao2(2314314,"!!!!!!!"),'xDDD');
Nesse caso, se eu procurar o "(" e depois o ")" e tudo aquilo dentro serão argumentos estará errado, pois ele vai achar o primeiro ")" que achar, ou seja, o da "funcao2" e não da "funcao1". Além de que o usuário pode criar um código com erros.
Então ví que a linguagem teria de ser de outro modo. Eu pensei no seguinte:
object_add obj
var xx,42,real
var yy,666,real
instance_create ,xx,yy,obj
var str,Texto!,string
draw_text ,xx,yy,str

Primeiro o nome da função, depois um espaço, depois os argumentos separados por vírgula. Normalmente, o primeiro argumento é onde o retorno desta funções será armazenado. É impossível colocar valores diretamente nas funções, é preciso colocar

já consigo pegar o valor mas só se o valor só tiver um algarismo.
Tente assim:
Código:
str="adicionar_ponto[x,y]";
pos1=string_pos("[",str);
pos2=string_pos(",",str);
xx=string_copy(str,pos1+1,pos2-pos1);
É algo assim
avatar
luiz_eldorado

Ranking : Nota C
Notas recebidas : C
Data de inscrição : 30/07/2011
Número de Mensagens : 928
Insígnias de JAM :

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

Prêmios
   : 0
   : 0
   : 1

Ver perfil do usuário http://luizpontes.tk/

Voltar ao Topo Ir em baixo

Re: Comandos

Mensagem por Kapoty em Ter 18 Set 2012, 21:59

@luiz_eldorado

Errr... você está seguindo a mesma logica que eu, também pensei neste mesmo modo mas ai eu percebi que seria limitado a "2" argumentos, agora eu só preciso mesmo é fazer com que possa ter mais de 2 argumentos.

Por enquanto estou usando este código mas já estou precisando do outro.

Se quiserem ver como está ficando o projeto é só falarem.
avatar
Kapoty

Ranking : Nota B
Notas recebidas : E + D + C + B + D +B + A
Data de inscrição : 05/11/2011
Número de Mensagens : 635
Insígnias de JAM :

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

Prêmios
   : 1
   : 0
   : 1

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Comandos

Mensagem por saim em Qua 19 Set 2012, 10:14

Eu estava numa preguiça danada de testar cada posição pra gerar o script (esses "+1" e "-1" me matam!), mas como o luiz_eldorado já fez a parte chata, fica viável adaptar pra qualquer número de argumentos:

Código:
var str, pos, posFinal, strArgumentos, nArgs, argumento, i;

str = "adicionar_ponto[x,y,z,...]"; // dá pra substituir por "argument0",  ou "get_string", pra usar como script
pos[0] = string_pos("[",str) + 1;
posFinal = string_pos("]",str);
strArgumentos = string_copy(str, pos[0], posFinal - pos[0]); // uma cópia da str, só com os argumentos
show_message("strArgumentos=" + strArgumentos); // debug
nArgs = string_count(",", strArgumentos); // total de vírgulas. (um a menos que o total de argumentos)
show_message("nArgs=" + string(nArgs)); // debug
// num loop, transforma os argumentos em strings, colocando-os na array "argumento"
for(i = 1; i <= nArgs; i += 1){
   pos[i] = pos[i - 1] + string_pos(",", strArgumentos);
   argumento[i - 1] = string_copy(str, pos[i - 1], pos[i] - pos [i - 1] - 1);
   show_message("argumento[" + string(i - 1) + "]=" + argumento[i - 1]); // debug
   strArgumentos = string_copy(str, pos[i], posFinal - pos[i]); // uma cópia da str, só com os argumentos restantes
   }
// falta o último argumento
argumento[nArgs] = strArgumentos; // já que só sobrou o último argumento
show_message("argumento[" + string(nArgs) + "]=" + argumento[nArgs]); // debug

Ainda não resolve o problema de ter uma função dentro da outra, mas já melhora o problema. Resolver é possível, mas chato demais. Se for um programa menos experimental, talvez valha a pena, mas parece que é mais um lance de curiosidade, então acho melhor NÃO usar uma função dentro da outra...
avatar
saim

Ranking : Nota B
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Número de Mensagens : 2964
Insígnias de JAM :

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

Prêmios
   : 1
   : 0
   : 3

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Comandos

Mensagem por vinians em Qua 19 Set 2012, 11:55

@saim escreveu:Eu estava numa preguiça danada de testar cada posição pra gerar o script (esses "+1" e "-1" me matam!), mas como o luiz_eldorado já fez a parte chata, fica viável adaptar pra qualquer número de argumentos:

Código:
var str, pos, posFinal, strArgumentos, nArgs, argumento, i;

str = "adicionar_ponto[x,y,z,...]"; // dá pra substituir por "argument0",  ou "get_string", pra usar como script
pos[0] = string_pos("[",str) + 1;
posFinal = string_pos("]",str);
strArgumentos = string_copy(str, pos[0], posFinal - pos[0]); // uma cópia da str, só com os argumentos
show_message("strArgumentos=" + strArgumentos); // debug
nArgs = string_count(",", strArgumentos); // total de vírgulas. (um a menos que o total de argumentos)
show_message("nArgs=" + string(nArgs)); // debug
// num loop, transforma os argumentos em strings, colocando-os na array "argumento"
for(i = 1; i <= nArgs; i += 1){
   pos[i] = pos[i - 1] + string_pos(",", strArgumentos);
   argumento[i - 1] = string_copy(str, pos[i - 1], pos[i] - pos [i - 1] - 1);
   show_message("argumento[" + string(i - 1) + "]=" + argumento[i - 1]); // debug
   strArgumentos = string_copy(str, pos[i], posFinal - pos[i]); // uma cópia da str, só com os argumentos restantes
   }
// falta o último argumento
argumento[nArgs] = strArgumentos; // já que só sobrou o último argumento
show_message("argumento[" + string(nArgs) + "]=" + argumento[nArgs]); // debug

Ainda não resolve o problema de ter uma função dentro da outra, mas já melhora o problema. Resolver é possível, mas chato demais. Se for um programa menos experimental, talvez valha a pena, mas parece que é mais um lance de curiosidade, então acho melhor NÃO usar uma função dentro da outra...
Otima solução Saim, para resolver o problema de uma função dentro da outra é relativamente simples.
* Quando pegar o "argumento", procure em uma lista se ele existe como nome de alguma função.
* se ele NÃO existir ele é uma string comum de argumento
* se ele EXISTIR basta chamar o próprio script recursivamente. Isso faz com que o problema se auto-solucione

Flws!
avatar
vinians

Ranking : Nota B
Notas recebidas : B-C-A-C
Data de inscrição : 18/09/2008
Número de Mensagens : 2490
Insígnias de JAM :

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

Prêmios
   : 0
   : 2
   : 1

Ver perfil do usuário http://xcreatorgames.weebly.com/

Voltar ao Topo Ir em baixo

Re: Comandos

Mensagem por Kapoty em Qua 19 Set 2012, 12:24

@saim escreveu:Eu estava numa preguiça danada de testar cada posição pra gerar o script (esses "+1" e "-1" me matam!), mas como o luiz_eldorado já fez a parte chata, fica viável adaptar pra qualquer número de argumentos:

Código:
var str, pos, posFinal, strArgumentos, nArgs, argumento, i;

str = "adicionar_ponto[x,y,z,...]"; // dá pra substituir por "argument0",  ou "get_string", pra usar como script
pos[0] = string_pos("[",str) + 1;
posFinal = string_pos("]",str);
strArgumentos = string_copy(str, pos[0], posFinal - pos[0]); // uma cópia da str, só com os argumentos
show_message("strArgumentos=" + strArgumentos); // debug
nArgs = string_count(",", strArgumentos); // total de vírgulas. (um a menos que o total de argumentos)
show_message("nArgs=" + string(nArgs)); // debug
// num loop, transforma os argumentos em strings, colocando-os na array "argumento"
for(i = 1; i <= nArgs; i += 1){
   pos[i] = pos[i - 1] + string_pos(",", strArgumentos);
   argumento[i - 1] = string_copy(str, pos[i - 1], pos[i] - pos [i - 1] - 1);
   show_message("argumento[" + string(i - 1) + "]=" + argumento[i - 1]); // debug
   strArgumentos = string_copy(str, pos[i], posFinal - pos[i]); // uma cópia da str, só com os argumentos restantes
   }
// falta o último argumento
argumento[nArgs] = strArgumentos; // já que só sobrou o último argumento
show_message("argumento[" + string(nArgs) + "]=" + argumento[nArgs]); // debug

É saim este código resolve meu problema obrigado.

@saim escreveu:Ainda não resolve o problema de ter uma função dentro da outra, mas já melhora o problema. Resolver é possível, mas chato demais. Se for um programa menos experimental, talvez valha a pena, mas parece que é mais um lance de curiosidade, então acho melhor NÃO usar uma função dentro da outra...

É eu to levando fé no meu programa, aqui vai uma versão um pouco mais atualizada com algumas funções mas sem o seu script por enquanto :

Código:
line_width[id,width]
circle_add[x,y] // não coloquei para checar mais de um algarismo ainda
line_add[x,y] // não coloquei para checar mais de um algarismo ainda
circle_dimension[id,dimension]
point_add[id]

Não vou precisar de usar uma função dentro da outra não.
avatar
Kapoty

Ranking : Nota B
Notas recebidas : E + D + C + B + D +B + A
Data de inscrição : 05/11/2011
Número de Mensagens : 635
Insígnias de JAM :

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

Prêmios
   : 1
   : 0
   : 1

Ver perfil do usuário

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