プロが教えるわが家の防犯対策術!

・下記リンク先の「8 配列をブロックに変換」コードの意味が分からないので教えてください。
http://svn.coderepos.org/share/docs/amachang/200 …

・下記はブロックの元となる配列?
・なぜ[0,1]が2つ?
      var block = [
        [1,1],
        [0,1],
        [0,1]
      ];

・赤ブロックを生成していると思うのですが、式の意味が分かりません
・何をやっているのでしょうか?
・外側のfor文でblockへ格納されている配列の要素数未満までループ(0~2)
・何のために???
      for (var y = 0; y < block.length; y ++) {
        for (var x = 0; x < block[y].length; x ++) {
          if (block[y][x]) {
            ctx.fillRect(x * 20, y * 20, 20, 20);
          }
        }
      }

A 回答 (2件)

それは「逆さL」のブロックを赤で描く処理ですね。


■■
  ■
  ■
こういうの。

for (var y = 0; y < block.length; y ++) {     <--縦のループで0から2の3回
 for (var x = 0; x < block[y].length; x ++) {   <--横のループで0から1の2回
  if (block[y][x]) {                 <--配列の内容が1か判定
   ctx.fillRect(x * 20, y * 20, 20, 20);     <--赤い■を描く

これでわかりますか?

この回答への補足

回答ありがとうございました。

・コメントいただいたおかげで、何やってるかようやく分かりました

・ただ、コードがあるから処理を追えるだけで、一から作成することは難しいです
・ループに一つ一つ値を当てはめていかないと、完成形が全くイメージできません

・慣れの問題でしょうか?
・考え方というか、何かコツとかあるでしょうか?

補足日時:2014/03/09 13:16
    • good
    • 0

多次元配列のループ処理は慣れです


頑張ってください
    • good
    • 0
この回答へのお礼

回答ありがとうございましたー

お礼日時:2014/03/12 08:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!