# Testing for nearest object

How do you test for the nearest object x, to specific object, y when there are multiple instances of each object x and y? GD seems to be getting confused about specifically which object I am referring to.

You have many instances of ObjectY and many instances of ObjectX… For each ObjectY, ¿do you have to find the nearest ObjectX?

First: you need a loop “For each ObjectY”, sub-events will be executed for each ObjectY (of course )
Second: you need a loop “For each ObjectX” as sub-event of the first loop
GD will run it (two ObjectY and two ObjectX):
…first ObjectY:
…first ObjectX: do something
…second ObjectX: do the same thing
…second ObjectY:
…first ObjectX: do something
…second ObjectX: do the same thing

Now you need a “Distance” variable to check each ObjectY-ObjectX distance:
If the distance with the next OjectX < variable “Ditance”, that ObjectX is nearest to ObjectY ==> variable “Distance” = this new distance.

Finally, to know who is the ObjectX between other ObjectX, check if the variable “Distance” = distance ObjectX-ObjectY (variable “Distance” = the smallest distance between an ObjectX and ObjectY)

Pseudocode:

```Condition to start checking dinstances: .........For each "ObjectY" repeat: ................Do variable(Distance) = 10000 (10000 = minimum distance) ................For each "ObjectX" repeat: ........................If distance between ObjectY and ObjectX < variable(Distance): ................................Do variable(Distance) = distance between ObjectX and ObjetcY ................Distance between ObjectX and ObjectY = variable(Distance): ........................Link ObjectY and ObjectX```

This pseudocode is a copy of an 4ian’s explanation made in the forum some time ago (I hope he doesn’t get angry ), him code is very useful and simple: [url]Find object nearest to a point]

Do not hesitate to ask any quetion (I haven’t any PC with GD right now, if you need I can make a little example.gdg then )

Extremely helpful! I see I was failing because I assumed

was the other way around! >.<

Thank you Lizard!

Double post but nvm: Does this mean event order is like this?

[code]These are done in order 1 - 3?
Event 1
Event 2
Event 3

These are done in order Event 1 - Sub event 1 - Sub event 2 - Event 2 ?

Event 1
Sub event 1
Sub event 2
Event 2

These are done in order Event 1 - Sub event 1 - Sub event 2 - Sub event 3 - Event 2?

Event 1
Sub event 1
Sub event 2
Sub event 3
Event 2 [/code]

Yep, sub events are run just after their parent event, if the conditions of the parent event were fulfilled.

Mmmph… maybe we should make better explanations about events, sub-events, loops and GD logic in general… and add them on the wiki, of course.

I can’t, I mean: I could make examples with nice words, fine explanations and examples… but in Spanish, my English isn’t good, nobody would understand me

So a for each object loop sub event runs like an nested array loop?

``````For each object x
For each object y
For each object z``````

This would run for:
First x object → First y object → Every object z
First x object → Second y object → Every object z
…First x object → Last y object → Every object z
Second x object → First y object → Every object z
etc…?

@Lizard - If you can write the article I could easily make the English more understandable (if it even needs to be changed!). I have no troubles understanding anything you wrote on these forums before. It would be a very useful article to have!

Yes exactly.
How did you understand it before? ( It’s interesting because I’ve never imagined that anyone could get it wrong ).

``` event for each object x //Do everything in this loop sub event for each object y //Then do everything in this loop sub event for each object z //Then do everything in this loop```