Доступ к определенной точке двумерного массива некоректный
В общем, проблема заключается в следующем:
Создаю массив с помощью функции gen() Добавляю в массив точку(предположительно с координатами 1;3) с помощью функции addPoint(1,3) И потом вывожу на экран массив с помощью функции vis(); Получается что-то вроде XXXXXXX XXXOXXX XXXXXXX XXXXXXX XXXXXXX А хотелось бы XXXXXXX XXXXXXX XXXXXXX XOXXXXX XXXXXXX Как в массиве array[x][y] поменять местами x и y? Кроме как привыкнуть называть их по-другому. function gen() { for(i=0; i < xLength; i++){ array[i] = []; for(j=0; j < yLength; j++){ array[i][j] = "X"; } } } function vis() { for(i = 0; i < xLength; i++) { for(j = 0; j < yLength; j++) { arrayM = arrayM +array[i][j]; } arrayM = arrayM + "<br>"; } } function addPoint(x,y){ array[x][y] = "O"; } |
У тебя в коде логика такая, что x - это индекс строки, а не колонки, как ты хочешь.
Обычно i - это строка, j - это колонка. x - это колонка(горизонтальная ось), j - Это строка(вертикальная ось). А у тя все поперепутано. |
Тогда надо ковырять функцию gen()? Нет какой-нибудь замечательной приблуды, что "перевернет" массив?
|
Цитата:
Поменяй местами xLength и yLength И пиши array[y][x] в addPoint |
danik.js, но в полной версии у меня еще есть куча функций связанных с конкретной точкой в массиве. Это только как пример. Я пока мирился с этим и писал всегда [y][x]. Но теперь нету больше сил. Всегда начинают течь из ушей мозги, когда дело доходит до написания каких-то точек. И фиг перепривыкнешь, ведь все годы обучения писал (x;y). И как перестроить массив я тоже понять не могу.
|
Транспонируй при выводе. Итерируй y, x вместо x, y
|
Изначально не подумал вот и мучаешься. Надо было сразу строить массив правильно. Технически никакой разницы же нет.
function gen() { for(i=0; i < yLength; i++){ array[i] = []; for(j=0; j < xLength; j++){ array[i][j] = "X"; } } } function vis() { for(i = 0; i < xLength; i++) { for(j = 0; j < yLength; j++) { arrayM = arrayM +array[j][i]; } arrayM = arrayM + "<br>"; } } function addPoint(x,y){ array[x][y] = "O"; } |
Часовой пояс GMT +3, время: 22:07. |