【发布时间】:2019-07-21 11:39:51
【问题描述】:
有一个rectangular 网格,大小为12 by 12,其中每个角都是可点击的,距离12*12 网格的每个角有6*3 个单元格(单击4 corners 中的任何一个应选择6*3 cells),这将通过颜色变化来指示。
单击其中一个角后,将检查剩余的单元格,即(144-18 =126) 126 个单元格,是否可以被一个数字整除。
例如,126/6 =21,所以现在每个 21 部分应该用不同的颜色表示。需要检查的数字取决于用户,如果用户给出一个不可整除的数字,它不会显示任何变化。
我尝试应用的逻辑是,我创建了一个大小为12*12 的多维数组,其中包含全零。当用户通过角坐标之一时,6*3 单元格将变为 1。但是我不知道如何在html画布中实现这个逻辑,也不知道如何进一步进行。
addBed = (x, y) => {
let test = Array(12).fill(0).map(x => Array(12).fill(0));
let bedX = 3, bedY = 6; // BED AREA = 6*3
let dx = 1, dy = 1;
let endX = bedX, endY = bedY;
const roomX = 11, roomY = 11
if (x === roomX) {
dx = -1
endX = roomX - bedX
}
if (y === roomY) {
dy = -1
endY = roomY - bedY
}
for (let i = x; dx === 1 ? i < endX : i > endX; i += dx) {
for (let j = y; dy === 1 ? j < endY : j > endY; j += dy) {
test[i][j] = 1;
}
}
console.log(test)
// this.setState({ testMap: test });
}
addBed(0, 0); // this will make the first corner to be turned to 1
【问题讨论】:
-
不,我检查了它,我对 java 脚本完全陌生,所以我在理解上遇到了更多麻烦。
-
您是否想弄清楚如何获取画布点击 x/y 位置?或者您是否想弄清楚如何更改画布特定区域的颜色?或者你是否试图找出数学来获得这些区域的界限?或者您是否想弄清楚如何检查哪些区域可以被数字整除?或者这是一堆问题写成一个?
-
是的,这是一堆问题,但我想知道的主要是如何获得单击的单元格的 x、y 坐标,以及如何将单元格分成相等的部分。
-
@christina 好的,你可能想删除并写成单独的问题。你会得到更好更快的响应。通常,多部分问题最终会被版主关闭。
标签: javascript html html5-canvas