2011-01-23 17 views
5

Recibí mi calculadora programable TI-82 STATS (que de hecho es más una TI-83) hace unos dos días, y quería programar un juego Snake con el TI-BASIC incorporado idioma.Enfoque minimalista para un juego de estilo Serpiente

Aunque tuve que averiguarlo: TI-BASIC es extremadamente lento. Mi primera implementación fue muy lenta, ¡ni siquiera fue un desafío para el jugador! El principal cuello de botella para mí reside en la gestión de la lista (matriz) que contiene las coordenadas del cuerpo de la serpiente.

He intentado dos cosas:

  • Cuando la serpiente se mueve, la posición del cabezal de actualización, a continuación, recorrer la matriz de la posición de la cola, y puso myList[ N ]-myList[ N - 1 ], con el fin de hacer que la serpiente parece ser emocionante.

Esto sin embargo, no se puede reproducir después de que la lista tenga aproximadamente 4 partes de largo. (Demasiado lento)

  • Entonces, he intentado implementar algún tipo de cola/deque uso de las funciones de manipulación de la lista de TI-BASIC, como haciendo estallar fuera de la final y la adición de algo en la parte delantera de la matriz.

Esto funcionó un poco mejor, pero también se vuelve demasiado lento con el tiempo.

TL; DR/pregunta real:

  • ¿Usted sabe un truco para que el juego no hace más lento con la serpiente cada vez más largos? He visto que esto es posible en otros juegos hechos en TI-BASIC

Respuesta

3

Utilice un circular buffer. Para elaborar:

Obtenga una matriz, lo suficientemente grande como para contener la serpiente máxima. Establezca dos punteros, uno para la cabeza y otro para la cola.

Al principio, la cola estaría en la celda n. ° 1, la cabeza en la celda n. ° 3. A medida que la serpiente se mueve, mueva el puntero a la derecha y escriba la nueva coordenada. Luego, si no se come comida, mueva el puntero de la cola hacia la derecha también. Si cualquiera de los punteros intenta ir más allá del extremo derecho del conjunto, envuélvalos al principio.

1

Un truco que es muy probable que el trabajo es en lugar de [N - 1] hacer [N - 2] o un número más alto que la forma en que hace tiempo de subida moviéndose matemáticamente más rápido (también tiene que ajustar el tamaño de la cabeza para ir más rápido

Cuestiones relacionadas