花火
まもなく夏本番。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 );
}
}
ダウンロード
改良案
せっかくの花火なのに、音が無いのはさみしいですよね。爆発と同時に音を鳴らすようにしてみれば、よりそれらしくなるでしょう。
花火が爆発したあと、段々色が薄くなっていくのもいいかもしれません。
実際の(お金に余裕のある)花火大会では一発ずつなんてことはなくて、複数の花火が同時に打ち上がるでしょう。このプログラムもそのように改良するといいですね。
花火の大きさはrの範囲を変えれば変化します。(ただし大きくすると、画面からはみ出してしまうので注意が必要)