トップページ > 電子工作インデックス > テトリス > 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; //------------------------------------------------------------------ } } //********************************************************************