Random usar "exceto"

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

Random usar "exceto"

Mensagem por AlexBosquin em Qui 13 Fev 2014, 21:17

Bom como diz no tópico eu olhei muito sobre random no fórum, mas nada sobre o que quero

vamos supor estou usando:

CREATE:
Código:
X = 288

STEP:
Código:

irandom(X)//sorteia de 0 a 288 pois X é 288

quero que em certo momento eu possa impedir que esse sorteio escolha um numero por exemplo o 32 como eu faço isso?


AlexBosquin

Ranking : Nota C
Número de Mensagens : 621
Idade : 20
Data de inscrição : 10/07/2012
Notas recebidas : C
Reputação : 35
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

http://www.craftstudios.com.br

Voltar ao Topo Ir em baixo

Re: Random usar "exceto"

Mensagem por PedroX em Qui 13 Fev 2014, 21:22

Código:
X = 10;
a = irandom(X)
while(a==1 or a==2 or a==3)
{
a = irandom(X);
}
show_message(a);

Você pode usar um loop que não para até achar um número válido, no caso o while.

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: Random usar "exceto"

Mensagem por AlexBosquin em Qui 13 Fev 2014, 21:37

nesse caso ai ele ta definindo os números que podem aparecer pelo que entendi, mas eu quero que mostrar pra ele os que não podem ser escolhidos pois os que podem ser escolhidos podem ser infinitos xD

AlexBosquin

Ranking : Nota C
Número de Mensagens : 621
Idade : 20
Data de inscrição : 10/07/2012
Notas recebidas : C
Reputação : 35
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

http://www.craftstudios.com.br

Voltar ao Topo Ir em baixo

Re: Random usar "exceto"

Mensagem por PedroX em Qui 13 Fev 2014, 21:40

É o contrário.

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: Random usar "exceto"

Mensagem por AlexBosquin em Qui 13 Fev 2014, 21:50

bom, eu testei aqui e ele fez o sorteio somente selecionar um numero, e depois só ele, não variava mais!

AlexBosquin

Ranking : Nota C
Número de Mensagens : 621
Idade : 20
Data de inscrição : 10/07/2012
Notas recebidas : C
Reputação : 35
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

http://www.craftstudios.com.br

Voltar ao Topo Ir em baixo

Re: Random usar "exceto"

Mensagem por saim em Sab 15 Fev 2014, 20:36

AlexBosquin escreveu:bom, eu testei aqui e ele fez o sorteio somente selecionar um numero, e depois só ele, não variava mais!
Foi o que você pediu. Se quer que fique variando, coloque o código no step ou num alarm.

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Re: Random usar "exceto"

Mensagem por AlexBosquin em Dom 16 Fev 2014, 07:21

que estranho eu pedi ajuda pro alex ele me passou um código bem semelhante acontece que:

quero criar um gerador de blocos em posições aleatórias, só que quando eu negar uma posição por exemplo: x ser 32 então o random não pode ser 32 mas esses dois códigos que usei não funfam, ou se você souber um sistema que cheque isto!

AlexBosquin

Ranking : Nota C
Número de Mensagens : 621
Idade : 20
Data de inscrição : 10/07/2012
Notas recebidas : C
Reputação : 35
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

http://www.craftstudios.com.br

Voltar ao Topo Ir em baixo

Re: Random usar "exceto"

Mensagem por saim em Dom 16 Fev 2014, 20:11

...
cara, é o while!
Gere um número aleatório. Repita até ele não ser nenhum dos números proibidos.
Pra testar, faça alguns testes. Bom, isso soou bem mais idiota escrito do que estava na minha cabeça... Mas não tem outro jeito de falar, tem?
Faz assim, pegue um universo pequeno, tipo, de 0 a 10. Pegue um número pra ser proibido. Não, pegue uns três. 5, 8 e 9.
No step (de um objeto novo de um jogo novo, não polua seu projeto com isso!) coloque:
Código:
var teste; teste := irandom(10); // dá um valor qualquer
while (teste == 5 or teste == 8 or teste == 9){ // enquanto for qualquer valor proibido
teste := irandom(10); // repete a mistura
}

// verificação
if (teste == 5 or teste == 8 or teste == 9){ // se passou
show_message("falhou. teste deu igual a " + string(teste)); // mostra o erro
}
Note que não coloquei "show_debug_message". Porque estou confiante assim que não vai dar nenhum valor proibido.

Pode colocar o room_speed pra 60. Se em alguns segundos a mensagem NÃO aparecer, o código deu certo.

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Re: Random usar "exceto"

Mensagem por AlexBosquin em Dom 16 Fev 2014, 20:17

justamente saim, o codigo não vai funcionar pra mim, mesmo ele estando certo, isso porque ele vai passar pelo numero proibido entende, ou seja ele não pode passar por esse número, isso porque ele cria o bloco quando o passa pelo numero!

AlexBosquin

Ranking : Nota C
Número de Mensagens : 621
Idade : 20
Data de inscrição : 10/07/2012
Notas recebidas : C
Reputação : 35
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

http://www.craftstudios.com.br

Voltar ao Topo Ir em baixo

Re: Random usar "exceto"

Mensagem por Kapoty em Dom 16 Fev 2014, 22:41

Então crie um script:

Código:
//script(x,numero_de_exceções,exceção_1,exceção_2,...)
var rd_list,rd_v;
rd_list=ds_list_create();
for(i=1;i<=argument1;i+=1) {
    ds_list_add(rd_list,argument[i+1]);
}
do
{
    rd_v = irandom(argument0);;
}
until (ds_list_find_index(rd_list,rd_v)<0);
ds_list_destroy(rd_list);
return rd_v;

Use-o no lugar de irandom.

Kapoty

Ranking : Nota B
Número de Mensagens : 635
Data de inscrição : 05/11/2011
Notas recebidas : E + D + C + B + D +B + A
Reputação : 22
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 1

Voltar ao Topo Ir em baixo

Re: Random usar "exceto"

Mensagem por saim em Dom 23 Fev 2014, 12:57

AlexBosquin escreveu:justamente saim, o codigo não vai funcionar pra mim, mesmo ele estando certo, isso porque ele vai passar pelo numero proibido entende, ou seja ele não pode passar por esse número, isso porque ele cria o bloco quando o passa pelo numero!
Não entendi. O código não vai nunca te retornar o valor proibido, seja ele qual for, mesmo que ele varie.
Se você quer que nunca retorne 32, não vai retornar 32. Se não quer que te retorne o valor atual de "x", não vai retornar o valor atual de "x".
Como assim, "passar pelo numero proibido"?

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Re: Random usar "exceto"

Mensagem por AlexBosquin em Dom 23 Fev 2014, 13:24

é como se fosse pra não poder nunca passar pelo 32, entende!

AlexBosquin

Ranking : Nota C
Número de Mensagens : 621
Idade : 20
Data de inscrição : 10/07/2012
Notas recebidas : C
Reputação : 35
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

http://www.craftstudios.com.br

Voltar ao Topo Ir em baixo

Re: Random usar "exceto"

Mensagem por saim em Dom 23 Fev 2014, 23:37

Ainda não... Porque não pode passar pelo 32 se o resultado nunca vai ser (no caso) 32?

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Re: Random usar "exceto"

Mensagem por AlexBosquin em Seg 24 Fev 2014, 12:57

mano deixa eu te explicar let's exclarecer a bagaça HHEHEHEHEHEH

so quero um sistema que randomize a posição de blocos gerados aleatoriamente entre 32x e 288x
só pq por exemplo eu não quero que ele possa sair na posição 64x então o codigo não pode ter 64x incluido no random, entendeu?

AlexBosquin

Ranking : Nota C
Número de Mensagens : 621
Idade : 20
Data de inscrição : 10/07/2012
Notas recebidas : C
Reputação : 35
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

http://www.craftstudios.com.br

Voltar ao Topo Ir em baixo

Re: Random usar "exceto"

Mensagem por PedroX em Seg 24 Fev 2014, 16:53

Alex, você deveria ter tentado adaptar o código passado.

Bom, pra gerar um bloco, você usa qual evento? Create?

Se for o Create / Room Start / Game Start ou qualquer outro evento que aconteça uma única vez, você faz assim:

Código:
lista = ds_list_create();
posicao = irandom(10);

repeat(numero_blocos)
{
while(ds_list_find_index(lista, posicao)!=-1)
posicao = irandom(10);

ds_list_add(lista, posicao);
instance_create(posicao*32, posicao_y, Bloco);
}


PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: Random usar "exceto"

Mensagem por AlexBosquin em Seg 24 Fev 2014, 17:33

eu não sei usar ds lists, e eu uso o envento step pois o numero de blocos a ser gerado são infinitos pois o game é endless run(nunca acaba!)

AlexBosquin

Ranking : Nota C
Número de Mensagens : 621
Idade : 20
Data de inscrição : 10/07/2012
Notas recebidas : C
Reputação : 35
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

http://www.craftstudios.com.br

Voltar ao Topo Ir em baixo

Re: Random usar "exceto"

Mensagem por PedroX em Seg 24 Fev 2014, 17:37

Então você precisa aprender a usar ds_lists. E o código serve no Step, desde que seja adaptado. Fale se precisar de ajuda com lists.

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: Random usar "exceto"

Mensagem por AlexBosquin em Seg 24 Fev 2014, 17:42

o tutorial de ds_list que tem aqui no fórum não cita exemplos, se souber de outros eu gostaria de recomendações!

AlexBosquin

Ranking : Nota C
Número de Mensagens : 621
Idade : 20
Data de inscrição : 10/07/2012
Notas recebidas : C
Reputação : 35
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

http://www.craftstudios.com.br

Voltar ao Topo Ir em baixo

Re: Random usar "exceto"

Mensagem por PedroX em Seg 24 Fev 2014, 17:47

ds_lists são como listas de mercado.

a = ds_list_create() // criei uma lista

ds_list_add(a, 'valor') // adicionei um valor na lista, ele está na posição 0
ds_list_add(a, 20) // adicionei um outro valor na lista, ele está na posição 1

ds_list_find_index(a, 20) //vai pesquisar onde está 20 na lista, ou seja, 1

ds_list_find_value(a, 0) // vai pegar o valor na posição 0, ou seja, 'valor'

E por aí vai.

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: Random usar "exceto"

Mensagem por AlexBosquin em Seg 24 Fev 2014, 18:52

interessante gostei mesmo, resumido e bem explicado, vlw ae

AlexBosquin

Ranking : Nota C
Número de Mensagens : 621
Idade : 20
Data de inscrição : 10/07/2012
Notas recebidas : C
Reputação : 35
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

http://www.craftstudios.com.br

Voltar ao Topo Ir em baixo

Re: Random usar "exceto"

Mensagem por Conteúdo patrocinado Hoje à(s) 05:56


Conteúdo patrocinado


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