にしのクエスト2

情報処理技術者試験と資格学校講師の日常

20201108175215

Unityで学ぶプログラミング  テトリス的を作る(9)ブロックの積み重ね

こんにちは!

テトリス的なものを作っていきます。長い連載になります
で、気長にお付き合いください。

なお、プログラムの内容は難しいので、初心者には向きませ
ん。いきなり作るのは厳しいのでよろしくお願いします。
また、説明も大幅に省いていきます。

最後に注意事項
ご紹介するのはあくまで「テトリス的」です。そのものでは
ありませんし、非常にシンプルに遊べるだけのものです。

連載終了後に、より詳しい技術的な解説&追加機能を加えた
電子書籍を発行する予定ですので、よろしくお願いします。


今回はブロックを次々と降らせてみましょう
動けなくなったブロックは一旦、ステージに保存しておきます。
そして、再度ブロックを作成しますが。

ブロック作成部分に、初期位置を追加します。

{0,1,0,0}};
break;
default:
break;
}

//ブロックを初期位置にする
x=5;
y=0;

//フィールドにブロックを加える
for(i=0;i<4;i++){

該当の場所、わかるでしょうか?

新しく、ロックさせるプログラムを書いておきます。

void LockBlk(){
int i,j;
//フィールドの状態を記録
for(i=0;i<12;i++){
for(j=0;j<21;j++){
stage[i,j]=field[i,j];
}
}
}


Updateの部分を変更します。
もし、下に移動できなければ・・・を追加です。

//時間経過後
if(delta>=span){

//自然移動下に行けるかチェックして
if(ChkBlk(x,y+1)==0){
//重なってないなら移動
MoveBlk(x,y+1);
delta=0;
//時間をリセット
}else{
//そうじゃなければ
//ブロックを固定して
LockBlk();
//次のブロックを作成し
makeBlk();
//描画し直す
Render();
//時間をリセット
delta=0;
}
}


これで、次々ブロックが積み重なっていきます。

f:id:koharuwest:20210131223845p:plain



次回は、ブロックを回転させてみたいと思います。

 

f:id:koharuwest:20210117110657p:plain


それではよきプログラミングライフを!
またね。