JavaScript Команда getElementAt () возвращает только объект [Object Object] - PullRequest
0 голосов
/ 26 марта 2020

Я использую версию CodeHS javaScript. Я делаю программу для змей. Я пытаюсь вызвать элемент (SNAKEY) при запуске, чтобы остановить программу, однако, когда я пытаюсь

if(direction == NORTH) {
    if(elemTopRight == SNAKEY)
         {
            gameOver();
        } else if(elemTopLeft == SNAKEY) {
            gameOver();
        } 
    }

(elemTopRight и elemTopLeft являются getElementVariable)

, он возвращает только [ объект Object] в моем терминале. И мой getElements, и мой элемент SNAKEY являются глобальными переменными, но getElementAt не будет возвращать SNAKEY, когда сталкивается с ним. Мне нужно, чтобы он возвращал имена элементов, когда сталкиваюсь с ними.

для остального контекста кода (нет, это не красиво):

var elemTopRight = getElementAt(posX - 1, posY - 1);
var elemTopLeft = getElementAt(posX + 11, posY - 1);
var elemBottomRight = getElementAt(posX - 1, posY + 11);
var elemBottomLeft = getElementAt(posX + 11, posY + 11);
var elemCenterTop  = getElementAt(posX + 5, posY - 1);
var elemCenterBottom  = getElementAt(posX + 5, posY + 11);
var elemCenterRight  = getElementAt(posX + 11, posY + 5);
var elemCenterLeft  = getElementAt(posX - 1, posY + 5);
function checkCollision() {
elemTopLeft = getElementAt(posX - 1, posY - 1);
elemTopRight = getElementAt(posX + 11, posY - 1);
elemBottomLeft = getElementAt(posX - 1, posY + 11);
elemBottomRight = getElementAt(posX + 11, posY + 11);
elemCenterTop  = getElementAt(posX + 5, posY - 1);
elemCenterBottom  = getElementAt(posX + 5, posY + 11);
elemCenterRight  = getElementAt(posX + 11, posY + 5);
elemCenterLeft  = getElementAt(posX - 1, posY + 5);
if(direction == NORTH) {
    if(elemTopRight == SNAKEY)
         {
            gameOver();
        } else if(elemTopLeft == SNAKEY) {
            gameOver();
        } 
    }
    println(elemTopRight + ", " + elemTopLeft);
    if(direction == SOUTH) {
         if(elemBottomLeft != null && elemBottomLeft != food) {
            gameOver();
        } else if(elemBottomRight != null && elemBottomRight != food) {
            gameOver();
        }
    }
    if(direction == EAST) {
         if(elemBottomRight != null  &&  elemBottomRight != food) {
            gameOver();
        } else if(elemTopRight != null && elemTopRight != food) {
            gameOver();
        }
    }
    if(direction == WEST) {
         if(elemBottomLeft != null && elemBottomLeft != food) {
            gameOver();
        } else if(elemTopLeft != null && elemTopLeft != food) {
            gameOner();
    }

}
}
/////////////////////////////////////////////////////////////
var SNAKEY = new Rectangle(SNAKE_DIM, SNAKE_DIM);
function draw() {
checkCollision();
checkWalls();
SNAKEY = new Rectangle(SNAKE_DIM, SNAKE_DIM);
SNAKEY.setPosition(posX, posY);
SNAKEY.setColor(Color.green);
add(SNAKEY);
move();
}

1 Ответ

0 голосов
/ 26 марта 2020

Если вы приведете объект к строке, как в этой строке:

println(elemTopRight + ", " + elemTopLeft);

, будет возвращено [объект Object]

elemTopRight - это объект с переменными. (возможно X и Y) Используйте другой способ для регистрации его содержимого.

как: console.log(elemTopRight)

...