Показать сообщение отдельно
  #3 (permalink)  
Старый 10.03.2016, 18:45
Аспирант
Отправить личное сообщение для m1lk1way Посмотреть профиль Найти все сообщения от m1lk1way
 
Регистрация: 24.12.2015
Сообщений: 41

суть я уловил. вот моя реализация.
var directs = [[1, 0], [-1, 0], [0, 1], [0, -1]], //направления движений
          tref, trow, tcol; // куда будем двигать

$scope.shuffle = function(){
      var emprow = 2, \\вручную пока что указываю, где лежит пустышка
          empcol = 2, \\вручную пока что указываю, где лежит пустышка
          temp, tempp; \\одна для хранения, вторая для отладки
       for (var d = 0; d < directs.length; d++) {
                    console.log(d); \\ слежу за номером итерации
                    trow = emprow + directs[d][0];
                    tcol = empcol + directs[d][1];
                    if (this.grid[trow] && this.grid[trow][tcol] && this.grid[trow][tcol].empty == false) {
                        console.log('двигаю'); \\ удостоверимся, что условие пройдено
                        temp = this.grid[emprow][empcol]; //сохраним пока тут
                        tempp = this.grid[trow][tcol]; //сохраняю для отслеживания что с чем менялось
                        this.grid[emprow][empcol] = this.grid[trow][tcol]; //меняем местами
                        this.grid[trow][tcol] = temp; //окончательно поменяли
                        console.log("передвинул"+JSON.stringify(temp)+"сюда"+JSON.stringify(tempp));
                        emprow = trow;
                        empcol = tcol;
                    }
                }
    };

Эта штука делает 2 перемены местами (ну оно и логично ведь итерация идет до directs.length). Как бы мне это грамотно зарекурсить?)
Ответить с цитированием