![]() |
Как проверить объекты вокруг объекта
Здравствуйте. :)
Такой алгоритм на данный момент. Есть поле с девятью объектами. Все они стоят по три в три ряда. Как можно сделать так, чтобы когда я нажимал на объект, который находится по середине, выводилось значение (название или номера) тех объектов, которые находятся вокруг этого объекта? Я попробовал реализовать такую идею: проверять координаты вокруг объекта (x + ширина и высота объекта). Получилось, но не полностью: в некоторых местах (если уже используется не 9 объектов, а около ста) прибавляются те объекты, которые уж очень далеко от объекта (то есть вокруг объекта A 8 объектов, но условие считает, что и объекты, которые уже и выше этой восьмёрки, тоже находятся в "области" объекта). |
Проблема у вас не в алгоритме, а в его реализации.
|
Цитата:
Код AS3:
|
Что для Вас значит "вокруг"? Пересекают объект? Центры объектов ближе определённого расстояния? Зазор между объектами меньше заданного?
Или характеристика "вокруг" появляется только когда объектов больше 2-х и характеризует не положение объекта относительно другого, а характеризует конфигурацию группы объектов? |
Вложений: 1
Цитата:
|
Поищите как реализуется игра под названием "жизнь" это вот такая штука http://www.youtube.com/watch?v=Bt5MO9Tp2d8, она на данном алгоритме построена, я однажды писал, но код найти не могу и не помню как это делал, давно это было. Но в нете есть полюбому.
|
Как я понял, объекты находятся в сетке некоторой размерностью X*Y элементов, в данном случае 3*3. Следовательно, он имеет координату в этой сетке P(col,row).
Соседями считаются : P1(col-1,row) -левый, P2(col+1,row) - правый, P3(col,row-1) -верхний, P4(col,row+1)-нижний.....ну и диагональные соседи аналогично. Достаточно проверить, входит ли "сосед" в пределы сетки, т.е. координаты "соседа" P2(col2,row2) удовлетворяют условиям: 1) X>=col2>0, 2) Y>=row2>0 |
Цитата:
|
Цитата:
0 1 0 0 0 0 Если я не буду прибавлять или отнимать "ширину" и "высоту" квадрата, то он будет проверять только один квадрат (1). |
Цитата:
|
| Часовой пояс GMT +4, время: 20:43. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.