instancia mais proxima

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

instancia mais proxima

Mensagem por Gusba em Dom 23 Nov 2008, 21:12

olha só pessoal, preciso q meu boneco quarde em uma variavel qual é a instancia que esta mais perto e que tenha a variavel: pode_ir = true

Gusba

Número de Mensagens : 1156
Idade : 21
Data de inscrição : 03/08/2008
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   :
   :

http://www.ciganospictures.hd1.com.br

Voltar ao Topo Ir em baixo

Re: instancia mais proxima

Mensagem por KinKing em Seg 01 Dez 2008, 11:40

obj_mais_perto = instance_nearest(x,y,all)
if (obj_mais_perto.pode_ir == true)
{
//Realize isso
}

Acho que é isso.

KinKing

Número de Mensagens : 416
Data de inscrição : 29/05/2008
Reputação : 16
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://felipejoys.webnode.com

Voltar ao Topo Ir em baixo

Re: instancia mais proxima

Mensagem por Gusba em Seg 01 Dez 2008, 14:04

não, isso nao funciona, porque ele axaria o objeto mais proximo e se nao tivese o pode_ir == true ele não continuaria a buscar

Gusba

Número de Mensagens : 1156
Idade : 21
Data de inscrição : 03/08/2008
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   :
   :

http://www.ciganospictures.hd1.com.br

Voltar ao Topo Ir em baixo

Re: instancia mais proxima

Mensagem por KinKing em Seg 01 Dez 2008, 14:55

O jeito então é fazer isso aí com todos os objetos que tem a variável pode_ir (em vez de all, fazer um teste com cada uma), ver qual é o mais próximo comparando as distâncias, e finalmente verificando o pode_ir.

Se for só um objeto, troque "all" por esse objeto.

KinKing

Número de Mensagens : 416
Data de inscrição : 29/05/2008
Reputação : 16
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://felipejoys.webnode.com

Voltar ao Topo Ir em baixo

Re: instancia mais proxima

Mensagem por Gusba em Seg 01 Dez 2008, 16:15

como faço para testar todos os objetos q tem a var pode_ir == true ?

Gusba

Número de Mensagens : 1156
Idade : 21
Data de inscrição : 03/08/2008
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   :
   :

http://www.ciganospictures.hd1.com.br

Voltar ao Topo Ir em baixo

Re: instancia mais proxima

Mensagem por Janx em Seg 01 Dez 2008, 16:53

faz algo como:
no objeto que vai checar:

a = 0
repeat istance_number(objeto)
{
lol[a] = 0
a += 1
}

aa = 0
with (objeto)
{
if pode_ir = true
{
checador.lol[aa] = id
checador.aa += 1
}
}

agora para checar o mais perto:
with (ii = 0; ii < istance_count(objeto); ii+=1)
execute_string('dist'+string(ii)+ '= point_distance(x,y,lol[0])')

omais_perto = min(dist1,dist2,dist3,dist4,dist5,dist6.......) depende de quantos tem..

acredito que funcione, mas dai o ideal seria vc saber quantas istancias tem e fazer um 'min'
que eu usei ali para cada quantidade.
ex:
se for so 4:
omais_perto = min(dist1,dist2,dist3,dist4)

se for so 2:
omais_perto = min(dist1,dist2)

FLW!

Janx

Número de Mensagens : 2417
Idade : 23
Data de inscrição : 24/05/2008
Reputação : 14
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 2
   : 0

Voltar ao Topo Ir em baixo

Re: instancia mais proxima

Mensagem por Gusba em Seg 01 Dez 2008, 17:03

claro, eu fiz um esquema quase igual ao seu, mas o problema é na hora de checar,

mas axo q tive uma ideia usando for

vlw!

Gusba

Número de Mensagens : 1156
Idade : 21
Data de inscrição : 03/08/2008
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   :
   :

http://www.ciganospictures.hd1.com.br

Voltar ao Topo Ir em baixo

Re: instancia mais proxima

Mensagem por Convidad em Sab 13 Dez 2008, 20:47

O seu problema está sendo o fato da variável existir ou não no objeto. O esquema que o kinking fez pode funcionar perfeitamente se adicionarmos a função:

variable_local_exists()

Ela checa se a variável existe ou não. Portanto ficaria:

Código:
obj_mais_perto := instance_nearest(x,y,all);
global.controlador := id;
executar_codigo := false;

with (obj_mais_perto)
begin
  if variable_local_exists(pode_ir) then global.controlador.executar_codigo := true;
end;

if executar_codigo = true then
begin
  if obj_mais_perto.pode_ir = true then
  begin
    //Realize isso
  end;
end;

Convidad
Convidado


Voltar ao Topo Ir em baixo

Re: instancia mais proxima

Mensagem por Conteúdo patrocinado Hoje à(s) 20:06


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