Я пытаюсь написать простую игру со змеями, и я учусь JavaScript, как я это делаю. У меня есть отдельный файл для моего класса Snake, который я хочу использовать в основном файле. Проблема в том, что я объявил несколько переменных в начале класса для использования в моих функциях, но они являются хитом или промахом.
function Snake() {
this.move_y = 0;
this.move_x = 0;
this.height = 50;
this.width = 50;
this.speed = 20;
this.moveRight = function() {
this.speed = 20;
console.log(this.move_x); //Outputs 0
this.move_x += this.speed;
console.log(this.speed); //Outputs 20
//document.getElementById("head").style.left = this.move_x + "px";
}
this.moveDown = function() {
this.speed = 20;
console.log(this.move_y); //Outputs "Undefined"
this.move_y += this.speed;
console.log(this.move_y); //Outputs "NaN"
//document.getElementById("head").style.top = this.move_y + "px";
}
}
var dangerNoodle = new Snake();
dangerNoodle.moveRight();
dangerNoodle.moveDown();
Этот файл, который я использую, использует класс:
"use strict";
var move_x = 0;
var speed_x = 0;
var repeat;
var snakeHead = document.getElementById("head");
var snake;
window.onload = setUp;
function setUp()
{
snake = new Snake();
snakeHead.style.width = snake.width + "px";
snakeHead.style.height = snake.height + "px";
document.onkeydown = move;
}
function move(e)
{
if (e.keyCode == 39)
{
clearInterval(repeat);
repeat = setInterval(snake.moveRight, 1000);
}
else if (e.keyCode == 40)
{
clearInterval(repeat);
repeat = setInterval(snake.moveDown, 1000);
}
}
Почему моя переменная move_x
работает так, как задумано, но моя move_y
переменная не?