トップページ > 電子工作インデックス > テトリス > 9. 入力処理関数

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;

  //------------------------------------------------------------------

 }
}

//********************************************************************


前へ   次へ