第18回【テトリス制作.6】


まずは動画を見てくださいね!
一定間隔でブロックが落ちてくるようにします。
setInterval()というAPIを使います。
また、下にぶつかったらフィールドに固定します。

一定間隔で呼び出す関数を作る

//落ちるスピード
const GAME_SPEED = 1000;
...
setInterval( dropTetro, GAME_SPEED );
これでGAME_SPEEDの値(ms)の間隔でdropTetro関数が呼ばれる様になります。
GAME_SPEEDが1000なら1000ミリ秒(1秒)間隔です。

なのでdropTetro関数を作ります。
// ブロックの落ちる処理
function dropTetro()
{
	if( checkMove(  0, 1 ) )tetro_y++;
	drawAll();
}
下キーを押した時と同じ処理を入れました。
これで一定間隔で落ちてくるようになります。


フィールドに固定する

下にぶつかったらフィールドに固定してしまいましょう。
// ブロックの落ちる処理
function dropTetro()
{
	if( checkMove(  0, 1 ) )tetro_y++;
	else
	{
		fixTetro();
		tetro_x = 0;
		tetro_y = 0;
	}
	drawAll();
}
落ちようとした時に下に動けない時、つまり固定する時です。
この時にfixTetroという関数を呼ぶようにします。
また、固定したら座標を0,0に設定しなおしています。

そしてfixTetro関数を作ります。
//テトロを固定する
function fixTetro()
{
	for(let y=0; y<TETRO_SIZE ; y++ )
	{
		for(let x=0; x<TETRO_SIZE ; x++ )
		{
			if( tetro[y][x] )
			{
				field[tetro_y + y][tetro_x + x] = 1;
			}
		}
	}
}
これで下にぶつかった時にフィールドに固定される様になりました。
あともうちょっとですね!

続く...





akichon/あきちょん
Youtubeでプログラミング講座やってるゲーム好きの(元?)プログラマ...
>>open profile...
■Twitter始めました
https://twitter.com/ak1chon
■Youtubeチャンネルはこちら
akichon(Youtube)