Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Условие для массива


Автор: WhiteFang 9.5.2008, 16:51
Собственно есть вопрос по JS. 
Вот есть у меня поле. Из определённой точки осуществляется заполнение поля (то бишь массива) волной. Но поле не всё пустое. Есть точка начала волны (А) и точка (В) откуда к этому началу стоит идти. Ну соответственно из точки В я ищу наименьшее значение ячейки в четырёх направлениях: верх, низ, лево, право. 
Вот условие для поиска вверх.
Код

if (((x1 - 1) >= 0) && ((x1 - 1) <NUM) && (y1 >= 0) && (y1 <NUM) & 
        (((x1 + 1) >= 0) && ((x1 + 1) < NUM) && (y1 >= 0) && (y1 < NUM) && (field[x1 - 1][y1] <= field[x1 + 1][y1])) & 
        ((x1 >= 0) && (x1 < NUM) && ((y1 + 1) >= 0) && ((y1 + 1) < NUM) && (field[x1 - 1][y1] <= field[x1][y1 + 1])) & 
        ((x1 >= 0) && (x1 < NUM) && ((y1 - 1) >= 0) && ((y1 - 1) < NUM) && (field[x1 - 1][y1] <= field[x1][y1 - 1]))) 
   { 
        field[x1 - 1][y1] = 254; // значение точки В (бот) 
        Draw(x1 - 1, y1); //это прорисовка клетки, ну собственно она и не важна 
        GoToTank(x1 - 1, y1); /*это название функции, если клетка наименьшая, то из неё функция вызывает сама себя*/ 
        return; 
   }

NUM - это размеры массива. 
Вначале я проверяю, лежит ли данная клетка в пределах массива, а потом поочерёдно сравниваю верхнюю ячейку с левой, правой и нижней, заодно проверяя их расположение. Так вот, проблема в том, что если точка Б в углу массива, то нифига никуда бот не идёт, функция просто проходит, не зайдя ни в одно условие и не вызвав себя ниразу. Собственно где ошибка? Я так понимаю в условии, только где?

Автор: unicorn55 12.5.2008, 03:09
& - это битовая операция а здесь используется как логическая.
То есть ее нужно заменить на &&. 
Тогда условие будет выполняться если мы находимся в точке минимума. Вроде так.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)