- ベストアンサー
互換ベーシックN88について
互換ベーシックのプログラミングで、「正方形の容器の中に円形の分子が飛び回っている。分子一個が容器の中を飛び回ってい様子を作れ。」という課題が出たのですが、このプログラミングを何方か教えてください。分子の半径は3で、容器の左上の座標を(150、40)右下の座標を(480、360)とするとLINE(150、40)-(480,360),4,Bという命令で箱が作れるそうです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
基本的にはNo.1のかたのご指摘通りでよいのではないでしょうか? 少し補足しますと、 1.容器の表示 質問文にあるようにline命令でboxを描画します。 2.分子をボックス内の適当な位置に表示する 分子の中心座標をx、yであらわすとすると、分子の半径は3ですから xは150+3 から480-3 の間の適当な値を取ります。yは40+3から360-3の間の適当な値を取ります。 (x、yの初期値は乱数で決めればよいと思います) 3.現在の分子位置にある分子の表示を消してください。 circle命令を用いて、バックグランド色で描画すれば消えます。 4.分子の移動方向を決めてください。 分子の変化分を dx、dyとしたとき次のポイントは x+dx、y+dyで決定されます。 dx、dyの初期値も適当に決めればよいと思います。 新しいxが 150+3より小さいか480-3より大きくなれば衝突です。 また新しいyが40+3より小さいか360-3より大きくなっても衝突です。 衝突した場合はx、yそれぞれ枠からはみ出さないようにx、yの値を調整し表示してください。 circle命令で表示します。 xの衝突検知したとき、dxの符号を反転すれば、次回反対方向に動きます。 yの衝突検知したとき、dyの符号を反転すれば次回からyも反対方向に動きます。 衝突検知時に、dx、dyの値も乱数で少し変化を付けるとおもしろい方向に反射するかもしれません。 5.表示を目視するため少し時間をおく 描画後にすぐに絵を消したら見苦しい絵になるかもしれないので、感覚的な時間でかまいませんが、時間待ちを入れた方がよいでしょう。 6.3番にもどります。 だいたいこんな感じでしょうか? 参考になれば幸いです。
その他の回答 (1)
- papi-pu
- ベストアンサー率35% (30/84)
容器を表示する 分子を移動する 分子が壁に当たって反射する 分子を表示する 分子を移動するに戻る というふうに分けて考えてみてはいかが?