Entrar
Últimos assuntos
» Como ajustar velocidade de cada frame da animação no game makerpor Ralphed Ontem à(s) 18:28
» 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
» Versionamento de código com GitHub
por GabrielXavier Seg 08 Jan 2024, 07:32
» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por kolesovsup Sex 29 Dez 2023, 07:16
[DÚVIDA RAPIDA] condição para determinar valores diferente nas variaveis
5 participantes
Página 1 de 1
[DÚVIDA RAPIDA] condição para determinar valores diferente nas variaveis
Olááá pessoal XD
Bom estou precisando de uma ajudinha aqui porque to batendo cabeça. Não sou muito experiente em GML mas acredito que não deve ser dificil isso que vou perguntar =/
Bom, eu tenho 4 variaveis ( na verdade são 20 mas vamos comçar co 4 )
item_1= obj_caixa
item_2= obj_morango
item_3= obj_banana
item_4= obj_arroz
até ai tudo bem...agora quero embaralhar esses itens aleatoriamente e colocar em uma das 4 posições que inventei vamos lá
// SORTEIANDO
evento alarm[1]
posicao_1= choose(item_1,item_2,item_3,item_4)
posicao_2= choose(item_1,item_2,item_3,item_4)
posicao_3= choose(item_1,item_2,item_3,item_4)
posicao_4= choose(item_1,item_2,item_3,item_4)
Bom a minha dúvida está exatamente ai.....as variaveis posicao não podem ser iguais..eu queria saber como fazer assim por exemplo
SE AS 4 VARIAVEIS "posicao" tiver valores iguais então começa alarm[1] novamente até as 4 ficarem diferente
Bom estou precisando de uma ajudinha aqui porque to batendo cabeça. Não sou muito experiente em GML mas acredito que não deve ser dificil isso que vou perguntar =/
Bom, eu tenho 4 variaveis ( na verdade são 20 mas vamos comçar co 4 )
item_1= obj_caixa
item_2= obj_morango
item_3= obj_banana
item_4= obj_arroz
até ai tudo bem...agora quero embaralhar esses itens aleatoriamente e colocar em uma das 4 posições que inventei vamos lá
// SORTEIANDO
evento alarm[1]
posicao_1= choose(item_1,item_2,item_3,item_4)
posicao_2= choose(item_1,item_2,item_3,item_4)
posicao_3= choose(item_1,item_2,item_3,item_4)
posicao_4= choose(item_1,item_2,item_3,item_4)
Bom a minha dúvida está exatamente ai.....as variaveis posicao não podem ser iguais..eu queria saber como fazer assim por exemplo
SE AS 4 VARIAVEIS "posicao" tiver valores iguais então começa alarm[1] novamente até as 4 ficarem diferente
Última edição por Adriano Heartless em Seg 26 Mar 2012, 16:37, editado 1 vez(es)
Re: [DÚVIDA RAPIDA] condição para determinar valores diferente nas variaveis
cara vc pode fazer assim
irandom(4)=variavel
if irandom=1
{
//tal coisa acontece
}
se vc usar choose o choose pode escolher mais de um.
Duvida questione novamente.
irandom(4)=variavel
if irandom=1
{
//tal coisa acontece
}
se vc usar choose o choose pode escolher mais de um.
Duvida questione novamente.
Zero.- Data de inscrição : 19/08/2010
Reputação : 47
Número de Mensagens : 1300
Prêmios :
x 0 x 0 x 0
x 1 x 0 x 0
x 0 x 0 x 0
Re: [DÚVIDA RAPIDA] condição para determinar valores diferente nas variaveis
Caro Adriano Heartless, para solucionar seu problema poderíamos pensar da seguinte forma: a cada valor sorteado, esse passa a ser excluído dos próximos sorteios. Na prática, seria um código mais ou menos com essa estrutura:
Mas, dessa forma, não funcionaria, pois não declaramos, ou seja, "dissemos" que, após um valor ser sorteado, ele deveria ser descartado. Para tal deveríamos usar uma estrutura nesse formato:
Esse script será complicado de você entender, primeiramente te recomendo, caso não conheça, pesquisar as estrutura condicionais if e for, pois não a explicarei aqui. Nessa estrutura que passei, p é a variável definida para estabelecer quando o valor que deve ser eliminado foi detectado. O for compara todos os valores da array, que tem sua dimensão definida em n, até achar o valor que se deseja eliminar, ponto em que define p=1. A partir desse momento, todas as variáveis da array recebem o valor da que vem a frente delas, ou seja, os valores são reorganizados. Se desconhece o que é uma array, terá que pesquisar também.
Assim, o código final seria:
Eu poderia simplificar mais esse código aplicando mais uma array e mais algumas estruturas for, mas prefiro deixar-te pensar sobre essa solução mais simples. Ok?
Qualquer dúvida é só falar.
- Código:
n=4;
v[0]=item_1;
v[1]=item_2;
v[2]=item_3;
v[3]=item_4;
posicao_1=choose(v[0],v[1],v[2],v[3]);
posicao_2=choose(v[0],v[1],v[2]);
posicao_3=choose(v[0],v[1]);
posicao_4=choose(v[0]);
Mas, dessa forma, não funcionaria, pois não declaramos, ou seja, "dissemos" que, após um valor ser sorteado, ele deveria ser descartado. Para tal deveríamos usar uma estrutura nesse formato:
- Código:
p=0;
for(i=0; i<n; i+=1){
if(v[i]=vs;){p=1;}
if(p=1){v[i]=v[i+1];}}
Esse script será complicado de você entender, primeiramente te recomendo, caso não conheça, pesquisar as estrutura condicionais if e for, pois não a explicarei aqui. Nessa estrutura que passei, p é a variável definida para estabelecer quando o valor que deve ser eliminado foi detectado. O for compara todos os valores da array, que tem sua dimensão definida em n, até achar o valor que se deseja eliminar, ponto em que define p=1. A partir desse momento, todas as variáveis da array recebem o valor da que vem a frente delas, ou seja, os valores são reorganizados. Se desconhece o que é uma array, terá que pesquisar também.
Assim, o código final seria:
- Código:
n=4;
v[0]=item_1;
v[1]=item_2;
v[2]=item_3;
v[3]=item_4;
posicao_1=choose(v[0],v[1],v[2],v[3]);
vs=posicao_1;
for(i=0; i<n; i+=1){
if(v[i]=vs;){p=1;}
if(p=1){v[i]=v[i+1];}}
posicao_2=choose(v[0],v[1],v[2]);
vs=posicao_2;
for(i=0; i<n; i+=1){
if(v[i]=vs;){p=1;}
if(p=1){v[i]=v[i+1];}}
posicao_3=choose(v[0],v[1]);
vs=posicao_3;
for(i=0; i<n; i+=1){
if(v[i]=vs;){p=1;}
if(p=1){v[i]=v[i+1];}}
posicao_4=choose(v[0]);
Eu poderia simplificar mais esse código aplicando mais uma array e mais algumas estruturas for, mas prefiro deixar-te pensar sobre essa solução mais simples. Ok?
Qualquer dúvida é só falar.
JonathanMatemático- Data de inscrição : 17/03/2012
Reputação : 1
Número de Mensagens : 33
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [DÚVIDA RAPIDA] condição para determinar valores diferente nas variaveis
Interessante
Jonatan como essa estrutura se chama e onde posso estuda-la e pra que ela serve ?
@Topico
Ah vc quer escluir um após selecionar ele aleatoriamente ?
se não o random serve
Jonatan como essa estrutura se chama e onde posso estuda-la e pra que ela serve ?
@Topico
Ah vc quer escluir um após selecionar ele aleatoriamente ?
se não o random serve
Zero.- Data de inscrição : 19/08/2010
Reputação : 47
Número de Mensagens : 1300
Prêmios :
x 0 x 0 x 0
x 1 x 0 x 0
x 0 x 0 x 0
Re: [DÚVIDA RAPIDA] condição para determinar valores diferente nas variaveis
Não sei se ele quer excluir, mas foi a ideia que tive. É que não conhecia o código random, é mais eficiente no caso. Mas ficam as duas soluções para enriquecer a resposta.
As propriedades da GML que usei foram: if, for e array.
O if é a condição básica que checa um estado finito de uma ou mais variáveis, o for é um loop (algo que se repete) que, dentro de sua própria estrutura, cria uma sequência lógica, no caso da minha estrutura, o for faz i+=1 a cada reinício. Muito útil, ferramenta que simplifica códigos de dezenas de linhas em algumas unidades.
E array é uma tabela, onde, em uma única variável, se declaram finitos valores que são, até onde sei, virtualmente ilimitados.
Material sobre tudo que citei pode ser encontrado no fórum, tanto que em minha época de primeiro contato com a GML, foi assim que aprendi, tutoriais da GMBR.
Qualquer dúvida, é só emendar aí.
As propriedades da GML que usei foram: if, for e array.
O if é a condição básica que checa um estado finito de uma ou mais variáveis, o for é um loop (algo que se repete) que, dentro de sua própria estrutura, cria uma sequência lógica, no caso da minha estrutura, o for faz i+=1 a cada reinício. Muito útil, ferramenta que simplifica códigos de dezenas de linhas em algumas unidades.
E array é uma tabela, onde, em uma única variável, se declaram finitos valores que são, até onde sei, virtualmente ilimitados.
Material sobre tudo que citei pode ser encontrado no fórum, tanto que em minha época de primeiro contato com a GML, foi assim que aprendi, tutoriais da GMBR.
Qualquer dúvida, é só emendar aí.
JonathanMatemático- Data de inscrição : 17/03/2012
Reputação : 1
Número de Mensagens : 33
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [DÚVIDA RAPIDA] condição para determinar valores diferente nas variaveis
Embaralhar valores é exatamente como JonathanMatemático fez, escolher um e exclui-lo do próximo sorteio.
Mas isso é uma ação rotineira então o GML para facilitar nossa vida tem recursos para lidar com isso, o problema é que eles estão meio escondidos e pouca gente os percebe ou lembra deles (inclusive eu).
Para 20 valores a solução do JonathanMatemático seria bem complicada mas usando datas estruturadas simplificaria.
Primeiro você cria uma ds_list e coloca todos os valores nela :
Ai é só recuperar-los com algo assim:
Não crie 20 variáveis para uma mesma finalidade em comum!
Um array ou uma list é muito mais eficiente e fácil de se controlar.
Mas isso é uma ação rotineira então o GML para facilitar nossa vida tem recursos para lidar com isso, o problema é que eles estão meio escondidos e pouca gente os percebe ou lembra deles (inclusive eu).
Para 20 valores a solução do JonathanMatemático seria bem complicada mas usando datas estruturadas simplificaria.
Primeiro você cria uma ds_list e coloca todos os valores nela :
- Código:
lista = ds_list_create();
ds_list_add(lista,item1);
ds_list_add(lista,item2);
....
Ai é só recuperar-los com algo assim:
- Código:
for (i = 0; i < ds_list_size(lista); i += 1) {
posicao[i] = ds_list_find_value(lista,i);
}
Não crie 20 variáveis para uma mesma finalidade em comum!
Um array ou uma list é muito mais eficiente e fácil de se controlar.
Re: [DÚVIDA RAPIDA] condição para determinar valores diferente nas variaveis
A melhor forma de fazer isso realmente é usando array ou lista.
Mas se você é inexperiente em programação, array pode ser um conceito meio complexo de entender (Na verdade é bem simples, mas sempre vejo muita gente tendo dificuldade pra entender)
Vai uma sugestão sem array, que vai ficar um código bem mais longo, mas talvez mais facil de entender:
Como você pode perceber, é simples de entender, mas com muitos itens vai ficar um código extremamente longo e confuso. Você pode ser sagaz e transformar isso num script, é muito mais inteligente.
Ou você pode ser ainda MAIS sagaz, e realmente estudar um pouquinho sobre arrays e lista, e perceber que são recursos muito mais apropriados para você fazer o que precisa Essa mesma lógica que eu apliquei no código acima ficaria muito mais simples e reduzida com a utilização de um array
Mas se você é inexperiente em programação, array pode ser um conceito meio complexo de entender (Na verdade é bem simples, mas sempre vejo muita gente tendo dificuldade pra entender)
Vai uma sugestão sem array, que vai ficar um código bem mais longo, mas talvez mais facil de entender:
- Código:
item_1= obj_caixa
item_2= obj_morango
item_3= obj_banana
item_4= obj_arroz
item_troca = null
//muda o item1 de lugar aleatoriamente com outro
sorteio = ceil(random(4))
if sorteio == 2
{
item_troca = item_1
item_1 = item_2
item_2 = item_troca
}
if sorteio == 3
{
item_troca = item_1
item_1 = item_2
item_3 = item_troca
}
if sorteio == 4
{
item_troca = item_1
item_1 = item_3
item_3 = item_troca
}
//muda o item2 de lugar aleatoriamente com outro
sorteio = ceil(random(4))
if sorteio == 1
{
item_troca = item_2
item_2 = item_1
item_1 = item_troca
}
if sorteio == 3
{
item_troca = item_2
item_2 = item_3
item_3 = item_troca
}
if sorteio == 4
{
item_troca = item_2
item_2 = item_4
item_4 = item_troca
}
//muda o item3 de lugar aleatoriamente com outro
sorteio = ceil(random(4))
if sorteio == 1
{
item_troca = item_3
item_3 = item_1
item_1 = item_troca
}
if sorteio == 2
{
item_troca = item_3
item_3 = item_2
item_2 = item_troca
}
if sorteio == 4
{
item_troca = item_3
item_3 = item_4
item_4 = item_troca
}
//muda o item4 de lugar aleatoriamente com outro
sorteio = ceil(random(4))
if sorteio == 1
{
item_troca = item_4
item_4 = item_1
item_1 = item_troca
}
if sorteio == 2
{
item_troca = item_4
item_4 = item_2
item_2 = item_troca
}
if sorteio == 3
{
item_troca = item_4
item_4 = item_3
item_3 = item_troca
}
Como você pode perceber, é simples de entender, mas com muitos itens vai ficar um código extremamente longo e confuso. Você pode ser sagaz e transformar isso num script, é muito mais inteligente.
Ou você pode ser ainda MAIS sagaz, e realmente estudar um pouquinho sobre arrays e lista, e perceber que são recursos muito mais apropriados para você fazer o que precisa Essa mesma lógica que eu apliquei no código acima ficaria muito mais simples e reduzida com a utilização de um array
Tópicos semelhantes
» Dúvida nos valores de variáveis
» duvida rapida sobre controle e variaveis
» Sinal de diferente e ! para variaveis
» [RESOLVIDO] Dúvida rápida sobre Variáveis e argumentos
» [DUVIDA] - Inimigos, mesmo objeto momiventação diferente para instancia
» duvida rapida sobre controle e variaveis
» Sinal de diferente e ! para variaveis
» [RESOLVIDO] Dúvida rápida sobre Variáveis e argumentos
» [DUVIDA] - Inimigos, mesmo objeto momiventação diferente para instancia
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|