Entrar
Últimos assuntos
» player não consegue andarpor lovn7 Qui 21 Nov 2024, 13:33
» É possível fazer istó no game maker
por William Lima Qui 21 Nov 2024, 10:56
» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por Lua Sáb 16 Nov 2024, 20:22
» (Resolvido) Cenario longo x Texture Pages
por josuedemoraes Sáb 16 Nov 2024, 15:31
» Kids' band
por Adilson Lucindo Santos Sex 15 Nov 2024, 12:23
» (RESOLVIDO) Engasgos-Troca de Sprites/animações
por josuedemoraes Ter 12 Nov 2024, 01:49
» Block Room - DEMO
por Joton Qua 06 Nov 2024, 22:58
» Game Infinito vertical (subindo)
por macmilam Sáb 26 Out 2024, 12:36
» Retorno da GMBR!!!
por Dancity Ter 22 Out 2024, 16:36
» Máquina de estados
por aminaro Qui 10 Out 2024, 13:33
» como faço pra um objeto colidir com o outro e diminuir a vida do player ?
por josuedemoraes Qui 03 Out 2024, 16:51
» RESOLVIDO: Colisão com objetos moveis
por josuedemoraes Qua 02 Out 2024, 20:28
» Crypt of the Blood Moon
por divin sphere Qua 11 Set 2024, 18:18
» como fazer um objeto seguir?
por divin sphere Dom 18 Ago 2024, 18:08
» Procuro de alguém para Modelar/Texturizar/Animar objetos 3D
por un00brn Dom 11 Ago 2024, 11:10
» Destruição de cenário (estilo DD Tank)
por CoronelZeg Sex 09 Ago 2024, 17:16
» RESOLVIDO-Como destruir uma instancia especifica de um objeto
por josuedemoraes Ter 23 Jul 2024, 00:40
» Automatizar a coleta de id
por GabrielXavier Seg 22 Jul 2024, 18:01
» Preciso de ajuda para concluir um pequeno projeto
por lmoura Qui 27 Jun 2024, 15:45
» ANGULO ACOMPANHAR O OBJETO
por Klinton Rodrigues Qui 27 Jun 2024, 08:34
» Musica reinicia quando sala reinicia
por GabrielXavier Ter 18 Jun 2024, 07:28
» como fazer uma copia de gd
por generico_cube Sex 14 Jun 2024, 15:48
» Square Adventure
por guilherme551 Ter 11 Jun 2024, 09:54
» como posso definir limite de uma variavel
por GabrielXavier Sex 07 Jun 2024, 14:14
» [Resolvido] Dúvida, colisão única de objeto
por vdm842 Sex 24 maio 2024, 09:50
Random 5 veses sem repetir o mesmo valor
+8
pedrosorio
Volstagg
rodrigo1434
Froidz
vinians
RKNF1995
Gusba
Janx
12 participantes
Página 1 de 2
Página 1 de 2 • 1, 2
Random 5 veses sem repetir o mesmo valor
è o seguinte:
tenho 5 objetos, dai eu quero que cada um ganhe um numero aleatorio de 0 a 4.
cada numero desses corresponde a um outro valor... para outra coisa
mas como eu fasso para fazer esses randoms sem repetir o valor???
tenho 5 objetos, dai eu quero que cada um ganhe um numero aleatorio de 0 a 4.
cada numero desses corresponde a um outro valor... para outra coisa
mas como eu fasso para fazer esses randoms sem repetir o valor???
Janx- Data de inscrição : 24/05/2008
Reputação : 14
Número de Mensagens : 2417
Prêmios :
x 0 x 0 x 0
x 0 x 2 x 0
x 0 x 0 x 0
Re: Random 5 veses sem repetir o mesmo valor
acho que ele quer que apareça 5 numeros aleatorias mas que nao se repitam
Re: Random 5 veses sem repetir o mesmo valor
Coloque no evento CREATE em um objeto de inicializacao:
- Código:
randomize();
- Código:
numero = ceil(random(5));
Re: Random 5 veses sem repetir o mesmo valor
noossa explica porfavor?? O_O!"
Janx- Data de inscrição : 24/05/2008
Reputação : 14
Número de Mensagens : 2417
Prêmios :
x 0 x 0 x 0
x 0 x 2 x 0
x 0 x 0 x 0
Re: Random 5 veses sem repetir o mesmo valor
será que criando 5 alarms resolveria o problema?
Soh uma sugestão ^^
Soh uma sugestão ^^
Froidz- Data de inscrição : 03/08/2008
Reputação : 4
Número de Mensagens : 1053
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Random 5 veses sem repetir o mesmo valor
Nao O.oClaudio Bruno escreveu:será que criando 5 alarms resolveria o problema?
Soh uma sugestão ^^
Janx- Data de inscrição : 24/05/2008
Reputação : 14
Número de Mensagens : 2417
Prêmios :
x 0 x 0 x 0
x 0 x 2 x 0
x 0 x 0 x 0
Re: Random 5 veses sem repetir o mesmo valor
Randomize() - Faz com que ao executar o seu jogo os números aleatórios gerados sejam sempre diferentes. Ele embaralha o gerador de números aleatórios. Assim quando voce usar a função random() ela vai funcionar melhor como se fosse um veradadeiro dado eletrônico. Você precisar executar a função randomize() ao menos uma vez em seus jogos se for utilizar números aleatórios. A função ceil() serve arredondar um número tipo 4.2 para o maior inteiro mais próximo do número. Você pode usar o floor() que faz o arredondamento para baixo. Tipo 4.2 vira 4. Usando o ceil() 4.2 vira 5. Então random(5) de 0 a 4.999 por isso uso o ceil(). Flw
Re: Random 5 veses sem repetir o mesmo valor
var=floor(random(4))
tenta esse
ou cria um objeto que ira criar esse objetos
var a;
a=0
repeat(5){
bola=instance_create(random(room_width),random(room_height),obj_bola)
with(bola) valordabola=a
a+=1}
tenta esse
ou cria um objeto que ira criar esse objetos
var a;
a=0
repeat(5){
bola=instance_create(random(room_width),random(room_height),obj_bola)
with(bola) valordabola=a
a+=1}
Última edição por rodrigo1434 em Dom 05 Out 2008, 20:21, editado 1 vez(es)
Re: Random 5 veses sem repetir o mesmo valor
rodrigo1434 escreveu:var=floor(random(4))
tenta esse
isso pode dar o mesmo numero mais de uma vez.
Vunians:
Cara, mas dai se um valor é 'escolhido', esse valor nao vai ser mais escolhido dinovo ateh eu recomeçar o jogo?? digamos... que caiu 8
dai nunca mais pode cair 8 ateh eu fexa o jogo e abrir dinovo??
Janx- Data de inscrição : 24/05/2008
Reputação : 14
Número de Mensagens : 2417
Prêmios :
x 0 x 0 x 0
x 0 x 2 x 0
x 0 x 0 x 0
Re: Random 5 veses sem repetir o mesmo valor
Na verdade o randomize() faz com que a aleatorização seja mais real. Se vc quizer garantir que nao dê igual armazene os numeros em um vetor.
No evento CREATE de um objeto coloque este código e execute pra vc como funciona:
*obs: código testado na versão 7 do GM[u]
No evento CREATE de um objeto coloque este código e execute pra vc como funciona:
- Código:
r[1] = 0; r[2] = 0; r[3] = 0; r[4] = 0; r[5] = 0;
randomize(); //prepara gerador aleatorio
ss = " ";
while (ss <> "AAAAA")
{
c = 0;
ss = "*****";
repeat (5)
{
c += 1;
r[c] = ceil(random(5)); //gera numero aleatório no vetor r
//coloca uma letra 'A' pra marcar a posição
s1 = string_copy(ss, 1, r[c] - 1);
s2 = string_copy(ss, r[c] + 1, string_length(ss) - r[c]);
ss = s1 + 'A' + s2;
}
}
c = 1; repeat(5) {r[c] = r[c] - 1; c += 1;}; //valores de 0 a 4 em r
//Depois que vc testar pode remover daqui pra baixo (é so pra mostrar como ficou)
c = 1; str = "-";
repeat(5) {str = str + string(r[c]) + "-"; c += 1; }
show_message('Numeros Gerados: ' + str);
*obs: código testado na versão 7 do GM[u]
Re: Random 5 veses sem repetir o mesmo valor
Que "codigozão" heim!
Volstagg- Data de inscrição : 16/05/2008
Reputação : 0
Número de Mensagens : 353
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Random 5 veses sem repetir o mesmo valor
Demasiado complicado esse código, e não faz sentido usar strings.
- Código:
r[4]=0;
randomize();
for(a=0;a<=4;a+=1) {
n=floor(random(200))+1;
nn=0;
while(n>0) {
while(r[nn]!=0)
nn=(nn+1) mod 5;
n-=1;
}
r[nn]=a+1;
}
Re: Random 5 veses sem repetir o mesmo valor
Sério? bem eu testei o seu código e ele não esta funcionando sempre retorna a mesma sequencia 1-2-3-4-5...pedrosorio escreveu:Demasiado complicado esse código, e não faz sentido usar strings.
- Código:
r[4]=0;
randomize();
for(a=0;a<=4;a+=1) {
n=floor(random(200))+1;
nn=0;
while(n>0) {
while(r[nn]!=0)
nn=(nn+1) mod 5;
n-=1;
}
r[nn]=a+1;
}
Re: Random 5 veses sem repetir o mesmo valor
LOL
É o que dá escrever código às tantas da noite sem testar, evidentemente faltava uma linha fundamental:
É o que dá escrever código às tantas da noite sem testar, evidentemente faltava uma linha fundamental:
- Código:
r[4]=0;
randomize();
for(a=0;a<=4;a+=1) {
n=floor(random(200))+1;
nn=0;
while(n>0) {
nn=(nn+1) mod 5;
while(r[nn]!=0)
nn=(nn+1) mod 5;
n-=1;
}
r[nn]=a+1;
}
Re: Random 5 veses sem repetir o mesmo valor
pedrosorio escreveu:LOL
É o que dá escrever código às tantas da noite sem testar, evidentemente faltava uma linha fundamental:
- Código:
r[4]=0;
randomize();
for(a=0;a<=4;a+=1) {
n=floor(random(200))+1;
nn=0;
while(n>0) {
nn=(nn+1) mod 5;
while(r[nn]!=0)
nn=(nn+1) mod 5;
n-=1;
}
r[nn]=a+1;
}
acho que não vai retornar o mesmo valor de antes.... pq tipo, o vetor r[4] vai adicionar sempre a sequência de 1 - 2 - 3 - 4 como mostra essa linha r[nn]=a+1; a meu ver tudo que está dentro do laço for será despresado.
@topic
não sei se o código do vinians explica isso, como não entendi vou perguntar... como que funciona exatamente esse randomize()? pois 1.2 é diferente de 1.3, mas como querem um inteiro vai ficar 1.. então se repetirá.
dani- Data de inscrição : 03/10/2008
Reputação : 0
Número de Mensagens : 30
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Random 5 veses sem repetir o mesmo valor
Portanto, dani, você acredita sinceramente que um código que usa strings para gerar números aleatórios é um código conciso e correcto. Mas não se dá sequer ao trabalho de analisar um algoritmo simples para gerar números aleatórios não repetidos?
A meu ver, a linha r[nn]=a+1 vai colocar na posição nn do array r, o valor a+1, (1,2,3,4,5). Evidentemente a aleatoriedade se encontra no 'nn', isto é, na posição do array onde é colocado o número.
O algoritmo limita-se a gerar um número aleatório 'n' e a percorrer o array em busca de posições que ainda não têm valores atribuídos. Cada vez que encontra uma dessas, diminui o 'n' até chegar a 0. Quando aqui chega atribui à posição actual 'nn' o valor designado. Temos assim uma posição perfeitamente aleatória. Já tinha aliás mostrado este algoritmo noutro tópico da gmbr.
Embora o ciclo não tenha que ser percorrido muitas vezes, a verdade é que não vale a pena estar a diminuir n até chegar a 0. Um pouco de aritmética modular simples resultaria no seguinte código equivalente:
Pode parecer que me limitei a adicionar código "desnecessário" mas se quisermos gerar uma lista de números aleatórios muito grande, este código executará bem mais rápido que a minha versão anterior.
A meu ver, a linha r[nn]=a+1 vai colocar na posição nn do array r, o valor a+1, (1,2,3,4,5). Evidentemente a aleatoriedade se encontra no 'nn', isto é, na posição do array onde é colocado o número.
O algoritmo limita-se a gerar um número aleatório 'n' e a percorrer o array em busca de posições que ainda não têm valores atribuídos. Cada vez que encontra uma dessas, diminui o 'n' até chegar a 0. Quando aqui chega atribui à posição actual 'nn' o valor designado. Temos assim uma posição perfeitamente aleatória. Já tinha aliás mostrado este algoritmo noutro tópico da gmbr.
Embora o ciclo não tenha que ser percorrido muitas vezes, a verdade é que não vale a pena estar a diminuir n até chegar a 0. Um pouco de aritmética modular simples resultaria no seguinte código equivalente:
- Código:
r[4]=0;
randomize();
for(a=0;a<=4;a+=1) {
n=floor(random(200))+1;
n=n mod (5-a);
if(n==0)
n=5-a;
nn=0;
while(n>0) {
nn=(nn+1) mod 5;
while(r[nn]!=0)
nn=(nn+1) mod 5;
n-=1;
}
r[nn]=a+1;
}
Pode parecer que me limitei a adicionar código "desnecessário" mas se quisermos gerar uma lista de números aleatórios muito grande, este código executará bem mais rápido que a minha versão anterior.
Página 1 de 2 • 1, 2
Tópicos semelhantes
» Como fazer imagen random sem repetir?
» Repetir time line e fazer step ser random
» Como gravar o valor de uma variavel em um arquivo e ao abrir o jogo carregar o valor
» [resolvido]Como fazer o mesmo objeto ir para o mesmo local com caminhos diferentes?
» [resolvido] Como contar tantas veses de algo?
» Repetir time line e fazer step ser random
» Como gravar o valor de uma variavel em um arquivo e ao abrir o jogo carregar o valor
» [resolvido]Como fazer o mesmo objeto ir para o mesmo local com caminhos diferentes?
» [resolvido] Como contar tantas veses de algo?
Página 1 de 2
Permissões neste sub-fórum
Não podes responder a tópicos