第6講 ブロック崩しその4(バーを描き、←→キーでバーを動かし、バーでボールを跳ね返し、ブロックに当たるとブロックが消えるようにする)
第7話 2次元配列を利用したプログラム
第6話問題解答例
#include<stdio.h>
void f(); //データ作成社員
void g(); //データ表示社員
int a[5][4];
int main()
{
  f();
  g();
  return 0;
}
void f() {
  int i,j;
  for (i = 0; i < 5; i++) {
    for (j = 0; j < 4; j++) {
      if (i % 2 == 0)a[i][j] = (4 * i + j) % 2;
      if (i % 2 == 1)a[i][j] = (4 * i + j + 1) % 2;
    }
  }
}
void g() {
  int i, j;
  for (i = 0; i < 5; i++) {
    for (j = 0; j < 4; j++) {
      printf("%d ", a[i][j]);
    }
    printf("\n");
  }
}
コピペ用添付ファイル


ブロックを消すには、
グローバル配列を利用します。
ブロックが存在している状態を1とし、
ブロックが消えている状態を0として、
1のときのみにブロックを描けばよいのです。
理由は簡単です。
ClearDrawScreen()を使って1フレーム(1回転)ごとの画面を消していますから、
新しいフレームでブロックを描かなければ、消えたままになります。
配列は
int arunasi[10][4]; //*arunasi(あるなし) ある:1 ない:0とする
として宣言しましょう。
そして、2次元for文を使い最初はすべて1に初期化しておきます。
初期化の仕事を行う社員
void syokika(); //しょきか 初期化の仕事を行う社員
も雇いましょう。
今の時点の仕事内容は、配列arunasi[10][4]の値をすべて1にするだけですが、
将来的には、
ボールの速さ、ブロックの層数(縦数)、バーの速さなども決める仕事を担当させます。
この場合は、初期化は最初の状態を定義(約束)=設定するという意味になります。
では皆さんプログラムしてください。


第6話へ  第8話へ
a

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

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