Я изучаю p5. js.
У меня есть функция, которая вызывается в setup () (не волнуйтесь, просто вызов в настройке, он определен в другом месте):
CreateMaze = () => {
for(let i = 1; i <= numTiles; i++) {
let newTile = CreateTile(i);
let tileAdded = false;
while(!tileAdded) {
for(let j = 0; j < tiles.length; j++) {
print('new tile ' + newTile.x + ' ' + newTile.y);
print('array tile ' + tiles[j].x + ' ' + tiles[j].y);
if(newTile.x == tiles[j].x && newTile.y == tiles[j].y) {
print('new tile ' + newTile.x + ' ' + newTile.y);
print('array tile ' + tiles[j].x + ' ' + tiles[j].y);
newTile = CreateTile(i);
} else {
tiles.push(newTile);
tileAdded = true;
}
}
}
}
}
Также в setup () я создаю плитку с let centralTile = new Tile(floor(windowWidth/2), floor(windowHeight/2),'#4caf50');
и pu sh в виде массива tiles.push(centralTile);
.
CreateTile
:
CreateTile = (ndx) => {
print('creating tile; index: ' + ndx);
let dir = ChooseDir(); //choose a direction
print(dir);
let xoff, yoff;
switch(dir) { //assign an offset value
case "N": xoff = 0; yoff = -50; break;
case "E": xoff = 50; yoff = 0; break;
case "S": xoff = 0; yoff = 50; break;
case "W": xoff = -50; yoff = 0; break;
}
//create a tile based on previous tile's location
let newTile = new Tile(tiles[ndx - 1].x + xoff, tiles[ndx - 1].y + yoff);
print('new tile ' + newTile.x + ' ' + newTile.y);
print('array tile (' + ndx-1 + ') ' + tiles[ndx-1].x + ' ' + tiles[ndx-1].y);
return newTile;
}
Я сталкиваюсь с проблемой, когда первая плитка, созданная мной при настройке, совпадает со второй, полученной из CreateTile()
. Я использовал операторы print
, чтобы увидеть, где меняется значение для первого тайла. Это прямо перед if
. После создания второй плитки prints
говорит мне, что они разные. Но перед тем, как сравнить их, они одинаковы. Я не могу понять, почему / как я изменяю значения этого начального элемента массива. Я не могу найти ничего, что могло бы предположить, что это меняется. Как я уже сказал, когда я создаю вторую плитку, она отличается от первой (как и должно быть). Но когда приходит время сравнивать, они совпадают. Где происходит это изменение?