にしのクエスト2

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

20221224103753

Unityで学ぶプログラミング  テトリス的を作る(4)ブロックを表示する

こんにちは!

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

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

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

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


今回はブロックを表示してみましょう
ちょっと長いですが、よろしくお願いします!

//ブロック番号
public int blkno;
 

ブロックの番号の変数を作っていきます。

//ブロック番号
public int blkno;

v
oid Start()
{
 
//コントロール変数
int i,j;
//ブロックを並べる(物理的に)
//タテ21並べた後それを横12
for(i=2;i<14;i++){
for(j=0;j<21;j++){
Instantiate(BlkObj,new Vector3(i*1.0f,j*-1.0f,0),Quaternion.identity);
}
}
 
//壁の設定
for(i=0;i<16;i++){
for(j=0;j<23;j++){
//壁に該当する部分は9
if(i==2||i==13||j==20){
stage[i,j]=9;
}else{
//それ以外は0を入れる
stage[i,j]=0;
}
}
}

//ステージのデータを描く
for(i=2;i<14;i++){
for(j=0;j<21;j++){
field[i,j]=stage[i,j];
}
}
 
 

ここまでは前回と同じかな?

//ブロック作成
makeBlk();
}

ブロック作成を付け加えます。
プログラムは以下の通りです。

void makeBlk(){
int i,j;
 
 
blkno=Random.Range(0,7);
switch(blkno){
case 0:
blk =new int[4,4]{
{0,0,0,0},
{0,1,1,0},
{0,1,0,0},
{0,1,0,0}};
break;
case 1:
blk =new int[4,4]{
{0,0,0,0},
{0,1,1,0},
{0,0,1,0},
{0,0,1,0}};
break;
case 2:
blk =new int[4,4]{
{0,0,0,0},
{0,1,1,0},
{0,1,1,0},
{0,0,0,0}};
break;
case 3:
blk =new int[4,4]{
{0,0,0,0},
{0,1,0,0},
{1,1,1,0},
{0,0,0,0}};
break;
case 4:
blk =new int[4,4]{
{0,0,0,0},
{0,1,0,0},
{0,1,1,0},
{0,0,1,0}};
break;
case 5:
blk =new int[4,4]{
{0,0,0,0},
{0,0,1,0},
{0,1,1,0},
{0,1,0,0}};
break;
case 7:
blk =new int[4,4]{
{0,0,0,0},
{1,1,1,1},
{0,0,0,0},
{0,0,0,0}};
break;
case 6:
blk =new int[4,4]{
{0,1,0,0},
{0,1,0,0},
{0,1,0,0},
{0,1,0,0}};
break;
default:
break;
}


//フィールドにブロックを加える
for(i=0;i<4;i++){
for(j=0;j<4;j++){
field[i+5,j]=stage[i+5,j]+blk[i,j];

 
}
}
}

単純にブロックをランダムにして、配列にデータを読み込ませます。
フィールドにそれを付け加えて表示させます。

f:id:koharuwest:20210111104355p:plain



次回は、ブロックを落としてみましょう!

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