Looping through a nested array

evilrizen

New Member
\[code\]var map = [ ["Blank", "Blank", "Blank"], ["Blank", "Player", "Blank"], ["Blank", "Blank", "Blank"]];\[/code\]I am having problems looping through an array. Mainly this function here. It is suppose to move the "Player" down one within the matrix.Everything I try the "Player" will always drop down to the bottom row when the players position is on the top. Also I have been having weird buggy issues. Some times I will not change the code at all (or at least I think so). And then the code will not have this issue, and then it will again. Also right now I can't get the "Player" to move any farther to the left then the middle. I'll show the code for that function at the end. Thank you for trying to help. \[code\]function moveDown() { for (y = map.length - 1; y >= 0 ; y--) { for (x = map[y].length - 1; x >= 0; x--) { var posX = map[y].indexOf("Player"); if (posX > -1 && y == 0) { map[1].splice(posX, 1,"Player"); map[y].splice(posX, 1,"Blank"); return; } else if (posX > -1 && y == 1) { map[2].splice(posX, 1,"Player"); map[y].splice(posX, 1,"Blank"); return; } else if (posX > -1 && y == 2) { return; } } } }\[/code\]Here is all my code. Don't read it all if you don't have time. My main issue right now is with the moveDown() function. (I think)\[code\]var map = [ ["Blank", "Blank", "Blank"], ["Blank", "Player", "Blank"], ["Blank", "Blank", "Blank"]];var run = true;menu();printLoop(map);while (run) { var input = prompt(); if (input == "left") { movePlayer("left"); } else if (input == "right") { movePlayer("right"); } else if (input == "up") { movePlayer("up"); } else if (input == "down") { movePlayer("down"); } switch (input) { case "menu": menu(); break; case "quit": run = false; break; } menu(); printLoop(map);}function movePlayer(direction) { for (y=0; y<map.length; y++) { var playerPos = map[y].indexOf("Player"); if (movableRight(playerPos)) { if (direction == "right") { map[y].splice(playerPos, 1,"Blank"); map[y].splice(playerPos + 1, 1,"Player"); } } else if (movableLeft(playerPos)) { if (direction == "left") { map[y].splice(playerPos, 1,"Blank"); map[y].splice(playerPos - 1, 1,"Player"); } } if (direction == "up") { moveUp(); } else if (direction == "down") { moveDown(); } }}/*function getX(obj) { for (x = 0; x < map.length; x++) { for (y = 0; y < map[x].length; y++) { if (map[x][y] == obj) { return x; } } }}function getY(obj) { for (x = 0; x < map.length; x++) { for (y = 0; y < map[x].length; y++) { if (map[x][y] == obj) { return y; } } }}*/function movableLeft(pos) { if (pos <= 0) { console.log(pos + "<= 0"); return false; } else if (pos > map.length - 1) { console.log(pos + "> map.length - 1"); return false; } else { console.log(pos + "true"); return true; }}function movableRight(pos) { if (pos < 0) { return false; } else if (pos >= map.length - 1) { return false; } else { return true; }}function moveUp() { for (y = 0; y < map.length; y++) { for (x = 0; x < map[y].length; x++) { var posX = map[y].indexOf("Player"); if(posX > -1) { switch (y) { case 1: map[0].splice(posX, 1,"Player"); map[y].splice(posX, 1,"Blank"); break; case 2: map[1].splice(posX, 1,"Player"); map[y].splice(posX, 1,"Blank"); } } } }}function moveDown() { for (y = map.length - 1; y >= 0 ; y--) { for (x = map[y].length - 1; x >= 0; x--) { var posX = map[y].indexOf("Player"); if (posX > -1 && y == 0) { map[1].splice(posX, 1,"Player"); map[y].splice(posX, 1,"Blank"); return; } else if (posX > -1 && y == 1) { map[2].splice(posX, 1,"Player"); map[y].splice(posX, 1,"Blank"); return; } else if (posX > -1 && y == 2) { return; } } }}function printLoop(array) { var line0 = ""; var line1 = ""; var line2 = ""; for (y = 0; y < array.length; y++) { for (x = 0; x < array[y].length; x++) { switch (y) { case 0: line0 += array[y][x] + ", "; break; case 1: line1 += array[y][x] + ", "; break; case 2: line2 += array[y][x] + ", "; break; } } } console.log(" "); console.log(line0); console.log(line1); console.log(line2); console.log(" ");}function menu() { console.log("==============================="); console.log("up - down - right - left - quit"); console.log("===============================");}\[/code\]
 
Back
Top