2015-10-18 2 views
-1

Когда я запускаю следующий код, по какой-то причине он выполняется так, как будто else всегда истинно, однако, когда я забираю оператор else, операторы if работают нормально, что указывает на то, что инструкции if работают , Я думаю, однако я не могу установить Player.moving = true без какого-либо другого.Javascript else always triggering

if (Player.x > j * 25 - 15 && 
    Player.x < j * 25 + 10 && 
    Player.y > i * 25 && 
    Player.y < i * 25 + 25 && 
    Player.direction === 1 
) { 
    Player.moving = false; 
} 
else if (Player.x > j * 25 && 
     Player.x < j * 25 + 25 && 
     Player.y > i * 25 - 15 && 
     Player.y < i * 25 + 10 && 
     Player.direction === 2 
) { 
    Player.moving = false; 
} 
else if (Player.x > j * 25 && 
     Player.x < j * 25 + 40 && 
     Player.y > i * 25 && 
     Player.y < i * 25 + 25 && 
     Player.direction === 3 
) { 
    Player.moving = false; 
} 
else if (Player.x > j * 25 && 
     Player.x < j * 25 + 25 && 
     Player.y > i * 25 && 
     Player.y < i * 25 + 50 && 
     Player.direction === 4 
) { 
    Player.moving = false; 
} 
else { 
    Player.moving = true; 
} 

Где я и J являются показатели объекта в карте плитки, так что tilemap выглядит примерно так: вар tilemap = [ «„“»];

Например, когда

if (Player.x > j * 25 && 
     Player.x < j * 25 + 40 && 
     Player.y > i * 25 && 
     Player.y < i * 25 + 25 && 
     Player.direction === 3 
) { 
    Player.moving = false; 
} 

единственный код присутствует. Игрок прекратит свое движение влево, когда объект в [i] [j] находится слева от него, как и ожидалось. Однако, если присутствующее else присутствует, оно просто продолжает двигаться, Player.moving остается верным. Спасибо за любую помощь!

+1

я думаю, никаких другие условия не будут выполнены, так что заканчиваются на другом заявлении –

+2

Просьбы предоставить достаточное количество коды в самом вопросе, чтобы повторить эту проблему. У нас нет возможности оценить ваши условия. Ссылки на внешние сайты гниют, и нам не нужно уходить с сайта, чтобы понять, почему ваш код не работает. вопросы должны быть самодостаточными – charlietfl

ответ

1

Предложение if не определено правильно, x не может одновременно быть больше и меньше значения. То же самое делает y.

Вы можете что-то вроде этого:

If ((Player.x > I || Player.x < J) && 
    (Player.y > M || Player.y < N) && 
     Player.direction === 1 
) {...} ...