第7講 テトリス開発(4つのブロックを描くまで)
第8話 正方形ブロックを1次元for文で描く第2の方法
void block(){
  int x,y;
  int i;
  for(i=0;i<4;i++){
    
chizu[2+i/2][3+i%2]=2;
  }
  for (x = 0; x < 12; x++) {
    for (y = 0; y < 27; y++) {
      if (chizu[x][y] == 2) {
        DrawBox(20 * x, 20 * y, 20 * (x + 1) - 1, 20 * (y + 1) - 1, kiiro, true);
      }
    }
  }
}
コピペ用添付ファイル
による動き

座標(x、y)は、

2 3 x
3 1 3
4 2 4
y

(2,3)→(2,4)→(3,3)→(3,4)の順で動きます。

トレースで確認してみましょう。
i=0のとき、
    chizu[2+i/2][3+i%2]=2;
         ↓
    chizu[2+0/2][3+0%2]=2;
         ↓
    chizu[2+0][3+0]=2;
         ↓
    chizu[2][3]=2;
i=1のとき、
    chizu[2+i/2][3+i%2]=2;
         ↓
    chizu[2+1/2][3+1%2]=2;
         ↓
    chizu[2+0][3+1]=2;
         ↓
    chizu[2][4]=2;
i=2のとき、
    chizu[2+i/2][3+i%2]=2;
         ↓
    chizu[2+2/2][3+2%2]=2;
         ↓
    chizu[2+1][3+0]=2;
         ↓
    chizu[3][3]=2;
i=3のとき、
    chizu[2+i/2][3+i%2]=2;
         ↓
    chizu[2+3/2][3+3%2]=2;
         ↓
    chizu[2+1][3+1]=2;
         ↓
    chizu[3][4]=2;
確かに、

2 3 x
3 1 3
4 2 4
y

(2,3)→(2,4)→(3,3)→(3,4)の順で動いていますね。

では、時計周り

2 3 x
3 2 3
4 1 4
y

(2,4)→(2,3)→(3,3)→(3,4)の順で動かすにはどうしたらよいですか。
この問題の答えは、第8講で答えます。

次の話の課題を出しましょう。

011を実現して下さい。
さすがに今回は、いきなり1次元for文での実現はむずかしいと思いますので、
手作業で実現して下さい。
尚、この講義では035をN字ブロックと名付けます。
本当はキーブロックと呼ぶのかもしれませんが、
ゲーム初心者の私には、呼び方はわかりませんので、
N字ブロックと呼ぶことをお許し下さい。



第7話へ  第9話へ

002

初心者のための excel 2016 マクロ VBA 入門講義 基礎から応用まで
vc++ c言語 c++ 入門 初心者 基礎から応用まで
eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門

数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
本サイトトップへ