OLEDディスプレイを付けたRaspberry Pi Picoで、ブロック崩しをやってみようかなと思い、ボールが跳ね返る動作を書いてみました。
ボールの初期座標と方向はランダムににして一定数の点を打ったら画面を消去して、また一からスタートする無限ループで回しています。
実装してみると、色々と考えなければならない点が結構あります。
まずx,y座標を整数で持ってしまうと、誤差が累積して軌跡が直線にならなくなるのでfloatでもつとか、移動方向については、xy成分をそれぞれ別に持った方が扱いやすいのですが、角度によって移動する速さに違いが出ない様、Δx^2+Δy^2=1の関係になる様、乱数で角度を出してからcosΘ,sinΘでx,yの増分を出すとか細かな工夫が必要でした。
ちなみにMicroPythonでは三角関数が使えたので利用しましたが、使えない場合は、Δx^2+Δy^2を出して、それでΔx、Δyを割って傾きにするといった工夫が必要でしょう。ただこれはfloatが使える前提ですが、使えない場合は桁数多めの整数でやってみて、どの程度の桁数を持たせば動きが不自然にならないかとか試すんでしょうね。
ブロック崩しがゲームとして最初に出てから50年位経っていると思いますが、草創期の頃の人は、そういった工夫をしながら実装していたんだろうなと想いを馳せてしまいました。
0 件のコメント:
コメントを投稿