AlanHorman
Mitglied
Ich arbeite an einem Snake-Spiel mit JavaScript bzw. Three.js.
Die Snake als Objekt habe ich erzeugt.
Hier sind zwei globale Variablen innerhalb der Snake, die den Abstand zum nächsten Feld (Distance) und die Richtung der Snake angeben.
Hier ist die Move-Funktion, mit der die Snake bewegt werden soll.
Mit diesem Keylistener kann man zwar die Schlange bewegen, doch sobald ich richtig wild auf der Tastatur rumtippe (z.B. links, tippe schnell die Oben-Taste und gleich wieder die linke Taste), dann kollidiert die Schlange trotzdem mit sich selbst. Wie umgehe ich dieses Problem, dass sich meine Schlange trotz wilder Rumtipperei nicht mit sich selbst kollidiert?
Die Snake als Objekt habe ich erzeugt.
Code:
this.distance = distance;
this.direction = direction;
Hier sind zwei globale Variablen innerhalb der Snake, die den Abstand zum nächsten Feld (Distance) und die Richtung der Snake angeben.
Code:
this.move = function ()
{
for (var i = this.cube.length - 1; i > 0; i--)
{
this.cube[i].position.x = this.cube[i - 1].position.x;
this.cube[i].position.y = this.cube[i - 1].position.y;
this.cube[i].position.z = this.cube[i - 1].position.z;
}
if (this.direction == "right")
{
this.cube[0].position.x += this.distance;
}
else if (this.direction == "left")
{
this.cube[0].position.x -= this.distance;
}
else if (this.direction == "up")
{
this.cube[0].position.z -= this.distance;
}
else if (this.direction == "down")
{
this.cube[0].position.z += this.distance;
}
};
Code:
document.body.addEventListener("keydown", function (event)
{
switch (event.keyCode)
{
case 38:
case 87:
if (snake.direction != "down")
snake.direction = "up";
break;
case 40:
case 88:
if (snake.direction != "up")
snake.direction = "down";
break;
case 37:
case 65:
if (snake.direction != "right")
snake.direction = "left";
break;
case 39:
case 68:
if (snake.direction != "left")
snake.direction = "right";
break;
...
Mit diesem Keylistener kann man zwar die Schlange bewegen, doch sobald ich richtig wild auf der Tastatur rumtippe (z.B. links, tippe schnell die Oben-Taste und gleich wieder die linke Taste), dann kollidiert die Schlange trotzdem mit sich selbst. Wie umgehe ich dieses Problem, dass sich meine Schlange trotz wilder Rumtipperei nicht mit sich selbst kollidiert?