やってみたJavaScript(0004): セル毎に塗る
やってみたJavaScript、今回は、セル毎に塗れるようにする。
セルってのはLife Gameでいうところの、縦横の線で区切られた一つ一つの四角のこと。今までは枠線を無視してたので、クリックしたセル単位で塗れるようにする。
test0004
https://www.hircos.work/test/test0004
クリックしたセルをマーク
将来的には単位時間ごとにそれぞれのセルを塗る/塗らないという判断をして塗ることになるので、単純にクリックしたセルを塗るだけじゃなくて、クリックしたセルをマークしておく。
var cells = new Array(CANVAS_WIDTH/CELL_WIDTH);
for( let i = 0 ; i < cells.length ; i++ ){
cells[i] = new Array(CANVAS_WIDTH/CELL_WIDTH);
}
function onClick(e){
let rect = e.target.getBoundingClientRect();
let point_x = Math.floor( (e.clientX-rect.left)/CELL_WIDTH );
let point_y = Math.floor( (e.clientY-rect.top) /CELL_WIDTH );
cells[point_x][point_y] = true;
drawRect( point_x*CELL_WIDTH, point_y*CELL_WIDTH );
}
とりあえず二次元配列。
セル毎に塗る
セルのサイズは定義してあったので、あとは座標を何とかすればよし。
let point_x = Math.floor( (e.clientX-rect.left)/CELL_WIDTH );
let point_y = Math.floor( (e.clientY-rect.top) /CELL_WIDTH );
セルサイズで割ってMath.floorで小数点以下を切り捨てればいい感じになるかと。
いじょ。