【7】アリクイあくしょんコード解説 242行目〜

JavaScript
// 描画関数
function drawBlocks() {
  ctx.fillStyle = "brown";
  blocks.forEach(block => {
    ctx.fillRect(block.x - worldX, block.y, block.width, block.height);
  });
}
function drawHiddenBlocks() {
  hiddenBlocks.forEach(block => {
    if (block.visible) {
      ctx.fillStyle = "orange";
      ctx.fillRect(block.x - worldX, block.y, block.width, block.height);
    }
  });
}
function drawGoal() {
  ctx.fillStyle = "gold";
  ctx.fillRect(goal.x - worldX, goal.y, goal.width, goal.height);
}

function drawBlocks() {}

たかまる
たかまる

「drawBlocks」という名前の関数を定義しているよ。
今回引数は使わないから空カッコだよ。

ctx.fillStyle = “brown”;

イカクくん
イカクくん

ctx は2行目で定義したね。

fillStyle → キャンバス上で「四角などを塗りつぶす色」を指定するプロパティ

blocks.forEach(…)

forEach は 「すべての要素に対して順番に処理する」 JavaScriptの組み込みメソッド。

fillRect(x, y, width, height) は、塗りつぶされた四角形を描く。
fill は埋める、塗りつぶすの意。
Rectは、Rectangle(レクタングル)= 長方形 の略。

fillStyle は塗る色の指定。

(block.x – worldX, block.y, block.width, block.height)
パーツ意味と目的
block.x - worldXブロックの横位置 引く(-) カメラ位置
block.yブロックの縦位置
block.widthブロックの幅
block.heightブロックの高さ

もし block.x = 500worldX = 100 なら…

ctx.fillRect(500 - 100, block.y, block.width, block.height);// → 実際の表示位置は 400 に

カメラが100だけ右に進んだぶん、ブロックは左にずれて見えるという仕組み。
つまり、
ブロックの位置とサイズをもとに
📷 カメラ(worldX)を考慮して
🖼️ キャンバスに描画するための 描画座標を作っている。

✅ まとめ:この関数は何をする?
function drawBlocks() {
  ctx.fillStyle = "brown";
  blocks.forEach(block => {
    ctx.fillRect(block.x - worldX, block.y, block.width, block.height);
  });
}

全ブロックを、現在のカメラ位置に合わせて表示する
そのとき、ブロックは「茶色」で描かれる。

visible

イカクくん
イカクくん

隠しブロックのところに
if (block.visible)
ってのがあるけど、
これは何?

たかまる
たかまる

visible
は、直訳すると
見える
だよ。

function drawHiddenBlocks() {
  hiddenBlocks.forEach(block => {
    if (block.visible) {
      ctx.fillStyle = "orange";
      ctx.fillRect(block.x - worldX, block.y, block.width, block.height);
    }
  });
  • if (block.visible) は、「そのブロックが見える状態(true)かどうか」を判断する
  • visible は true/false の値をもつプロパティ(属性)
  • 主に 描画するか・しないかを制御するために使われる
イカクくん
イカクくん

隠しブロックが見える状態になったら描画するってことか〜。

たかまる
たかまる

そっ!
んじゃ次行くよー!

コメント

タイトルとURLをコピーしました