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

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

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

Регистрация: Nov 2007
Сообщений: 24
Question Сетка столкновений

Есть объект, который по нажатию мыши стреляет пулями. требуется проверять эту пулю на столкновения с другими объектами, этих объектов слишком много чтобы пользоваться полным перебором. единственный выход это использовать так называемую сетку. получится что проверять придется не все объекты а только те котрые находятся в клетке пули, а точнее в четырех соседних клетках(т.е. рядом с ней). сам алгоритм мне известен, у меня вопрос насчет реализации...
моя идея:создать трехмерный массив(т.е. матрица у каждого элемента которой будет свой массив или объект, в котором мы будем хранить ссылки на объекты, которые принадлежат этой клетке). я застрял на добавлении и удалении объекта в массив или объект. можете объяснить как это делать? и вообще как хранить ссылки на объекты которые принадлежат клетке? или подкиньте другую идею насет реализации.
P.S. ссылк на перевод Nox Noctisa не давать. читал, там описано поверхностно.

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

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Array.push() - добавить к концу,
Array.unshift() - добавить к началу
Array.splice(указатель, количество элементов, чем заменить) - заменить\добавить\убрать в произвольном месте.
Array.shift() - убрать первый элемент
Array.pop() - убрать последний

Object.prop = value - любое свойство объекта можно добавить просто так, ну или более замысловато - Object.addProperty("prop",setFunction,getFunction)

Чтобы говорить конкретнее - надо видеть хотя бы простой пример того, что нужно сделать...
__________________
Hell is the possibility of sanity

Старый 26.11.2007, 13:47
qwerter вне форума Посмотреть профиль Отправить личное сообщение для qwerter Найти все сообщения от qwerter
  № 3  
Ответить с цитированием
qwerter
 
Аватар для qwerter

Регистрация: Nov 2007
Сообщений: 24
Добавлять в массив я уже пробовал, но со временем массив разрастается. короче там не просто так тупо добавлять.

Старый 26.11.2007, 14:08
Chas вне форума Посмотреть профиль Отправить личное сообщение для Chas Посетить домашнюю страницу Chas Найти все сообщения от Chas
  № 4  
Ответить с цитированием
Chas
[+1 14.08.08]
[+1 20.08.08]
 
Аватар для Chas

Регистрация: Sep 2002
Адрес: simferopol
Сообщений: 981
Отправить сообщение для Chas с помощью ICQ
чувак, среди программистов ясновидящих мало =)
ясно объясни в чем у тебя траблы.
если у тебя 3х мерное пространство, то тебе нужен
четырехмерный массив. 3 размерности массива - это оси x,y,z. Четвертая содержит список объектов с которыми ты проверяешь столкновение. это может быть и массив, по которому ты пройдешься в цикле, или , как подсказывает wvxvw (пальчы сломал набирая ник =)) просто экземпляр Object. На самом деле пример обычного хеширования. при желании можно взять и двумерный массив и делать смещение xPos+yPos+zPos или даже одномерный вообще.
что ты добавляешь в массив, что он у тебя разрастается? пули? так их нужно удолять после столкновения.
__________________
~
Never trouble trouble till trouble troubles you!

Старый 26.11.2007, 20:53
qwerter вне форума Посмотреть профиль Отправить личное сообщение для qwerter Найти все сообщения от qwerter
  № 5  
Ответить с цитированием
qwerter
 
Аватар для qwerter

Регистрация: Nov 2007
Сообщений: 24
вы совсем из меня дурака сделали) эт понятно что трехмерная(третье измерение-как бы хранилище). а пули я удаляю, но остаются пробелы и со временем массив разрастается, что не есть хорошо. например: есть массив из 20-ти объектов, удаляем 10-ый получится пробел и если так продолжать он разрастется, а это не хорошо. вы наверное предложите цикл фор ин, но он тоже будет замедлятся при разрастании массива и вообще не технично это как то так тупо с массива объекты удалять. вот я и спрашиваю, может кто нибудь знает какие алгоритмы или сталкивался с таким. в аттаче клип, для того чтобы ввести вас в курс дела) в сетку я буду заносить и соотвественно удалять танчики. у каждого клипа свой класс.
Вложения
Тип файла: rar Tank.rar (17.1 Кб, 79 просмотров)


Последний раз редактировалось qwerter; 26.11.2007 в 21:20.
Старый 26.11.2007, 21:58
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 6  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Ну, а чем скомпилированая флешка должна помочь?
Код:
var _arr:Array = [1,2,3,4,5,6,7,8,9,0];
_arr.splice(5,1);
trace(_arr); // 1,2,3,4,5,7,8,9,0
Если удалять элемент из массива не заменяя, а именно удаляя - массив разрастаться не будет...
__________________
Hell is the possibility of sanity

Старый 26.11.2007, 23:39
qwerter вне форума Посмотреть профиль Отправить личное сообщение для qwerter Найти все сообщения от qwerter
  № 7  
Ответить с цитированием
qwerter
 
Аватар для qwerter

Регистрация: Nov 2007
Сообщений: 24
Спасибо. Я просто примерно хотел показать в чем дело. Если надо могу и исходник.

Старый 27.11.2007, 11:23
Волгоградец вне форума Посмотреть профиль Отправить личное сообщение для Волгоградец Найти все сообщения от Волгоградец
  № 8  
Ответить с цитированием
Волгоградец
 
Аватар для Волгоградец

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
Цитата:
Сообщение от qwerter
Спасибо. Я просто примерно хотел показать в чем дело. Если надо могу и исходник.
Надо! (если имеешь ввиду готовый исходник)

Старый 27.11.2007, 20:58
qwerter вне форума Посмотреть профиль Отправить личное сообщение для qwerter Найти все сообщения от qwerter
  № 9  
Ответить с цитированием
qwerter
 
Аватар для qwerter

Регистрация: Nov 2007
Сообщений: 24
Код:
grid=new Array;
grid.length=_global.width/50;
//делаем двумерный массив
for (var i=0;i<grid.length;i++){
	grid[i]=new Array;
	grid[i].length=_global.height/50;
}
//делаем трехмерный массив
for (var i=0;i<grid.length;i++){
	for (var j;j<_global.height/50;j++){
		grid[i][j]=new Array;
	}
}
в чем ошибка? третье измерение не создает...

Вот ссылка на исходник:
http://www.**************/?1jbl930jlx3

Старый 27.11.2007, 21:40
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 10  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Синтаксические ошибки:
grid.length=_global.width/50
Вообще не понятно, что имеется в виду... наверное, создать массив с зарезервированными Н позициями?
grid[i]=new Array
Не хватает круглых скобок после Array.
Создать двумерный массив:
Код:
ar twoD_arr:Array = new Array(10); // 10 is the lenght of the newly created array.
for(var i:Number=0; i<twoD_arr.length; i++){
	twoD_arr[i] = new Array(10);
}
//or, even faster
var twoD_arr:Array = [];
while(twoD_arr.length<10){
	twoD_arr.push(new Array(10));
}
__________________
Hell is the possibility of sanity

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

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

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


 


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


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