第7講 テトリス開発(4つのブロックを描くまで)
第7話 正方形ブロックを2次元for文を利用して描く
を実現するコード例(変更部分のみ記載)
void block(){
int x,y;
for(x=0;x<2;x++){
for(y=0;y<2;y++){
chizu[2+x][3+y]=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);
}
}
}
}
コピペ用添付ファイル
for(x=0;x<2;x++){
for(y=0;y<2;y++){
chizu[2+x][3+y]=2;
}
}
の部分を2次元for文でなく、1次元for文で済ます方法はあるでしょうか。
ある場合は、1次元for文でを実現してください。
ヒントを書いておきましょう。
%と/を使います。
a%b(a % b と間に半角スペースを入れても同じです。)はaをbで割った余りを求める式です。
ですから、5 % 3 = 2 です。
a/b(これもa / b と間に半角スペースを入れても可です。)はaをbで割った商を求める式です。
ここで注意が必要です。
5 / 3 は 5 / 3 = 1 です。
なぜなら、テトリスでは整数型変数しか利用しないからです。
5 / 3 = 1.66666・・・ですが、
これを整数型の箱に入れるときには、
小数部分が捨てられて1に丸められます。
したがって、aとbが整数型変数の場合5 / 3 = 1 となるのです。
答えは、30行下。
答
あります。
コード例
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);
}
}
}
}
コピペ用添付ファイル
解説
コンピュータの動きを追うことをトレースといいます。
トレースしてみましょう。
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+1][3+0]=2;
↓
chizu[3][3]=2;
i=2のとき、
chizu[2+i%2][3+i/2]=2;
↓
chizu[2+2%2][3+2/2]=2;
↓
chizu[2+0][3+1]=2;
↓
chizu[2][4]=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;
結果だけ書くと
chizu[2][3]=2; chizu[3][3]=2;
chizu[2][4]=2; chizu[3][4]=2;
座標(x、y)は、
2 | 3 | x | |
3 | 1 | 2 | |
4 | 3 | 4 | |
y |
(2,3)→(3,3)→(2,4)→(3,4)の順で動きます。
では、
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);
}
}
}
}
コピペ用添付ファイル
とするとどのように動くでしょうか。
第6話へ 第8話へ
初心者のための excel 2016 マクロ VBA 入門講義 基礎から応用まで
vc++ c言語 c++ 入門 初心者 基礎から応用まで
eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門
数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
本サイトトップへ