第17講 テトリス開発(ゲームオーバー設定まで)第5話 ブロックを時間とともに自動的に落としていく
ブロックを時間とともに自動的に落としていくコード例(変更部分だけ記載)
グローバル変数
int x=4,y; //整数型の箱xとyを用意
int hajimenojikoku; //始めの時刻を入れる整数型の箱
void block(){
int i,j,l;
y=(GetNowCount()-hajimenojikoku)/500;
for(i=0;i<4;i++){
if(y+q[s][k][i]>0)chizu[x+p[s][k][i]][y+q[s][k][i]]=2+s;
}
for(i=0;i<4;i++){
for (j = 0; j < 12; j++) {
for (l = 0; l < 27; l++) {
if (chizu[j][l] == 2 + i) {
if(i==0) DrawBox(20 * j, 20 * l, 20 * (j + 1) - 1, 20 * (l + 1) - 1, kiiro, true);
if(i==1) DrawBox(20 * j, 20 * l, 20 * (j + 1) - 1, 20 * (l + 1) - 1, mizuiro, true);
if(i==2) DrawBox(20 * j, 20 * l, 20 * (j + 1) - 1, 20 * (l + 1) - 1, aka, true);
if(i==3) DrawBox(20 * j, 20 * l, 20 * (j + 1) - 1, 20 * (l + 1) - 1, ao, true);
}
}
}
}
for(i=0;i<4;i++){
if(y+q[s][k][i]>=25){
t=1; //0:作動停止 1:作動
hajimenojikoku=GetNowCount();
}
}
}
コピペ用添付ファイル
y=(GetNowCount()-hajimenojikoku)/1000;
だと、1秒で1だけ進みます。
1は、
の1区画の1です。
これだと遅く感じる場合は、
y=(GetNowCount()-hajimenojikoku)/500;
などとします。
これだと0.5秒で1すすみますから、
1秒で2進むことになります。
速さは、割る数に反比例しますから、
割る数が小さくなるほど速くなり、
大きくなるほど遅くなります。
という説明を聞いても、高校生ぐらいの人でも納得できない人は多いと思います。
速くするには、割る数を大きくすればよいのか、小さくすればよいのか、
迷ったときは、両方試してみればよいのです。
最初の画面をメニュー画面としていますが、
その理由は、難易度をここで選べるように将来するからです。
難易度は
y=(GetNowCount()-hajimenojikoku)/割る数;
の割る数を調整することによって変えることができます。
ブロックが速く落ちてくるほど難易度はむずかしくなり、
遅いほど易しくなります。
第6話の課題は、床またはブロックに着いたブロックを残すことです。
これを実現するには、
新しいグローバル変数
char chizumodosu[12][27]; //地図配置を元に戻す 1:可 0:不可
を用意して、
void chizusakusei() {
int gazou = LoadGraph("画像/kb00.png");
int i,j;
for (i = 0; i < 12; i++) {
for (j = 0; j < 27; j++) {
chizu[i][j] = 0;
}
}
の青を改良します。
ある条件のときだけ、
0に戻すことを可とするのです。
char chizumodosu[12][27];
の初期化は、新しい社員syokika()を雇い、
その社員にやらせて下さい。
最初は配列のすべてを1に初期化して下さい。
また、
srand((unsigned) time(NULL)); //乱数の系列決定するシード値を現在時刻から取得
hajimenojikoku=GetNowCount(); //ゲーム起動時の時刻をゲット
もsyokika()に移動して下さい。
要するに社員syokika()は、ゲームの最初の設定を担当する社員です。
ヒントを書いておくと、今回はy>=?のような単純なものではありません。
第4話へ 第6話へ
初心者のための excel 2016 マクロ VBA 入門講義 基礎から応用まで
vc++ c言語 c++ 入門 初心者 基礎から応用まで
eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門
数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
本サイトトップへ