第15講 テトリス(4つのブロックを描くまで)
第9話 正方形ブロックを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)の順で動かすにはどうしたらよいですか。
この問題の答えは、第16講で答えます。
次の話の課題を出しましょう。
を実現して下さい。
さすがに今回は、いきなり1次元for文での実現はむずかしいと思いますので、
手作業で実現して下さい。
尚、この講義ではをN字ブロックと名付けます。
本当はキーブロックと呼ぶのかもしれませんが、
ゲーム初心者の私には、呼び方はわかりませんので、
N字ブロックと呼ぶことをお許し下さい。
第8話へ 第10話へ
初心者のための excel 2016 マクロ VBA 入門講義 基礎から応用まで
vc++ c言語 c++ 入門 初心者 基礎から応用まで
eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門
数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
本サイトトップへ