Scratchで、花火のプログラムをいろいろな形で制作している。一つの点から放射常に火花が広がる簡単なプログラムであるが、これがなかなかうまくできない。初めに作成したのは、あらかじめ作成した絵をだんだん大きくするプログラムだった。YouTubeの動画を参考に作成したのだが、大きさを変えているだけだったので、現実感が足りなかった。次に作成したのは、点を作成し、それを数秒ごとに移動するプログラムだった。ただ、これが中々難しかった。角度ごとに作成した火花が出現するタイミングがずれ、何度やってもうまくいかなかった。同じタイミングで表示できるようにしているのだが、少しずつずれて表示されてしまうのだ。この解決には、相当な時間がかかった。解決の糸口は、クローンを作成するプログラムと花火が広がっていくプログラムを別々にすることでやっと解決した。ただ、このプログラムだと花火を出すために、スタートボタンを押さなければならない問題があった。それで、クローンを作成し、乱数で打ち上げる間隔を設定し、花火が上がるプログラムの作成に取り掛かった。ただし、このプログラムにはクローンのクローンという問題が発生した。人間だと、このクローンはこの作業、このクローンはこの作業と判別できるのであるが、機械はそうはいかない。クローンに番号をつけ、その番号で判断するようにさせたのだが、中々うまくいかない。それで、それぞれの角度ごとに絵:スプライト(90度の場合は4つ、45度の場合は8つという具合)を作成し、それを同じ時間、移動距離で制御することで、なんとか動くようにした。ただ、動いたのだが、動きを変えようとすると全てのスプライトと描き換えなければならないことと、見かけ上はうまく動いているが、プログラム的にはスマートではない描き方であった。それで、三度目はペン機能を使って、プログラムを書くことにした。これまであれこれと作っていたので、花火をひろがせることができたのだが、ここでも花火を出すために、スタートボタンを押さなければならない問題が生じた。2回目で生じた、クローンのクローン問題である。その時は、力技で乗り切ったが、その時挫折したクローン番号を作成し、今どのクローンを操作するのかをそれぞれプログラムに組んで行った。あれこれいじっていくうちに、やっと思い通りに動くようになった。ただ、花火が打ち上がる回数を指定しているのに、無限に花火が生成するようになった。それで、今度は打ち上げ回数をカウントする変数を設定し、その回数になると打ち上げるのを終わるという風にした。こうすることで、やっと本来の目的に合致したプログラムが作成できた。色々挑戦戦してきて、プログラム作りは一筋縄ではいかないなと感じた。
0 件のコメント:
コメントを投稿