2 duvidas

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

2 duvidas

Mensagem por Esaucm98 em Qua 30 Maio 2012, 19:26

Olá , pra não fazer 2 posts diferentes , eu vou fazer as minhas duas perguntas nesse aqui.



1. A primeira, Como fazer para que quando um objeto estiver no mesmo quadrado do GRID que o outro, oque tem menor Depth ser destruido

2. A segunda duvida, e um pouco mais complexa, uma vez perguntei como se fazia mundo infinito, e teve muitas respostas, O pedro disse que poderia desativar os objetos fora da view, e ativar dentro, e outro usuário disse que eu poderia usar um script para cada "pedaço" do mundo.
é isso que eu queria saber como se faz, para ter um mundo PARCIALMENTE aleatório, mas que não ficasse uma coisa totalmente desordenada. eu queria saber como eu faço um codigo, que gerasse automaticamente uma região de blocos, entao eu criaria uns 5 desses scripts que gerasse um mundo diferente.


eu sei... esta segunda duvida e um pouco complicada, mas por favor se souber responder pelo menos a primeira , esta de bom tamanho.


obrigado a todos

Esaucm98

Ranking : Nota D
Número de Mensagens : 275
Data de inscrição : 13/05/2012
Notas recebidas : D
Reputação : 4
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://www.legioncrafters.tk

Voltar ao Topo Ir em baixo

Re: 2 duvidas

Mensagem por luiz_eldorado em Qua 30 Maio 2012, 21:48

Na primeira pergunta, use este código no Event Step Step:
Código:
while(instance_place(x,y,objeto_em_baixo)!=noone) {
if instance_place(x,y,objeto_em_baixo).depth<depth {with(i) {instance_destroy()}}
}
Não testei, mas deve dar certo. Repita este código várias vezes com cada objeto à ser deletado (ou coloque all, para todos os objetos).
Na segunda pergunta, estou tentando fazer algo aqui, se der certo, te dou um toque. (provavelmente isso não irá acontecer)

Até mais!

luiz_eldorado

Ranking : Nota C
Número de Mensagens : 928
Idade : 17
Data de inscrição : 30/07/2011
Notas recebidas : C
Reputação : 47
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 1

http://luizpontes.tk/

Voltar ao Topo Ir em baixo

Re: 2 duvidas

Mensagem por Esaucm98 em Qui 31 Maio 2012, 00:53

luiz_eldorado escreveu:Na primeira pergunta, use este código no Event Step Step:
Código:
while(instance_place(x,y,objeto_em_baixo)!=noone) {
if instance_place(x,y,objeto_em_baixo).depth<depth {with(i) {instance_destroy()}}
}
Não testei, mas deve dar certo. Repita este código várias vezes com cada objeto à ser deletado (ou coloque all, para todos os objetos).
Na segunda pergunta, estou tentando fazer algo aqui, se der certo, te dou um toque. (provavelmente isso não irá acontecer)

Até mais!

cara valeu me ajudou d+ . Happy

Esaucm98

Ranking : Nota D
Número de Mensagens : 275
Data de inscrição : 13/05/2012
Notas recebidas : D
Reputação : 4
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://www.legioncrafters.tk

Voltar ao Topo Ir em baixo

Re: 2 duvidas

Mensagem por saim em Qui 31 Maio 2012, 09:29

Essa do mundo ser PARCIALMENTE aleatório é mais complicada mesmo. Eu posso te dar uma direção, mas pra criar o mundo de fato, o código tem que ser seu.
É o seguinte, você quer uma região no seu mundo em que há uma determinada probabilidade de surgir esse ou aquele item. Suponde que sejam apenas os itens A e B e você quer que eles se espalhem mais ou menos por igual. O Geferson perguntou algo parecido aqui. Repetindo o código de lá, você poderia faser o seguinte:
Código:
var i, sorteio, indiceSorteado;
i = 0;
sorteio[i] = A; i += 1;
sorteio[i] = B;
indiceSorteado = irandom(i);
instance_create(x, y, sorteio[indiceSorteado]);
Isso serve pra probabilidades IGUAIS de criar cada objeto.

Agora, suponha que você tenha 5 objetos, A, B, C, D e E. E a probabilidade de criar cada objeto seja: A: 50%, B: 10%, C: 10%, D: 25%, E: 5%. Uma forma de fazer isso seria
Código:
var i, sorteio, probabilidade, sorteado;
i = 0;
sorteado[i] = A; probabilidade[i] = 50; i += 1; //A, 50%
sorteado[i] = B; probabilidade[i] = probabilidade[i - 1] + 10; i += 1; //B, 60%
sorteado[i] = C; probabilidade[i] = probabilidade[i - 1] + 10; i += 1; //C, 70%
sorteado[i] = D; probabilidade[i] = probabilidade[i - 1] + 25; i += 1; //D, 95%
sorteado[i] = E; probabilidade[i] = probabilidade[i - 1] + 5;  i += 1; //E, 100% - note que continuei somando 1 a "i"
nElementos = i;

sorteio = random(100);
//vai aumentando o valor de i de zero ao valor sorteado
for(i = 0; i < nElementos; i += 1){ //foi por causa desse loop (usando "<" e não "<=") que somei o último "i"
   if (sorteio < probabilidade[i]) { break; } //quando "i" chegar no valor correto, quebra o loop
   }
return(sorteado[i]);
Até aqui, acho que está tudo indo tranquilo, certo? Quer dizer, o código acima tem muitas linhas, mas não é complicado de se entender. Daqui pra frente vem a parte difícil - e a que eu não posso te ajudar. Definir a probabilidade de criar cada objeto em função de... o que?
Da dificuldade escolhida pelo jogador (um jogo fácil teria muitos itens de bônus enquanto um jogo difícil teria muitos itens danosos)?
Da distância até o ponto de início do jogo (quanto mais longe, menor a probabilidade de encontrar esse ou aquele item)?
Da direção (ir pra direita garante riqueza de itens A enquanto ir pra esquerda garante riqueza de itens B)?

Enfim, cabe a você moldar que tipo de probabilidades irão determinar a formação do seu terreno.
O código acima é só uma forma de obedecer às probabilidades que você calculou (basta substituir os valores numéricos pelos resultados de suas equações). Dependendo do que você quer, existem formas mais interessantes de se chegar no mesmo resultado.

Espero que tenha ajudado alguma coisa. Caso contrário, estamos aí.


Última edição por saim em Qui 31 Maio 2012, 14:31, editado 1 vez(es)

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: 2 duvidas

Mensagem por Esaucm98 em Qui 31 Maio 2012, 11:13

saim escreveu:Essa do mundo ser PARCIALMENTE aleatório é mais complicada mesmo. Eu posso te dar uma direção, mas pra criar o mundo de fato, o código tem que ser seu.
É o seguinte, você quer uma região no seu mundo em que há uma determinada probabilidade de surgir esse ou aquele item. Suponde que sejam apenas os itens A e B e você quer que eles se espalhem mais ou menos por igual. O Geferson perguntou algo parecido aqui. Repetindo o código de lá, você poderia faser o seguinte:
Código:
var i, sorteio, indiceSorteado;
i = 0;
sorteio[i] = A; i += 1;
sorteio[i] = B;
indiceSorteado = irandom(i);
instance_create(x, y, sorteio[indiceSorteado]);
Isso serve pra probabilidades IGUAIS de criar cada objeto.

Agora, suponha que você tenha 4 abjetos, A, B, C, D e E. E a probabilidade de criar cada objeto seja: A: 50%, B: 10%, C: 10%, D: 25%, E: 5%. Uma forma de fazer isso seria
Código:
var i, sorteio, probabilidade, sorteado;
i = 0;
sorteado[i] = A; probabilidade[i] = 50; i += 1; //A, 50%
sorteado[i] = B; probabilidade[i] = probabilidade[i - 1] + 10; i += 1; //B, 60%
sorteado[i] = C; probabilidade[i] = probabilidade[i - 1] + 10; i += 1; //C, 70%
sorteado[i] = D; probabilidade[i] = probabilidade[i - 1] + 25; i += 1; //D, 95%
sorteado[i] = E; probabilidade[i] = probabilidade[i - 1] + 5;  i += 1; //E, 100% - note que continuei somando 1 a "i"
nElementos = i;

sorteio = random(100);
//vai aumentando o valor de i de zero ao valor sorteado
for(i = 0; i < nElementos; i += 1){ //foi por causa desse loop (usando "<" e não "<=") que somei o último "i"
   if (sorteio < probabilidade[i]) { break; } //quando "i" chegar no valor correto, quebra o loop
   }
return(sorteado[i]);
Até aqui, acho que está tudo indo tranquilo, certo? Quer dizer, o código acima tem muitas linhas, mas não é complicado de se entender. Daqui pra frente vem a parte difícil - e a que eu não posso te ajudar. Definir a probabilidade de criar cada objeto em função de... o que?
Da dificuldade escolhida pelo jogador (um jogo fácil teria muitos itens de bônus enquanto um jogo difícil teria muitos itens danosos)?
Da distância até o ponto de início do jogo (quanto mais longe, menor a probabilidade de encontrar esse ou aquele item)?
Da direção (ir pra direita garante riqueza de itens A enquanto ir pra esquerda garante riqueza de itens B)?

Enfim, cabe a você moldar que tipo de probabilidades irão determinar a formação do seu terreno.
O código acima é só uma forma de obedecer às probabilidades que você calculou (basta substituir os valores numéricos pelos resultados de suas equações). Dependendo do que você quer, existem formas mais interessantes de se chegar no mesmo resultado.

Espero que tenha ajudado alguma coisa. Caso contrário, estamos aí.


deu certo , ja to quase conseguindo fazer aqui... valeu mesmo.! Razz

Esaucm98

Ranking : Nota D
Número de Mensagens : 275
Data de inscrição : 13/05/2012
Notas recebidas : D
Reputação : 4
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://www.legioncrafters.tk

Voltar ao Topo Ir em baixo

Re: 2 duvidas

Mensagem por Conteúdo patrocinado Hoje à(s) 00:50


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