Home > Enterprise >  How to insert an X in a specific location in a matrix where a user wants it?
How to insert an X in a specific location in a matrix where a user wants it?

Time:09-30

I am trying to do something like this - OOOOOOOOOO \n OOOOOOOOOO \n OOOOOOOOOO \n OOOOOOOOOO \n OOOOOOOOOO \n OOOOOOOOOO \n OOOOOOOOOO \n OOOOOOOOOO \n OOOOOOOOOO \n OOOOOOOOOO \n where a user would input a certain row from the array, and a certain column, and an X can be placed there instead of the zero. I have tried using a switch table, but I can not think of a more efficient way. Here is the code I have so far.

var allRows2 = ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O"];
var allRows3 = ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O"];
var allRows4 = ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O"];
var allRows5 = ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O"];
var allRows6 = ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O"];
var allRows7 = ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O"];
var allRows8 = ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O"];
var allRows9 = ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O"];
var allRows10 = ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O"];
var userinr = prompt("Which row would you like to put the X in?");
var userinc = prompt("Which column would you like to put your piece in?");
switch(userin) {
  case "1":
    var therow = 1;
    break;
  case "2":
    var therow = 2;
    break;
  case "3":
    var therow = 3;
    break;
  case "4":
    var therow = 4;
    break;
  case "5":
    var therow = 5;
    break;
  case "6":
    var therow = 6;
    break;
  case "7":
    var therow = 7;
    break;
} ```
I am unsure how to continue, any help would be appreciated:)

CodePudding user response:

Instead of storing each row in an individual variable, store all the rows in nested arrays. Then reference the item and position with bracket notation:

var allRows = [["O", "O", "O", "O", "O", "O", "O", "O", "O", "O"],["O", "O", "O", "O", "O", "O", "O", "O", "O", "O"],["O", "O", "O", "O", "O", "O", "O", "O", "O", "O"],["O", "O", "O", "O", "O", "O", "O", "O", "O", "O"],["O", "O", "O", "O", "O", "O", "O", "O", "O", "O"],["O", "O", "O", "O", "O", "O", "O", "O", "O", "O"],["O", "O", "O", "O", "O", "O", "O", "O", "O", "O"],["O", "O", "O", "O", "O", "O", "O", "O", "O", "O"],["O", "O", "O", "O", "O", "O", "O", "O", "O", "O"]];

const row = 2;
const position = 5;

allRows[row][position] = "X"
console.log(JSON.stringify(allRows))

CodePudding user response:

Here's my example. The comments should make it easier to unserstand.

// easiest way to make a grid.
// Array(n), makes an empty array with a length of n.
// Array.fill(v) changes all the array items to be v.
// Array.map(function) makes a new array from what is returned from the callback function.
const grid = Array(10)
  .fill([])
  .map(() => Array(10).fill("o"));

// Multidimentional arrays work in reverse. y then x. 
// grid[y][x]
grid[5][3] = "x";
console.log("Example 1")
grid.forEach(row => console.log(row.join("")))

// you can make a helper function to make it more intuitive.
function change([x, y], value){
  grid[y][x] = value;
}

// Now we can use the coordinates normally.

console.log("\nExample 2")
change([0, 5], "v")
grid.forEach(row => console.log(row.join("")))

  • Related