3 回答

TA贡献2080条经验 获得超4个赞
对于初学者,您永远不会将结果分配intiateGrid(10)给网格。应该是let grid = intiateGrid(10)。代码也有更多问题,但请让我了解更多。例如应该intiateGrid(number)创建一个方阵?初始值应该是多少?此外,不要在循环时改变矩阵。
const grid = intiateGrid(10);
const player = {
rowIndex: 0,
colIndex: 0
}
//player starts at [0][0]
movePlayer(0, 0)
function intiateGrid(x) {
const arr = new Array(x).fill(0); // array with x zeros
const grid = arr.map(element => new Array(x).fill('O')) // array with x arrays, each with x zeros.
return grid;
}
function movePlayer(row, col) {
grid[row][col] = 'P';
//set -1 to previous location
grid[player.rowIndex][player.colIndex] = 'X'
//update player location
player.rowIndex = row;
player.colIndex = col;
console.log(`Player is at [${player.rowIndex}][${player.colIndex}]`)
}
movePlayer(1,0);
movePlayer(1,1);
movePlayer(1,2);
movePlayer(1,3);
movePlayer(2,3);
grid.forEach(row => console.log(row.join(' | ')))

TA贡献1871条经验 获得超8个赞
从您的问题中并不完全清楚,但是:
例如,let p = grid[0][0]然后我希望能够将其移动到 grid[1][0]、grid[1][5] 等。
使您看起来好像要创建某种指向二维数组结构中某个位置的“指针”。没有真正的方法可以用一个简单的值来实现这一点。一种方法是使用对象:
let p = { x: 0, y: 0 };
然后你可以创建函数来使用这样的对象来返回一个网格单元:
function getCell(pointer) {
return grid[pointer.x][pointer.y];
}
function setCell(pointer, value) {
grid[pointer.x][pointer.y] = value;
}
除了像这两个示例那样将其隐藏在函数内部之外,您最终无法避免使用两个单独的数字来显式索引到二维结构中。
添加回答
举报