Estoy tratando de crear un programa que presente un montón de mosaicos que cambian de color cuando haces clic en ellos. Sin embargo, estoy tratando de crear un bucle que modifique iterativamente las variables. Estoy usando esto como una plantilla. Cualquier ayuda sería apreciada.
function updateGameArea(){ myGameArea.clear(); myGameTile1.update(); myGameTile2.update(); myGameTile3.update(); ... } var myGameArea = { ... window.addEventListener("mousedown",function(e){ myGameArea.x = e.pageX; myGameArea.y = e.pageY; if(myGameArea.x <= 320 && myGameArea.y <= 320){ for(var y=0;y<10;y++){ for(var x=0;x<10;x++){ myGameTile+((y+1)*10+(x+1)) = component(32,32,"#000000",0,0); //I know this doesnt work, but this is what I imagine it would look something like } } } ...
myGameTiles
Sugeriría cambiar la forma en que está viendo este problema.
Si tiene varias variables de GameTile
que tienen las mismas propiedades, es mejor pensar en ellas como elementos en una matriz: por ejemplo, cree una matriz llamada myGameTiles
y luego inserte sus elementos en esta matriz.
// Create an array myGameTiles = []; myGameTiles.push(myGameTile1); myGameTiles.push(myGameTile2); myGameTiles.push(myGameTile3); // ... function updateGameArea(){ myGameArea.clear(); for (var i = 0; i < myGameTiles.length; i++) { myGameTiles[i].update(); } // ... } var myGameArea = { // ... window.addEventListener("mousedown",function(e){ myGameArea.x = e.pageX; myGameArea.y = e.pageY; if(myGameArea.x <= 320 && myGameArea.y <= 320){ for(var y=0;y<10;y++){ for(var x=0;x<10;x++){ function updateGameArea(){ myGameArea.clear(); myGameTile1.update(); myGameTile2.update(); myGameTile3.update(); ... } var myGameArea = { ... window.addEventListener("mousedown",function(e){ myGameArea.x = e.pageX; myGameArea.y = e.pageY; if(myGameArea.x <= 320 && myGameArea.y <= 320){ for(var y=0;y<10;y++){ for(var x=0;x<10;x++){ myGameTile+((y+1)*10+(x+1)) = component(32,32,"#000000",0,0); //I know this doesnt work, but this is what I imagine it would look something like } } } ...myGameTiles[(y+1)*10+(x+1)] = component(32,32,"#000000",0,0); // Very similar to your original code! } } } ...
Nota: NO se recomienda encarecidamente, pero también puede usar eval()
(por ejemplo eval('myGameTiles' + ((y+1)*10+(x+1)) + ' = component(32,32,"#000000",0,0);')
pero es inseguro e inseguro. Una vez más, no se recomienda encarecidamente).