2011-01-23 2 views
5

約2日前に私のTI-82 STATSプログラマブル電卓(これは実際にはTI-83の多くです)を受け取りました。そしてTI-BASIC言語。スネークスタイルのゲームのための最小限のアプローチ

TI-BASICは、が極端にであることがわかりましたが、私の最初の実装はとても遅かったので、それはプレーヤーにとっても挑戦ではありませんでした!私の主なボトルネックは、ヘビの体の座標を含むリスト(配列)の管理にあります。

私は二つのことを試してみました:

ヘビの移動、更新ヘッド位置、そして尾の位置から配列をループし、ヘビがあるように見えるようにするために、 myList[ N - 1 ]myList[ N ]を設定
  • 動く。

しかし、これはリストの長さが約4分の後に再生できなくなります。 (遅すぎる)

  • その後、私は終わりをオフに飛び出ると、アレイの前面に何かを追加するように、TI-BASICのリスト操作機能を使用してキュー/両端キューのいくつかの並べ替えを実装してみました。

これは少しうまく機能しましたが、時間の経過とともに遅すぎることもあります。

TL; DR /実際の質問:

  • ゲームは蛇が長くなって遅くなることはありませんので、あなたがトリックを知っていますか?これはTI-BASIC製の他のゲームでも可能です。

答えて

3

circular bufferを使用してください。具体的には:

最大スネークを保持するのに十分な大きさの配列を取得します。頭のために1つ、尾のために1つ、2つのポインタを確立する。

最初はテールはセル#1にあり、セルの先頭はセル#3です。スネークの動きに合わせて、ヘッドポインタを右に動かして、新しい座標を書き込みます。その後、食べ物がない場合は、テールポインタを右に動かします。いずれかのポインタが配列の右端を越えようとすると、それらを先頭にラップします。

0

リストを使用して速度を向上させる簡単なトリックは、LISTメニューにある機能を最大限に活用することです。特に、seqは、同じ目標を達成するforループよりも大きなパフォーマンス上の利点を提供します。役に立つと思う他の関数はcumSumΔListです。最も可能性の高い動作します

1

トリックは代わりにある[N - 1] - またはそれ以上の数、そのようにはなります[2 N]が行います数学的に速く動くことにより、時間を短縮することもできます(ヘッドのサイズをさらに速く調整する必要があります)