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
[Resolvido]Criar Objetos aleatórios em lugares específicos
3 participantes
Página 1 de 1
[Resolvido]Criar Objetos aleatórios em lugares específicos
Olá, boa noite.
Tenho 12 objetos.
Eu queria que estes objetos aparecessem ALEATORIAMENTE no centro da room,
fazendo 3 linhas e 4 colunas. Ou seja existem apenas 12 lugares que
eles podem ocupar, de forma aleatória e sem um ocupar o espaço do outro.
Além disso o sprite de cada um dos 12 objetos possui 5 frames (image0, image1, image2 e image3), gostaria que estes frames de cada sprite fossem sorteados aleatoriamente tbm no momento do objeto aparecer.
Obrigado desde já,
_____________
Tenho 12 objetos.
Eu queria que estes objetos aparecessem ALEATORIAMENTE no centro da room,
fazendo 3 linhas e 4 colunas. Ou seja existem apenas 12 lugares que
eles podem ocupar, de forma aleatória e sem um ocupar o espaço do outro.
Além disso o sprite de cada um dos 12 objetos possui 5 frames (image0, image1, image2 e image3), gostaria que estes frames de cada sprite fossem sorteados aleatoriamente tbm no momento do objeto aparecer.
Obrigado desde já,
_____________
Última edição por 100%Dedicada em Qua 18 Fev 2015, 09:48, editado 1 vez(es)
100%Dedicada- Data de inscrição : 20/01/2015
Reputação : 4
Número de Mensagens : 21
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Resolvido]Criar Objetos aleatórios em lugares específicos
Você pode usar random(num), que devolve um numero aleatório entre 0 e num
Um exemplo para você usar isso na pratica para o problema:
Pra alterar a sprite você usa no Create:
- Código:
a = random(5);
//a pode ter valores de 0 até 4.99
- Código:
a = choose(0,1,5,46);
//a pode ser 0 ou 1 ou 5 ou 46 ou qualquer outro numero
Um exemplo para você usar isso na pratica para o problema:
- Código:
var pos_x,pos_y,numero,criar_x,criar_y;
pos_x = ds_list_create();//Lista com posiçoes de x
pos_y = ds_list_create();//Lista com posições de y
ds_list_add(pos_x,100);//Posicao 1 x
ds_list_add(pos_y,100);//Posicao 1 y
ds_list_add(pos_x,200);//Posicao 2 x
ds_list_add(pos_y,100);//Posicao 2 y
ds_list_add(pos_x,100);//Posicao 3 x
ds_list_add(pos_y,200);//Posicao 3 y
//e continua até onde você quiser
while(ds_list_size(pos_x)>0){
numero = floor(random(ds_list_size(pos_x)));//flor arredonda o numero para menos(ex.: 2.7 = 2 , 3.9 = 3)
criar_x = ds_list_find_value(pos_x,numero);
criar_y = ds_list_find_value(pos_y,numero);
ds_list_delete(pos_x,numero);
ds_list_delete(pos_y,numero);
instance_create(criar_x,criar_y,obj);
}
Pra alterar a sprite você usa no Create:
- Código:
image_index=choose(0,1,2,3)
Rodrigo Santiago- Games Ranking :
Notas recebidas : C + C + B
Data de inscrição : 28/07/2012
Reputação : 73
Número de Mensagens : 1281
Prêmios :
x 0 x 0 x 0
x 3 x 1 x 3
x 0 x 0 x 0
Re: [Resolvido]Criar Objetos aleatórios em lugares específicos
Suponho que estes 12 objetos não podem se repetir... Para fazer isso, use ds_list.
Primeiro, no create, declare-a e armazene seu ID em uma var:
Pronto, a lista está criada. Agora, ainda no create, vamos criar um for encadeado que será responsável por fazer as colunas e as fileiras, e em seguida, sortear.
Primeiro, você deve alterar o seed do random do GM, para isto basta:
Usarei como referencia o ponto 0,0 da tela, poranto, o "alinhamento" dela será superior-esquerdo. Você deverá alterar isso depois. Também estou supondo que o tamanho do objeto seja um quadrado de 48 px.
E pronto. Temos o sistema que cria objetos em posições aleatórias sem se repetir. Para alterar o ponto de refencia, basta adicionar um "extra" antes do x/y setados acima. Por exemplo, supondo que queira uma "margem" de 100 px em x e 200 px em y:
Se tudo está correto (não estou testando, diga-se de passagem...), sua primeira dúvida está resolvida. A segunda pergunta é simples:
E ufa... Ai está!
[Edit]
Rodrigo... Seu danado...
Não vou apagar esse textão todo só porque você respondeu primeiro.
Primeiro, no create, declare-a e armazene seu ID em uma var:
- Código:
List = ds_list_create();
- Código:
ds_list_add(Lista,obj1,obj2,obj3...);
Pronto, a lista está criada. Agora, ainda no create, vamos criar um for encadeado que será responsável por fazer as colunas e as fileiras, e em seguida, sortear.
- Código:
for (i=0;i<3;i++){ //Linhas
for(ii=0;ii<4ii++){ //Colunas
//Código em breve...
}
}
Primeiro, você deve alterar o seed do random do GM, para isto basta:
- Código:
randomize();
- Código:
Size = ds_list_size(Lista); //Pega o tamanho da lista
R = irandom(Size); //sorteia um número inteiro entre 0 e Size.
- Código:
Obj = ds_list_find_value(Lista, R); //Pegamos um dos objetos da lista
ds_list_delete(Lista,R); //Tiramos o objeto anteriormente pego da lista.
- Código:
instance_create(x,y,Obj);
Usarei como referencia o ponto 0,0 da tela, poranto, o "alinhamento" dela será superior-esquerdo. Você deverá alterar isso depois. Também estou supondo que o tamanho do objeto seja um quadrado de 48 px.
- Código:
instance_create(48*i,48*ii,Obj);
E pronto. Temos o sistema que cria objetos em posições aleatórias sem se repetir. Para alterar o ponto de refencia, basta adicionar um "extra" antes do x/y setados acima. Por exemplo, supondo que queira uma "margem" de 100 px em x e 200 px em y:
- Código:
instance_create(100+(48*i),200+(48*ii),Obj);
Se tudo está correto (não estou testando, diga-se de passagem...), sua primeira dúvida está resolvida. A segunda pergunta é simples:
- Código:
image_speed = 0; //Deixa a sprite estática.
image_index = irandom(5);//sub-imagem entre 0 e 5.
E ufa... Ai está!
[Edit]
Rodrigo... Seu danado...
Não vou apagar esse textão todo só porque você respondeu primeiro.
Re: [Resolvido]Criar Objetos aleatórios em lugares específicos
Apenas um adendo ao que o Willy explanou... também é possível usar "ds_list_shuffle" para embaralhar automaticamente os itens na lista, podendo assim retirar sempre uma mesma posição (o 1°, por exemplo) sem a necessidade de um sorteio customizado.
Convidado- Convidado
Re: [Resolvido]Criar Objetos aleatórios em lugares específicos
Rapaz... Não sabia da existência dessa bendita.Dotted Chaos escreveu:Apenas um adendo ao que o Willy explanou... também é possível usar "ds_list_shuffle" para embaralhar automaticamente os itens na lista, podendo assim retirar sempre uma mesma posição (o 1°, por exemplo) sem a necessidade de um sorteio customizado.
Vlw!
Re: [Resolvido]Criar Objetos aleatórios em lugares específicos
Nossaaaaa MUITO OBRIGADO, estava testando as diferentes formas que vcs postaram aqui e deu certinho.
Estou muito agradecida viu meninos, valeu mesmo. Fiquei até assustada com o tamanho dos códigos (kkkkk) eu estava tentando fazer com códigos bemm mais simples.
Bjs
Dúvida Resolvida.
Obs: Se vcs estão fazendo isto só de cabeça, #peloamordeDEus tem que benzer, kkkk
Estou muito agradecida viu meninos, valeu mesmo. Fiquei até assustada com o tamanho dos códigos (kkkkk) eu estava tentando fazer com códigos bemm mais simples.
Bjs
Dúvida Resolvida.
Obs: Se vcs estão fazendo isto só de cabeça, #peloamordeDEus tem que benzer, kkkk
100%Dedicada- Data de inscrição : 20/01/2015
Reputação : 4
Número de Mensagens : 21
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Tópicos semelhantes
» [Resolvido]Como ativar instância de objetos específicos?
» [RESPONDIDO]Criar Objetos,Movimento e posição Aleatorios
» [Resolvido]Criar objetos com nomes
» [RESOLVIDO] Criar Objetos alatorios com limite de distancia
» não criar objetos sobre objetos sólidos
» [RESPONDIDO]Criar Objetos,Movimento e posição Aleatorios
» [Resolvido]Criar objetos com nomes
» [RESOLVIDO] Criar Objetos alatorios com limite de distancia
» não criar objetos sobre objetos sólidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos