Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 19.01.2013, 02:00
Dip52 вне форума Посмотреть профиль Отправить личное сообщение для Dip52 Найти все сообщения от Dip52
  № 1  
Ответить с цитированием
Dip52

Регистрация: Aug 2012
Сообщений: 297
По умолчанию Как проверить объекты вокруг объекта

Здравствуйте.
Такой алгоритм на данный момент.
Есть поле с девятью объектами. Все они стоят по три в три ряда.
Как можно сделать так, чтобы когда я нажимал на объект, который находится по середине, выводилось значение (название или номера) тех объектов, которые находятся вокруг этого объекта?

Я попробовал реализовать такую идею: проверять координаты вокруг объекта (x + ширина и высота объекта). Получилось, но не полностью: в некоторых местах (если уже используется не 9 объектов, а около ста) прибавляются те объекты, которые уж очень далеко от объекта (то есть вокруг объекта A 8 объектов, но условие считает, что и объекты, которые уже и выше этой восьмёрки, тоже находятся в "области" объекта).

Старый 19.01.2013, 03:09
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 2  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Проблема у вас не в алгоритме, а в его реализации.
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 19.01.2013, 15:30
Dip52 вне форума Посмотреть профиль Отправить личное сообщение для Dip52 Найти все сообщения от Dip52
  № 3  
Ответить с цитированием
Dip52

Регистрация: Aug 2012
Сообщений: 297
Цитата:
Сообщение от alatar Посмотреть сообщение
Проблема у вас не в алгоритме, а в его реализации.
Код AS3:
		if(iBomb.x > arrayForObjects[i].x - arrayForObjects[i].width * (hitObject + 2) && 
				iBomb.x < arrayForObjects[i].x + arrayForObjects[i].width * 2&&  
				iBomb.y > arrayForObjects[i].y - arrayForObjects[i].height * 2 && 
				iBomb.y < arrayForObjects[i].y + arrayForObjects[i].width * 2)
		{
			trace(i);
		}
Реализация такова. Можете подтолкнуть меня, куда нужно нужно двигаться?

Старый 19.01.2013, 16:42
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 4  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Что для Вас значит "вокруг"? Пересекают объект? Центры объектов ближе определённого расстояния? Зазор между объектами меньше заданного?
Или характеристика "вокруг" появляется только когда объектов больше 2-х и характеризует не положение объекта относительно другого, а характеризует конфигурацию группы объектов?

Старый 19.01.2013, 17:25
Dip52 вне форума Посмотреть профиль Отправить личное сообщение для Dip52 Найти все сообщения от Dip52
  № 5  
Ответить с цитированием
Dip52

Регистрация: Aug 2012
Сообщений: 297
Цитата:
Сообщение от expl Посмотреть сообщение
Что для Вас значит "вокруг"? Пересекают объект? Центры объектов ближе определённого расстояния? Зазор между объектами меньше заданного?
Или характеристика "вокруг" появляется только когда объектов больше 2-х и характеризует не положение объекта относительно другого, а характеризует конфигурацию группы объектов?
Объекты вокруг объекта.swf   (9.0 Кб)
Вложения
Тип файла: swf Объекты вокруг объекта.swf (9.0 Кб, 403 просмотров)

Старый 19.01.2013, 17:42
Sintesis вне форума Посмотреть профиль Отправить личное сообщение для Sintesis Найти все сообщения от Sintesis
  № 6  
Ответить с цитированием
Sintesis
 
Аватар для Sintesis

Регистрация: Jul 2008
Сообщений: 912
Поищите как реализуется игра под названием "жизнь" это вот такая штука http://www.youtube.com/watch?v=Bt5MO9Tp2d8, она на данном алгоритме построена, я однажды писал, но код найти не могу и не помню как это делал, давно это было. Но в нете есть полюбому.

Старый 19.01.2013, 18:13
AleXXX вне форума Посмотреть профиль Отправить личное сообщение для AleXXX Найти все сообщения от AleXXX
  № 7  
Ответить с цитированием
AleXXX

Регистрация: May 2012
Сообщений: 38
Как я понял, объекты находятся в сетке некоторой размерностью 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

Старый 19.01.2013, 19:23
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 8  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от Dip52 Посмотреть сообщение
Код AS3:
		if(iBomb.x > arrayForObjects[i].x - arrayForObjects[i].width * (hitObject + 2) && 
				iBomb.x < arrayForObjects[i].x + arrayForObjects[i].width * 2&&  
				iBomb.y > arrayForObjects[i].y - arrayForObjects[i].height * 2 && 
				iBomb.y < arrayForObjects[i].y + arrayForObjects[i].width * 2)
		{
			trace(i);
		}
Реализация такова. Можете подтолкнуть меня, куда нужно нужно двигаться?
Скажите, а зачем вы восемь раз повторяете в этом коде выражение arrayForObjects[i]?

Старый 19.01.2013, 19:37
Dip52 вне форума Посмотреть профиль Отправить личное сообщение для Dip52 Найти все сообщения от Dip52
  № 9  
Ответить с цитированием
Dip52

Регистрация: Aug 2012
Сообщений: 297
Цитата:
Сообщение от etc Посмотреть сообщение
Скажите, а зачем вы восемь раз повторяете в этом коде выражение arrayForObjects[i]?
0 0 0
0 1 0
0 0 0

Если я не буду прибавлять или отнимать "ширину" и "высоту" квадрата, то он будет проверять только один квадрат (1).

Старый 19.01.2013, 19:41
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 10  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от Dip52 Посмотреть сообщение
0 0 0
0 1 0
0 0 0

Если я не буду прибавлять или отнимать "ширину" и "высоту" квадрата, то он будет проверять только один квадрат (1).
Нет, вы не поняли вопроса. Зачем в исходном коде вы повторяете доступ к i-ому элементу массива целых 8 раз?

Создать новую тему Ответ Часовой пояс GMT +4, время: 20:34.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 20:34.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.