Я начинающий, когда дело касается всего, что связано с программированием;У меня нет абсолютно никакого опыта вообще.Имея это в виду, у меня есть задание, которое я отчаянно пытался выяснить, как его выполнить - создать полностью функциональную космическую стрелялку, что-то похожее на Galaga или Space Invaders.К сожалению, я застрял.(Какой сюрприз, верно?)
Я добился очень небольшого прогресса в этом вопросе, но моя самая последняя трудность заключается в попытке выяснить причину и выяснить, почему объект, который я так метко обозначил как «игрок»Корабль, не будет двигаться вверх и вниз.Я не совсем уверен, что я должен искать - это проблема с тем, как программа интерпретирует ввод с клавиатуры?Что-то не так с координатами, которые я просто не могу распознать?Может быть, это область видимости переменных?
В любом случае объект вызывается с помощью функции конструктора Ship () - сам объект является треугольником.(Я уже говорил, что предпочел бы не тратить время на попытки выяснить сложные формы, потому что я вроде идиот и, вероятно, очень хорошо бы это сделал? Но я отвлекся.)указали координаты в шести различных переменных, каждая из которых соответствует x- или y-значению для одной из трех вершин.На случай, если это имеет какое-либо отношение, размер холста составляет 400 на 400 пикселей.
... Оглядываясь назад, это, вероятно, не имеет большого значения.
Просто, чтобы уточнить, следующее является частью файла constructors.js
, который отделен от основного кода, записанного в sketch.js
.Я также обязательно связал его с HTML-файлом, на случай, если кому-то будет интересно.
/*
Rather than setting the values as static numbers, I chose to
set them dynamically so that the triangle would appear in the
same relative position no matter the size of the canvas:
*/
// coordinates of first vertex – bottom left
this.x1 = width * 9/20;
this.y1 = height * 9/10;
// coords of second vertex – top center
this.x2 = width/2;
this.y2 = height * 4/5;
// coords of third vertex – bottom right
this.x3 = width * 11/20;
this.y3 = height * 9/10;
// the shape is then called via the triangle() function:
this.show = function() {
triangle(this.x1, this.y1, this.x2, this.y2, this.x3, this.y3);
};
Я написал оператор if
внутри переменной, содержащей функцию, move
, которая предназначена для соответствия функции keyPressed () в главном файле:
// constructors.js
this.move = function(dir) {
if (key === 'a' || 'd') {
if (this.x1 > 0 && this.x3 < width) {
this.x1 += dir;
this.x2 += dir;
this.x3 += dir;
}
} else if (key === 'w' || 's') {
if (this.y1 < height && this.y2 > 0) {
this.y1 += dir;
this.y2 += dir;
this.y3 += dir;
}
}
};
// sketch.js
function keyPressed() {
// ship was initialised in setup() as an instance of Ship()
let left = -5, right = 5,
up = -2, down = 2;
if (key === 'a') {
ship.move(left);
} else if (key === 'd') {
ship.move(right);
} else if (key === 'w') {
ship.move(up);
} else if (key === 's') {
ship.move(down);
}
Если я еще не уточнил это, предназначение для программы (программное обеспечение?) для обработки пользовательского ввода с клавиатуры и соответствующего перемещения объекта.
Я не совсем уверен, что происходит;по какой-то причине, когда я тестирую клавиши W и S, они заставляют корабль двигаться на два пикселя влево и вправо соответственно, а не вверх и вниз - ожидаемый результат.
Дело в том, что я могуне пользуюсь консолью разработчика - используемое мной устройство принадлежит организации, и у них ограничен доступ к инструментам разработки - но даже если бы я мог, я не совсем знаком с ним, чтобы использовать его намоментОднако я не знаю, получу ли я вообще сообщение об ошибке, учитывая, что код (как сейчас) никогда не приведет к сбою программы.Это основная причина, по которой я решил обратиться за помощью.
Все, что вы могли бы предложить, с точки зрения совета или предложения, или если вы можете определить части кода, которые я должен отредактировать,если таковые имеются, я был бы чрезвычайно признателен.
Большое вам спасибо.
(В качестве примечания, я надеюсь, что вы, ребята, понимаете, что я не запрашивая полное решение ; я тоже не собираюсь его получать, но из-за того, что кто-то может предложить какой-нибудь отлаженный код (и, опять же, я неожидая, что кто-нибудь изо всех сил сделает это [особенно для меня всех людей] ), я бы попросил вас дать подробное объяснение, которое в общих чертах описаны различия между двумя частями кода и деталями , где и , почему возникает ошибка . Я хотел бы сделать это как можно большеопыт обучения, насколько это возможно для меня, так как я обычно не ценю тех, кто пользуетсяее честность, чтобы вытащить быстрый ответ из воздуха.)