aleatório, mas não repetitivo

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

tem como escolher um numero aleatório e nao repetir o numero escolhido?

75% 75% 
[ 3 ]
25% 25% 
[ 1 ]
0% 0% 
[ 0 ]
 
Total dos votos : 4

aleatório, mas não repetitivo

Mensagem por tomxope em Sab 05 Out 2013, 21:24

ola pessoa. a minha duvida consiste no seguinte: tem como escolher um valor aleatório e depos nao repetir o valor já escolhido, ate não tiver mas nenhum valor para ele escolher, então repete. si tiver, isso tornaria o meu jogo e a engine que vou postar no topico: "show message- meu problema tem solução?" (no momento a net usada nao da pra por link) depois dou um edit.
exemplo: no evento colisão do play com o obj_x
(codigo que escolhe aleatóriamente um valor, tipo "random(6)")
case 0= pergunta1
case 1= pergunta2
case 2= pergunta3
case 3= pergunta4
case 4= pergunta5
case 5= pergunta6
suponhamos que ele escolhe o case 3, tem como fazer que na proxima vez que o play colidir com o obj_x, o case 3 não seja mas mas escolhido, a menos que todos os case já foram usado?
obs: isso foi so um exemplo do que eu quero, nada de fazer um edit ou citação dos codigos escrito o exemplo e dizer: está errado!!!
obs1: pode nao ser usado o random e case. qualquer coisa que se encaixa no que eu quero, tipo: variavel pergunta=100 variavel pergunta=random(100)... escolhe um numero que nao sera repetido. 95% de mim diz que não. por ser "random" nao temos control sobre ele. os 5% pode ser o vencedor.
obs2:ajudam pessoal.

tomxope

Número de Mensagens : 48
Data de inscrição : 14/09/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: aleatório, mas não repetitivo

Mensagem por Klior em Sab 05 Out 2013, 22:06

Olá, existem muitas algumas maneiras de fazer isso, acredito que a mais confiável é usar ds_list. Vou postar um exemplo para que você possa entender melhor.

Código:
list = ds_list_create(); //Criar a lista
ds_list_add(list, "Pergunta 0"); //Adicionar a pergunta 1 na lista
ds_list_add(list, "Pergunta 1");
ds_list_add(list, "Pergunta 2");
ds_list_add(list, "Pergunta 3");
ds_list_add(list, "Pergunta 4");

ds_list_shuffle(list); //Embaralha os valores na lista de forma que eles acabam em uma ordem aleatória.

repeat (5) {
show_message(ds_list_find_value(list, 0)); //Mostra a primeira pergunta, depois delas serem embaralhadas.
ds_list_delete(list, 0); //Apaga essa pergunta para que ela não apareça novamente.
}

//A ideia é sempre usar o "ds_list_find_value" na posição 0 (primeira pergunta), e apagar ela, fazendo isso repetidamente até perminar as perguntas.

Klior

Número de Mensagens : 426
Idade : 25
Data de inscrição : 07/03/2010
Reputação : 13
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: aleatório, mas não repetitivo

Mensagem por tomxope em Dom 06 Out 2013, 07:43

tem!!! 95% de mim estava errado!!! vou entender bem isso de "ds_list". si da para usar ele no envento draw. já comecei a ler na documentação do gm. visto que existem muitas maneiras de fazer, alguem pode sugerir outras? obrigado klior!!!!!!! outra coisa: show_message pode ser trocado com outra coisa? tipo um objecto?

tomxope

Número de Mensagens : 48
Data de inscrição : 14/09/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: aleatório, mas não repetitivo

Mensagem por Conteúdo patrocinado Hoje à(s) 16:03


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