ブロック崩しゲーム
void main( void ) { // とりあえず待つ delay_ms( 100 ); // 入出力ポートの設定 setup_adc_ports( RA0_ANALOG ); setup_adc( ADC_CLOCK_DIV_32 ); set_tris_a( 0b00000001 ); // in:RA0 out:RA1-4 set_tris_b( 0b00000000 ); // out:RB0-7 set_tris_c( 0b00000000 ); // out:RC0-7 // 初期化処理 Init(); // 無限ループ while( 1 ) { Loop(); } }Loopの処理は、まず、パッドの位置をスライダのAD変換からPad()で定め、次にCollision()で 衝突判定をします。衝突は、壁、ボール、ブロック、床、などを個別に判定します。床に衝突したら、終了です。
void Loop( void ) { // パッド移動 Pad(); // 衝突判定と向き調整 Collision(); // ボール移動 Move( &x, &y, vx, vy ); // 表示 //Showには時間遅延なし、したがってshow1回程度の時間余裕 //ただし、縦方向のバイト合成をしたためで、縦横のドライブ方向を変えれば、 //時間余裕が出る Show(); Show(); }