こんにちは!
テトリス的なものを作っていきます。長い連載になりますの
で、気長にお付き合いください。
なお、プログラムの内容は難しいので、初心者には向きませ
ん。いきなり作るのは厳しいのでよろしくお願いします。
また、説明も大幅に省いていきます。
最後に注意事項
ご紹介するのはあくまで「テトリス的」です。そのものでは
ありませんし、非常にシンプルに遊べるだけのものです。
連載終了後に、より詳しい技術的な解説&追加機能を加えた
電子書籍を発行する予定ですので、よろしくお願いします。
今回はブロックを回転させます
スペースキーを押すと、回転するようにしましょう。
なので、update部分に次のようなものを追加して。
//回転させる場合(スペースキー)
if(Input.GetKey(KeyCode.Space)){
TurnBlk();
}
新しくTurnBlkのプログラムを書いていきます。
このロジックについては、ちょっと説明が長くなるので、省
略します(調べてみてね)が、ステージの変数の値を広めに
取っていることで、壁際でエラーが発生しなくなっています。
これが私の工夫でございます。
これで、次々ブロックが積み重なっていきます。
int TurnBlk(){
int i,j;
//ブロックを一時セーブ
for(i=0;i<4;i++){
for(j=0;j<4;j++){
blktmp[i,j]=blk[i,j];
}
}
//ブロックを回転させる
for(i=0;i<4;i++){
for(j=0;j<4;j++){
blk[i,j]=blktmp[3-j,i];
}
}
//重なりがあれば元に戻す
if(ChkBlk(x,y)==1){
for(i=0;i<4;i++){
for(j=0;j<4;j++){
blk[i,j]=blktmp[i,j];
}
}
return 1;
}
//ブロックを消して再描画
for(i=0;i<4;i++){
for(j=0;j<4;j++){
field[i+x,j+y]-=blktmp[i,j];
field[i+x,j+y]+=blk[i,j];
}
}
Render();
return 0;
}
次回は、ブロックを消してみたいと思います!
それではよきプログラミングライフを!
またね。