Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Столкновение объектов (https://javascript.ru/forum/misc/23373-stolknovenie-obektov.html)

Isaac 21.11.2011 19:30

Цитата:

Сообщение от trikadin (Сообщение 138191)
Мда. Как же вы игру с такими познаниями пишете.

//храните объекты в массиве, тогда можно будет сделать так:
for (var i=0; i!= arr.length; ++i) //arr - наш теоретический массив
  for (var j= i; j!= arr.length; ++j)
    if (getDistance(arr[i][0], arr[i][1], arr[j][0], arr[j][1]) < someValue) { // если взрыв
      alert("Ба-бах!");
    }

А рекурсией можно это записать? Или лучше сделать циклом ?

trikadin 21.11.2011 19:33

Цитата:

Сообщение от Isaac
Или лучше сделать циклом ?

Лучше циклом. Быстрее и памяти жрёт меньше.

Isaac 21.11.2011 19:38

Цитата:

Сообщение от trikadin (Сообщение 138194)
Лучше циклом. Быстрее и памяти жрёт меньше.

В данном случае координаты у меня хранятся в объекте
var Coords = {
		x: [x1, x2, x3],
		y: [y1, y2, y3]	
	}

Тогда мне нужно записать так ?
//храните объекты в массиве, тогда можно будет сделать так:
	for (var i = 0; i!= Coords.x.length; ++ i) //arr - наш теоретический массив
		for (var j = i; j!= Coords.y.length; ++ j)
		    if (getDistance(Coords.x[i][0], Coords.y[i][0], Coords.x[i][1], Coords.y[i][1]) < someValue) { // если взрыв
      alert("Ба-бах!");
    }

trikadin 21.11.2011 19:50

Нет)

for (var i = 0; i!= Coords.x.length; ++ i)
        for (var j = i; j!= Coords.y.length; ++ j)
            if (getDistance(Coords.x[i], Coords.y[i], Coords.x[j], Coords.y[j]) < someValue) { // если взрыв
      alert("Ба-бах!");
    }

Isaac 21.11.2011 20:00

Цитата:

Сообщение от trikadin (Сообщение 138200)
Нет)

for (var i = 0; i!= Coords.x.length; ++ i)
        for (var j = i; j!= Coords.y.length; ++ j)
            if (getDistance(Coords.x[i], Coords.y[i], Coords.x[j], Coords.y[j]) < someValue) { // если взрыв
      alert("Ба-бах!");
    }

Что-то не то, у меня всегда срабатывает if :(
А ф-я возвращает 0
function getDistance(x1, y1, x2, y2)
	{
		var dx = x1 - x2;
		var dy = y1 - y2;		
		
		return needDist =  Math.floor(Math.sqrt((dx * dx) + (dy * dy)));
	};

trikadin 21.11.2011 20:20

Поставьте себе firebug. Посмотрите, что он говорит. Это ваша игра, вы должны в ней разбираться, а не я.

Isaac 21.11.2011 20:24

Цитата:

Сообщение от trikadin (Сообщение 138205)
Поставьте себе firebug. Посмотрите, что он говорит. Это ваша игра, вы должны в ней разбираться, а не я.

Стоит фаирбаг, он то и показывает 0

trikadin 21.11.2011 21:15

Могу предложить подумать над этим.

Isaac 21.11.2011 21:28

Цитата:

Сообщение от trikadin (Сообщение 138220)
Могу предложить подумать над этим.

Уже все решил, спасибо большое! Яростно плюсую :)


Часовой пояс GMT +3, время: 06:48.