Voir les commentaires et les liens ci-dessous!
Il est laid, mais la solution a fonctionné, si vous êtes novice, il peut vous aider dans votre apprentissage:
var coord = function (name, isPass,x,y) {
return {
name: name,
pass: isPass | false,
x:x,
y:y
}
}
var map = [
[
new coord("x:0,y:0", true,0,0),
new coord("x:1,y:0", true,1,0)
],
[
new coord("x:0,y:1", false,0,1),
new coord("x:1,y:1", true,1,1)
],
]
const notPossibleCoord = new coord("", false, -1, -1);
var currentPosition = new coord("", false, -1, -1);
function tryMove(direction) {
var nextDirection;
try {
switch (direction) {
case "top": nextDirection = map[currentPosition.x][currentPosition.y + 1]; break;
case "bottom": nextDirection = map[currentPosition.x][currentPosition.y - 1]; break;
case "left": nextDirection = map[currentPosition.x - 1][currentPosition.y]; break;
case "right": nextDirection = map[currentPosition.x + 1][currentPosition.y + 1]; break;
default:
return notPossibleCoord
}
if (nextDirection.pass)
return nextDirection;
else
return notPossibleCoord;
} catch (e) {
//index out of range, it's your edge
return notPossibleCoord;
}
}
function onArrowPress() {
var prevPosition = currentPosition;
currentPosition = tryMove("top");
if (currentPosition == notPossibleCoord)
return; //do nothing if movement not possible
//do what you need to do
}
Quelques commentaires:
- nous déclarons la fonction objet qui souscrivent coord item
- créer votre plan (dans votre cas, la carte sera crée par 'images-nodes')
- créer const
not possible
(attention! il est besoin ES6 (ES2015 peut être), donc, au lieu de const
, vous pouvez utiliser seulement var
;
- Declare Function
tryMove
- c'est votre fonction principale pour les mouvements
- set sur
document.keyPress
ou un événement quelque chose que notre fonction onArrowPress
, chèque est-il 'flèche' ou non, et faites votre logique
Qu'est-ce que vous besoin d'apprendre pour comprendre c'est tout:
- Using an Object Constructor
- JavaScript Arrays
- JavaScript Switch Statement
- JavaScript Errors
onkeypress
Event
- JavaScript HTML DOM
vous pouvez utiliser le tableau en deux dimensions, et le remplir avec passe/passe pas des valeurs. Vérifiez les moyens possibles lorsque vous faites un pas au point. –
mes connaissances avec js sont plutôt limitées, si vous aviez un exemple ou quelque chose où cela est utilisé ça m'aiderait beaucoup. – vorv
Bienvenue sur Stack Overflow! S'il vous plaît [modifier] votre question pour montrer [le code que vous avez jusqu'à présent] (http://whathaveyoutried.com). Vous devez inclure au moins un aperçu (mais de préférence un [mcve]) du code avec lequel vous rencontrez des problèmes, puis nous pouvons essayer d'aider avec le problème spécifique. Vous devriez aussi lire [ask]. –