将数组重置为原始值
Reset Array back to Original values
我正在使用 Javascript 开发一个简单的游戏,涉及对 HTML5 canvas 的更改。在数组中输入一定数量(10+)的对象:
var boxes = [];
boxes.push({
x: 0,
y:canvas.height - 370,
width: 400,
height: 20});
boxes.push({
x: 300,
y:canvas.height - 100,
width: 150,
height: 90});
然后整个数组 运行 通过一个更新函数,根据玩家的位置改变 x 值:
for (var i = 0; i < boxes.length; i++) {
if (boxes[1].x > -3000 + canvas.width) {
boxes[i].x -= robot.speed * modifier;
robot.x = canvas.width - 300;
};
};
当玩家死亡时重置函数是运行:
var reset = function () {
robot.x = 0;
robot.y = 500;
++deaths;
};
我正在寻找一种方法来将 boxes
数组的所有值重置为原始值,当此函数 运行s 时,本质上是重置地图,而不必输入每个值手动,即 boxes[1].x = 300
从单个函数简单地初始化:
var boxes;
initBoxes();
function initBoxes() {
boxes = [];
boxes.push({
x: 0,
y:canvas.height - 370,
width: 400,
height: 20});
boxes.push({
x: 300,
y:canvas.height - 100,
width: 150,
height: 90});
}
然后每次需要初始化的时候记得initBoxes()
。
听起来你想使用 Memento Pattern
您可以在 reset()
函数中初始化盒子,并确保在游戏的第一个 运行 之前调用 call reset()
。
var deaths = -1;
var boxes = [];
function reset() {
robot.x = 0;
robot.y = 500;
boxes = [{
x: 0,
y:canvas.height - 370,
width: 400,
height: 20
}, {
x: 300,
y:canvas.height - 100,
width: 150,
height: 90
}];
++deaths;
}
只需使用 2 个变量
var initBoxes = [];
initBoxes.push({
x: 0,
y:canvas.height - 370,
width: 400,
height: 20});
initBoxes.push({
x: 300,
y:canvas.height - 100,
width: 150,
height: 90});
var boxes = initBoxes;
然后,当您需要重置盒子时,只需
boxes = initBoxes;
我正在使用 Javascript 开发一个简单的游戏,涉及对 HTML5 canvas 的更改。在数组中输入一定数量(10+)的对象:
var boxes = [];
boxes.push({
x: 0,
y:canvas.height - 370,
width: 400,
height: 20});
boxes.push({
x: 300,
y:canvas.height - 100,
width: 150,
height: 90});
然后整个数组 运行 通过一个更新函数,根据玩家的位置改变 x 值:
for (var i = 0; i < boxes.length; i++) {
if (boxes[1].x > -3000 + canvas.width) {
boxes[i].x -= robot.speed * modifier;
robot.x = canvas.width - 300;
};
};
当玩家死亡时重置函数是运行:
var reset = function () {
robot.x = 0;
robot.y = 500;
++deaths;
};
我正在寻找一种方法来将 boxes
数组的所有值重置为原始值,当此函数 运行s 时,本质上是重置地图,而不必输入每个值手动,即 boxes[1].x = 300
从单个函数简单地初始化:
var boxes;
initBoxes();
function initBoxes() {
boxes = [];
boxes.push({
x: 0,
y:canvas.height - 370,
width: 400,
height: 20});
boxes.push({
x: 300,
y:canvas.height - 100,
width: 150,
height: 90});
}
然后每次需要初始化的时候记得initBoxes()
。
听起来你想使用 Memento Pattern
您可以在 reset()
函数中初始化盒子,并确保在游戏的第一个 运行 之前调用 call reset()
。
var deaths = -1;
var boxes = [];
function reset() {
robot.x = 0;
robot.y = 500;
boxes = [{
x: 0,
y:canvas.height - 370,
width: 400,
height: 20
}, {
x: 300,
y:canvas.height - 100,
width: 150,
height: 90
}];
++deaths;
}
只需使用 2 个变量
var initBoxes = [];
initBoxes.push({
x: 0,
y:canvas.height - 370,
width: 400,
height: 20});
initBoxes.push({
x: 300,
y:canvas.height - 100,
width: 150,
height: 90});
var boxes = initBoxes;
然后,当您需要重置盒子时,只需
boxes = initBoxes;