5

私は約 2 日前に TI-82 STATS プログラマブル電卓 (実際には TI-83 に近いものです) を受け取り、組み込みの TI-BASIC 言語を使用してスネーク ゲームをプログラミングしたいと考えていました。

私は見つけなければなりませんでしたが、TI-BASIC は非常に遅いです。私の最初の実装は非常に遅かったので、プレイヤーにとっては難しいことではありませんでした! 私にとっての主なボトルネックは、ヘビ本体の座標を含むリスト (配列) の管理にあります。

私は2つのことを試しました:

  • ヘビが動いたら、頭の位置を更新し、尾の位置から配列をループし、 に設定myList[ N ]myList[ N - 1 ]て、ヘビが動いているように見せます。

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

  • 次に、TI-BASIC のリスト操作機能を使用して、ある種のキュー/デキューを実装してみました。たとえば、配列の末尾からポップして先頭に何かを追加するなどです。

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

TL;DR / 実際の質問:

  • ヘビが長くなってゲームが遅くならないようにするためのトリックを知っていますか? これは、TI-BASIC で作成された他のゲームで可能であることがわかりました。
4

3 に答える 3

3

循環バッファを使用します。詳しく説明するには:

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

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

于 2012-01-19T17:29:02.543 に答える
1

最もうまくいく可能性が高いトリックは、 [ N - 1 ] の代わりに [ N - 2 ] またはそれ以上の数を実行することで、数学的に速く動くことで時間を埋めます (頭のサイズを調整して速くする必要もあります)

于 2015-06-08T20:40:32.620 に答える
0

リストを操作して速度を向上させる簡単な方法は、LISTメニューの下にある機能をフルに活用することです。特に、seq同じ目的を達成する for ループよりもパフォーマンスが大幅に向上します。私が便利だと思う他の関数はcumSumΔListです。

于 2015-01-18T15:50:50.193 に答える