2011-01-23 11 views
5

Ho ricevuto il mio calcolatore programmabile TI-82 STATS (che in realtà è più di una TI-83) circa due giorni fa - e volevo programmare un gioco Snake con il TI-BASIC integrato linguaggio.Approccio minimalista per un gioco in stile Snake

Anche se ho dovuto scoprire: TI-BASIC è estremamente lento. La mia prima implementazione è stata così lenta, che non era nemmeno una sfida per il giocatore! Il principale collo di bottiglia per me risiede nella gestione della lista (array) contenente le coordinate del corpo del serpente.

Ho provato due cose:

  • Quando il serpente si muove, posizione aggiornamento testa, quindi scorrere l'array dalla posizione di coda, e impostare myList[ N ] a myList[ N - 1 ], al fine di rendere il serpente sembra essere in movimento.

Questo tuttavia, diventa ingiocabile dopo che l'elenco diventa lungo circa 4 parti. (Troppo lento)

  • Poi, ho provato attuazione di alcune specie di coda/deque usando le caratteristiche di manipolazione lista di TI-BASIC, come sanguinanti fine e aggiungendo qualcosa nella parte anteriore della matrice.

Questo ha funzionato un po 'meglio, ma diventa troppo lento nel tempo.

TL; DR/domanda effettiva:

  • Sai un trucco in modo che il gioco non rallenta con il serpente sempre più a lungo? Ho visto che questo è possibile in altri giochi realizzati in TI-BASIC

risposta

3

Utilizzare un circular buffer. Per elaborare:

Ottenere una matrice, sufficientemente grande per contenere il serpente massimo. Stabilisci due puntatori, uno per la testa, uno per la coda.

All'inizio, la coda si trovava nella cella n. 1, la testa nella cella n. Mentre il serpente si muove, sposta il puntatore a destra e scrivi la nuova coordinata. Quindi, se non c'è cibo mangiato, muovi anche il puntatore della coda verso destra. Se uno dei puntatori tenta di andare oltre l'estremità più a destra dell'array, avvolgerli all'inizio.

1

Un trucco che molto probabilmente funzionerà è invece di [N - 1] fare [N - 2] o un numero più alto in questo modo fa il tempo si muove matematicamente più velocemente (devi anche regolare la dimensione della testa per andare più veloce