Sprite Routine per Extended BASIC - le Coincidenze
Tutti i possessori del modulo TI EXTENDED BASIC avranno notato che parecchie pagine del manuale di istruzioni sono dedicate agli SPRITES ma, ciò nonostante, la tecnica di manipolazione di queste figure non è molto chiara. Ezio Montini, ci spiega una tecnica di programmazione molto utile per gestire le coincidenze tra Sprites (pubblicata sulla rivista italiana TI99Newsoft a settembre del 1984).

Gli SPRITES sono in grado di svolgere determinate funzioni di movimento e animazione senza interferire minimamente con l'esecuzione di un programma, tuttavia si possono controllare per mezzo di apposite istruzioni BASIC.
Ad esempio:
- CALL PATTERN - ne modifica la forma;
- CALL MAGNIFY - la dimensione;
- CALL MOTION - la velocità;
- CALL LOCATE - la posizione;
- CALL POSITION - controlla la posizione;
- CALL COINC - controlla la posizione tra due o più figure;
- CALL DISTANCE - per la distanza tra uno SPRITE e un punto del video, oppure tra due figure.
Molte tecniche sono state ideate, una di queste consiste nel riempire il programma BASIC dell'istruzione CALL COINC.
Questa tecnica comporta un grosso appesantimento del programma, riducendone la velocità di esecuzione.
Questo che invece si andrà a vedere, è un metodo diverso (se volete, più sofisticato) che vi permetterà di simulare tale istruzione.
Esso si basa su cicli temporizzatori ottenuti utilizzando le CALL SOUND.
100 CALL CLEAR :: CALL SCREEN(2) :: CALL CHAR(46,"0000001818") :: CALL SPRITE(#2,94,16,180,1,0,5)
110 FOR N=0 TO 25 :: RANDOMIZE :: CALL PEEK(-31808,Y,X) :: CALL SPRITE(#3,65+N,16,Y/2+1,X+1) :: CALL SOUND(-60,660,8)
120 CALL POSITION(#3,Y,X,#2,R,C) :: CALL SPRITE(#1,46,16,R,C,(Y-R)*.49,(X-C)*.49) :: CALL SOUND(476,-3,14)
130 CALL SOUND(120,110,6) :: CALL DELSPRITE(#1) :: CALL PATTERN(#3,35) :: CALL SOUND(100,220,6) :: NEXT N :: GOTO 110
|
Questo piccolo programmino di esempio, riesce a dimostrare perfettamente l'efficienza del nostro sistema di simulazione.
Iniziamo col dire che la CALL PEEK eseguita alla riga numero 110 serve per ottenere dei numeri casuali, essa è stata utilizzata solamente per comodità di programmazione.
Tutto il programma è basato sulle CALL SOUND delle righe 120 e 130, modificando la durata delle note, si otterrà un anticipo o un ritardo nella coincidenza, con appropriati valori questa routine può essere adattata a qualunque programma.
L'esempio riportato, vuole fornire anche un utile algoritmo di ricerca basato sulla formula:
(punto di partenza meno punto di arrivo) *.49
otterrete come risultato una determinata velocità di riga e di colonna che consentirà allo SPRITE di colpirvi inesorabilmente.
La riga 100 oltre che definire il colore dello schermo, genera uno SPRITE ASCII (94) che scorrerà nella parte bassa dello schermo con velocità orizzontale di 5.
Le righe successive a quella si occuperanno di far apparire, e in seguito colpire, dei bersagli messi casualmente sul video.
Animazione GIF dimostrativa |
 |

Presente nella sezione download, trovate il file .ZIP con i files sia della versione per cassetta che per Floppy Disk. Nel listato originale c'erano dei Bug che sono stati risolti.
Questo software è stato pubblicato sulla rivista Italiana TI99Newsoft

TI99NewSoft numero 1 - Settembre 1984