Sprite Demonstration Program
The following program has been included to show how SPRITES are
used in EXTENDED BASIC.
The program was developed in a highly experimental manner, as
various routines and values were tried.
To obtain the best from SPRITES it is usually necessary to work
in this manner.
NB- If your printer prints pound signs in the program listing,
it REALLY means HASH, which is CHR35 , coincidentally, this is
SHIFT 3 when using TI Basic or Extended Basic in TI Emulator.
100 REM SPEEDRACE
110 REM A SAMPLE PROGRAM IN
120 REM TI EXTENDED BASIC
130 REM USING SPRITES
140 REM
150 REM ===================
160 REM
170 CALL CLEAR
180 PRINT "SPEEDRACE":"COPYRIGHT 1981":"BY STEPHEN SHAW"
190 PRINT "USE S & D TO MOVE ":"LEFT & RIGHT":" ":"USE KEYS 1,
2,3,&4 TO":"SELECT GEAR"
200 PRINT "DISTANCE & TIME ARE ":"DISPLAYED.":"DISTANCE
SUFFERS IF YOU":"CRASH"
210 PRINT "PRESS ANY KEY TO CONTINUE"
220 CALL KEY(3,V,M)
230 IF M<1 THEN 220
240 CALL SCREEN(2)
250 FOR X=1 TO 100 :: NEXT X
260 CALL CLEAR
270 CALL MAGNIFY(3)
280 M=1
290 X$=RPT$("0",40)
300 CALL CHAR(100,"96FEBA3838BAFEBA"&X$)
310 CALL CHAR(108,"5A5A5A5A5A5A5A5A5A5A"&X$)
320 CALL CHAR(104,"FF1111FF0000FF11FF"&X$)
330 CALL SCREEN(4)
340 CALL SPRITE(#6,108,13,80,9,90,0)
350 CALL SPRITE(#7,104,13,75,25,90,0)
360 CALL SPRITE(#8,104,13,70,38,90,0)
370 CALL SPRITE(#9,108,13,65,9,90,0)
380 CALL SPRITE(#10,104,13,60,25,90,0)
390 CALL SPRITE(#11,104,13,55,38,90,0)
400 CALL SPRITE(#12,104,13,50,9,90,0)
410 CALL SPRITE(#13,104,13,45,25,90,0)
420 CALL SPRITE(#14,104,13,40,38,90,0)
430 CALL SPRITE(#15,104,13,85,139,90,0)
440 CALL SPRITE(#16,104,13,80,150,90,0)
450 CALL SPRITE(#17,108,13,75,170,90,0)
460 CALL SPRITE(#18,104,13,70,139,90,0)
470 CALL SPRITE(#19,104,13,65,150,90,0)
480 CALL SPRITE(#20,104,13,60,170,90,0)
490 CALL SPRITE(#21,104,13,55,139,90,0)
500 CALL SPRITE(#22,104,13,50,150,90,0)
510 CALL COLOR(8,3,4)
520 CALL SPRITE(#23,108,13,45,170,90,0)
530 CALL VCHAR(1,8,140,216)
540 CALL COLOR(14,12,12)
550 CALL VCHAR(1,7,95,24):: CALL VCHAR(1,17,95,24):: CALL
CHAR(95,"5555555555555555")
560 FOR CT=1 TO 4
570 CALL SPRITE(#CT,100,CT+6,CT*47-45,93-CT*8,0,0)
580 NEXT CT
590 CALL SPRITE(#5,100,16,160,74,0,0)
600 REM **
610 REM ***
620 CALL SOUND(-1000,-2,30-7*SPEED)
630 CALL COINC(ALL,D):: IF D<0 THEN GOSUB 780
640 CALL KEY(0,A,B):: IF A=ASC("S")THEN CALL MOTION(#5,0,-10)
650 IF A=ASC("D")THEN CALL MOTION(#5,0,10)
660 IF A<30 THEN CALL MOTION(#5,0,0)
670 CALL COINC(ALL,D):: IF D<0 THEN GOSUB 780
680 IF A>48 AND A<53 THEN SPEED=(A-48)/3
690 CALL COINC(ALL,D):: IF D<0 THEN GOTO 760
700 T=T+1 :: S=S+6*SPEED :: DISPLAY AT(10,18)SIZE(10):STR$
(S)&" "&STR$(T)
710 CALL COINC(ALL,D):: IF D<0 THEN GOTO 760
720 IF T/5=INT(T/5)THEN M=-M
730 CALL MOTION(#1,SPEED*40,M*5,#2,SPEED*40,M*5,#3,
SPEED*40,M*5,#4, SPEED*40,M*5)
740 CALL COINC(ALL,D):: IF D<0 THEN GOSUB 780
750 GOTO 620
760 GOSUB 780
770 GOTO 620
780 CALL SOUND(-900,-6,0)
790 CALL MOTION(#1,0,0,#2,0,0,#3,0,0,#4,0,0,#5,0,0)
800 SPEED=1/3
810 S=S-50
820 IF S<0 THEN S=0
830 CRASH=CRASH+1
840 IF CRASH=15 OR T>200 THEN GOTO 920
850 M=+1
860 T=T-(5*(T/5-INT(T/5)))
870 FOR CT=1 TO 4
880 CALL SPRITE(#CT,100,CT+6,CT*47-45,93-CT*8,0,0)
890 NEXT CT
900 SPEED=0
910 RETURN
920 CALL CLEAR
930 PRINT "YOU HAVE TRAVELLED ":"A DISTANCE OF ";S
940 PRINT "AND HAD ";CRASH;" CRASHES!"
950 IF S>500 THEN PRINT "YOU ARE NOT A BAD DRIVER"
960 IF S<100 THEN PRINT "YOU SHOULD NOT BE ON THE":"ROAD"
970 PRINT "TO TRY AGAIN,ENTER 'RUN'"
980 END
Note especially the number of CALL COINCs which have been used.
Even with this number, some crashes will still go undetected.