Массив координат, перейти от 0 до последнего

1

Привет всем, мне интересно, возможно ли цитировать через массив координат, чтобы я мог выполнять какое-то действие асинхронно на каждой координате?

Я имею в виду, что у меня есть объект игрока:

var player = {
  name: "Example",
  x: 21,
  y: 20,
  go: function(x, y) {
    console.log("Walking");
    //Obviously heres a walking scripting but too much code
  }
}



function goToCordinates(data) {
  data.map(function(cord) {
      var i = setInterval(() => {
          if (!(Math.abs(player.x - cord.x) <= 1 && Math.abs(player.y - cord.y) <= 1)) {
            //player.go(cord.x, cord.y);
          } else {
              clearInterval(i);
            //Player on coordinates
          }
      }, 1000);
  }); 
};


goToCordinates([
  {x: 11, y: 21},
  {x: 12, y: 11},
  {x: 24, y: 26},
]);

Внутри goToCordinates() im проверка с использованием inveral, если мои player.x и player.y находятся в 1 поле от этих координат. Если да, то заканчивается. (Код, который я запустил, явно ошибочен, потому что в goToCordinates есть 3 вывода. В основном я хочу захватить первые x, y, проверить, находится ли игрок на этих кординатах, затем захватить второй (каким-то образом) и заставить его к ho к этим координатам с помощью player.go(x, y) еще раз. И повторите это, пока не сравните последние данные в массиве. Также очень важно, что я автоматически проверю, какая длина массива и сколько "контрольно-пропускные пункты" вынуждают игрока идти.

Анойон может помочь? :/

  • 0
    Почему вы хотите уйти на 1 единицу, а не на место?
  • 1
    Пожалуйста, сохраняйте свой вопрос после того, как на него ответили, чтобы другие могли видеть выгоду от него
Теги:

1 ответ

0

Обработать очередь как замкнутый цикл. Сохраните текущий индекс и обработайте каждый интервал как итерацию цикла.

function goToCordinates(data) {
      var index = 0;
      var i = setInterval(() => {
          let coord = data[index];
          if (!(Math.abs(player.x - coord.x) <= 1 && Math.abs(player.y - coord.y) <= 1)) {
            //player.move(coord.x, coord.y);
          } else {
              if (i < data.length) i++;
              else clearInterval(i);
            //Player on coordinates
          }
      }, 1000);
  }); 
};

Ещё вопросы

Сообщество Overcoder
Наверх
Меню