Как написать эти методы, чтобы изменить положение x и y в конструктивной функции?

#javascript

#javascript

Вопрос:

В настоящее время я застрял и не уверен, как изменить положение символа на 20 пикселей вправо и на 20 пикселей влево. Я смог создать символы и отобразить их информацию. Это был код, который я получил обратно, когда обратился за помощью, и до сих пор оставил меня в замешательстве. Это та часть, которую я пытаюсь выполнить, завершите метод для изменения положения x и завершите метод для изменения положения y.

Ваша задача

Вам поручено создать персонажей для браузерной игры на основе предоставленного скелетного кода JavaScript.

В игре будет 3 символа, каждый из которых основан на объектах в коде JavaScript. Каждый символ имеет следующие черты:

  • Имя

  • Начальная позиция на экране (которая состоит из двух координат [x и y]. Эти координаты показывают положение в пикселях по оси x и вниз по оси y. Например, (150, 230) будет 150 пикселей по экрану с левой стороны вдоль оси x и 230 пикселей вниз по экрану сверху вдоль оси y. (Смотрите Изображение ниже.)

    Подсказка: используйте отдельные переменные для позиции x и позиции y

  • Возможность перемещать 20 пикселей одновременно (для x это перемещение влево или вправо, а для y это перемещение вверх или вниз) [это похоже на метод]. Например. если символ находится на (100, 30), перемещение влево на 20 пикселей помещает символ в (80, 30).

Для x перемещение влево равно -20, а перемещение вправо — 20 пикселей

Для y перемещение вверх равно -20, а перемещение вниз — 20 пикселей

 var Character = function(name, xPos, yPos) {
  this.name = name;
  this.xPos = xPos;
  this.yPos = yPos;

  // the changedXPos and changedYPos functions are part of the prototype itself
  // therefore they should be inside the prototype's outer braces { }
  this.changedXPos = function(value) {
    this.xPos = xPos   value;
    // change the x position here
    value = 20;
  }
  console.log(value);
  this.changedYPos = function(value) {
    // complete this similar to what we've done in the changedXPos function
  }
  this.details = function() {
    return "The person's name is: "   this.name   " and their xPos is: "   this.xPos   "and their yPos is: "   this.yPos
  };
  Character.prototype.toString = function toString() {
    var info = "Name: "   this.name   " xPos is "   this.xPos   " and yPos is "   this.yPos;
    return info;
  };
} // end of prototype

// create the 3 character objects here
// output the name and currect position of each character

var john = new Character("John", 10, 30);

console.log(john.toString(john));

var joe = new Character("Joe", 40, 20);

console.log(joe.toString(joe));

var doe = new Character("Doe", 50, 10);

console.log(doe.toString(doe));

// change the position of each character
// output the new position of each character

// now call the changedXPos and changedYPos functions
john.changedXPos(20);
john.changedYPos(50);
// print the new position to the console
console.log("new position for john: "   john.toString(john));
  

Комментарии:

1. что вы подразумеваете под изменением положения вправо и влево? можете ли вы объяснить подробнее, в любом случае проверьте эту ссылку, если это то, что вы хотите js.do/code/changeposition Я опубликую это в качестве ответа

2. Что не работает с тем, как вы реализовали changedXPos ? Как вы думаете, какова цель value = 20; ? Откуда вы ожидаете console.log(value); получить value ? Комментарии в коде бесполезны, поскольку они ничего не проясняют. Каковы (плохо названные) методы changedXPos и changedYPos что они должны делать?

3. Я добавил информацию из оценки, которую мне дали, и что они просят меня сделать

4. @Bec Это больше похоже на то, что реализация должна включать a moveLeft , a moveRight , a moveUp и moveDown метод, который просто уменьшает или увеличивает this.x или this.y by 20 .

5. Я думаю, что назначение хотело, чтобы он просто изменил значение свойства x и y созданного объекта Я полностью согласен с вами в вопросе не самый лучший, @Bec вы проверили ссылку, которую я отправил выше, js.do/code/changeposition

Ответ №1:

Ну вот, вам просто нужно удалить не имеющую ссылок переменную console.log(значение) и обновить свойства x и y в установщиках

 <script>

var Character = function(name, xPos, yPos) {
  this.name = name;
  this.xPos = xPos;
  this.yPos = yPos;

  // the changedXPos and changedYPos functions are part of the prototype itself
  // therefore they should be inside the prototype's outer braces { }
  this.changedXPos = function(value) {
    this.xPos = value;
  }
  
  this.changedYPos = function(value) {
    this.yPos = value;
  }
  this.details = function() {
    return "The person's name is: "   this.name   " and their xPos is: "   this.xPos   "and their yPos is: "   this.yPos
  };
  Character.prototype.toString = function toString() {
    var info = "Name: "   this.name   " xPos is "   this.xPos   " and yPos is "   this.yPos;
    return info;
  };
} // end of prototype

// create the 3 character objects here
// output the name and currect position of each character

var john = new Character("John", 10, 30);

console.log(john.toString(john));

var joe = new Character("Joe", 40, 20);

console.log(joe.toString(joe));

var doe = new Character("Doe", 50, 10);

console.log(doe.toString(doe));

// change the position of each character
// output the new position of each character

// now call the changedXPos and changedYPos functions
john.changedXPos(20);
john.changedYPos(50);
// print the new position to the console
console.log("new position for john: "   john.toString(john));
document.write("new position for john: "   john.toString(john));
</script>