— javascript, tutorials — 1 min read
今までの知識で問題なくオセロの盤面を生成するコードを書くことができるはずです。 どうでしょうか?下記のコードは問題なく読めますか?
moveTo
, lineTo
などは適宜、MDNで調べてみてください。
分からないことがあったら、 とりあえずMDNをみる ように習慣化してください。
1var canvas = document.getElementById("reversi")2var ctx = canvas.getContext("2d")3 4ctx.fillStyle = "black"5// 縦の線を引く6// `線` は 「二点間を結ぶ直線」 でしたね?7for (let col = 0; col < 8; col++) {8 ctx.beginPath(); // Start a new path9 ctx.moveTo(40 * col, 0); // Move the pen to10 ctx.lineTo(40 * col, 320); // Draw a line to11 ctx.stroke();12}13// 横の線を引く14for (let row = 0; row < 8; row++) {15 ctx.beginPath(); // Start a new path16 ctx.moveTo(0, 40 * row); // Move the pen to17 ctx.lineTo(320, 40 * row); // Draw a line to18 ctx.stroke();19}
オセロの盤面は8x8マスなので putStone(140, 140, "white")
の書き方でも石を思った通りの場所に配置出来ますが、
のような指定の仕方の方が一々頭の中で座標を計算しなくて済むため混乱しません。 コードを書き換えてみましょう。
ヒント1:onclickイベントをcanvasタグに追加する ヒント2:onclickイベントが発生した座標が取れないかMDNを見てみる、Googleで検索してみる
1function putStone(event){2 var rect = event.target.getBoundingClientRect();3 x = event.clientX - rect.left;4 y = event.clientY - rect.top;5 console.log({x, y})6 putStone(x, y, "white")7}
次回はこちら JavaScript道場:16日目 / オセロ②