花火

2003/6/17作成

花火

花火
画面サンプル

まもなく夏本番。P/ECE上でも花火を打ち上げてみました。実行すると、ランダムな位置に花火が打ちあがります。

プログラム


/********************************************************/
/*  アプリケーションループ                              */
/********************************************************/

while( 1 ) {

    /********************************************************/
    /*  花火の位置決定                                      */
    /********************************************************/

    x = rnd( 96 ) + 16;
    y = rnd( 54 ) + 16;


    /********************************************************/
    /*  花火打ち上げ                                        */
    /********************************************************/

    for( a = 88 - y; a > 0; a-- ) {
        pset( x, y + a, 3 );
        wait( 50 );
        pset( x, y + a, 0 );
    }


    /********************************************************/
    /*  花火爆発                                            */
    /********************************************************/

    for( r = 0; r != 16; r++ ) {
        pset( x + r, y, 3 );
        pset( x + r * 0.7, y + r * 0.7, 3 );
        pset( x, y + r, 3 );
        pset( x + r * 0.7, y - r * 0.7, 3 );
        pset( x - r, y, 3 );
        pset( x - r * 0.7, y + r * 0.7, 3 );
        pset( x, y - r, 3 );
        pset( x - r * 0.7, y - r * 0.7, 3 );
        wait( 50 );
        pset( x + r, y, 0 );
        pset( x + r * 0.7, y + r * 0.7, 0 );
        pset( x, y + r, 0 );
        pset( x + r * 0.7, y - r * 0.7, 0 );
        pset( x - r, y, 0 );
        pset( x - r * 0.7, y + r * 0.7, 0 );
        pset( x, y - r, 0 );
        pset( x - r * 0.7, y - r * 0.7, 0 );
    }
}

ダウンロード

firework.zip

改良案

せっかくの花火なのに、音が無いのはさみしいですよね。爆発と同時に音を鳴らすようにしてみれば、よりそれらしくなるでしょう。

花火が爆発したあと、段々色が薄くなっていくのもいいかもしれません。

実際の(お金に余裕のある)花火大会では一発ずつなんてことはなくて、複数の花火が同時に打ち上がるでしょう。このプログラムもそのように改良するといいですね。

花火の大きさはrの範囲を変えれば変化します。(ただし大きくすると、画面からはみ出してしまうので注意が必要)