2014-02-06 4 views
0

Я пытаюсь рандомизировать объекты в объекте.Простая математика программирования

do{ 
     e = enemyList[Math.floor(enemyList.length * Math.random())]; 
    } while (e.level > (player.level + 5) && e.level < (player.level - 5)); 
    return e; 

Как бы сделать так, «е» должна быть между 5 уровней выше и 5 уровней ниже для того, чтобы петля, чтобы остановить?

Да это очень просто, но у меня болит голова по какой-то причине: р

+4

Как это может быть как 5 уровней выше, так и 5 уровней ниже в одно и то же время? – Barmar

+0

Можете ли вы объяснить немного больше или привести пример? Я не знаю, что вы подразумеваете под 5 уровнями выше И 5 уровней ниже. Кроме того, похоже, что ваша функция возвращает только один объект (если я не читаю его неправильно), так почему цикл? – BrettFromLA

+0

Я хочу, чтобы уровень противника находился между уровнем игрока минус 5 и плюс 5. Таким образом, оператор while должен останавливаться между 10 и 20, если вы находитесь на уровне 15 – ECMAScript

ответ

3

Я считаю, что вы должны быть используя or не and. Если он равен 5 ниже ИЛИ, если он равен 5 выше. В противном случае условие никогда не будет выполнено.

+0

Почему? Я хочу, чтобы он был только между -5 и +5 – ECMAScript

+0

О, у меня создалось впечатление, что вы хотите, чтобы он был выше и ниже этого. В этом случае, похоже, ответ NPE сделает то, что вы ищете. –

+0

+1 Нет, это на самом деле правильный ответ, учитывая, что OP хочет, чтобы цикл продолжался, а 'e' находился за пределами диапазона. Цикл выйдет, как только 'e' находится в диапазоне, если OP следует за этим ответом. – Matt

2

У вас есть сравнения навыворот (+ должны быть - и наоборот):

} while (e.level > (player.level - 5) && e.level < (player.level + 5)); 

(формулировка вашего вопроса несколько неоднозначна, это может быть, что вы должны использовать >= и <= вместо > и <.)

+0

Какая разница делает заказ? Если есть побочные эффекты, '&&' является коммутативным. – Barmar

+0

@Barmar: Если вы внимательно посмотрите, разница больше, чем порядок (на самом деле, это не имеет никакого отношения к порядку). – NPE

+1

Вы изменили смысл - вы проверяете, является ли 'e' _between_ 5 ниже и 5 выше. – Barmar

Смежные вопросы