2011-01-23 2 views
5

Я получил свой программируемый калькулятор TI-82 STATS (который на самом деле больше TI-83) около двух дней назад - и хотел запрограммировать игру Snake со встроенным TI-BASIC язык.Минималистичный подход для игры в стиле Змея

Хотя я должен был выяснить: TI-BASIC чрезвычайно медленно. Моя первая реализация была настолько медленной, что это не было проблемой для игрока! Основным узким местом для меня является управление списком (массивом), содержащим координаты тела змеи.

Я попробовал две вещи:

  • Когда змея движется, положение головы обновления, затем цикл через массив из положения хвоста и установите myList[ N ] в myList[ N - 1 ], для того, чтобы змея, как представляется, перемещение.

Это, однако, становится неуязвимым после того, как список получает около 4 частей. (Слишком медленно)

  • Затем я попытался реализации какой-то очереди/дека с использованием функций манипулирования список TI-BASIC, как и появляются с конца и добавить что-то в передней части массива.

Это работало немного лучше, но со временем становится слишком медленным.

TL; DR/актуальный вопрос:

  • Вы знаете трюк, так что игра не замедлит с змея становится больше? Я видел, что это возможно в других играх, сделанных в TI-BASIC

ответ

3

Используйте circular buffer. Разработать:

Получить массив, достаточно большой, чтобы удерживать максимальную змею. Установите два указателя, один для головы, один для хвоста.

В начале хвост будет в ячейке №1, голова в ячейке №3. Когда змея движется, переместите указатель головы вправо и напишите новую координату. Затем, если нет еды, переместите указатель на хвост вправо. Если любой из указателей пытается выйти за самый правый конец массива, заверните их в начало.

0

Простой трюк при работе со списками для повышения скорости - это полное использование функций, предоставляемых в меню LIST. В частности, seq может обеспечить значительные преимущества в производительности по циклу for, который выполняет ту же цель. Другие функции, которые я считаю полезными, - cumSum и ΔList.

1

Трюк, который, скорее всего, будет работать это вместо [N - 1] сделать [N - 2] или выше число, как это делает (вы также должны скорректировать размер головы, чтобы ускориться)

 Смежные вопросы

  • Нет связанных вопросов^_^