トップページ > 電子工作インデックス > テトリス > 9. 入力処理関数
コントローラーの入力に従って、各ブロック操作関数を呼び出す関数です。
//********************************************************************
//入力に対して操作を決定します。
//check_back_block()を呼び出す→干渉なし→ブロックを動かす
//ブロックを動かす各関数は、別に記述しておきます。
//-------------------------------------------------------------------
//ハードウェア情報
//PORTB…コントローラ入力、すべてプルアップされています。
//pb0…下
//pb1…右
//pb2…左
//pb3…回転1
//pb4…回転2
//--------------------------------------------------------------------
void controlblock(void)
{
char key;
key=pbdr;
switch(key)
{
//------------------------------------------------------------------
//下
case 0x1e:
if(check_back_block(x,y+2) ==0)
{
move_block(x,y+2);
}
break;
//下
case 0x1c:
if(check_back_block(x,y+2) ==0)
{
move_block(x,y+2);
}
break;
//下
case 0x1a:
if(check_back_block(x,y+2) ==0)
{
move_block(x,y+2);
}
break;
//------------------------------------------------------------------
//右
case 0x1d:
if(check_back_block(x-2,y)==0)
{
move_block(x-2,y);
}
break;
//------------------------------------------------------------------
//左
case 0x1b:
if(check_back_block(x+2,y)==0)
{
move_block(x+2,y);
}
break;
//------------------------------------------------------------------
//回転
case 0x17:
turn_block1();
//ぐるぐる回りすぎてしまうので、時間かせぎ
putout();
putout();
break;
//逆回転
case 0x0f:
turn_block2();
//時間かせぎ
putout();
putout();
break;
//------------------------------------------------------------------
}
}
//********************************************************************