PROGRAM:Racer       
01 L=3:'init game
02 COLOR 7,1:CLS :BOX 3,3,42,56
03 COLOR 7,0:CBOX 2,2,20,27
04 DATA 0,2,-1,-1,2,2,20,21,22,23
05 DATA 9,133,133,133,133:VOL 15
06 X=13:S=15:Q=0:C=0:D=0:T=$88
07 G=6:'EEPROM Highscore address
08 DIR 0:B=0:E=0:P=0:V=6:R=9:GO 60
09 DATA 25,39,"--GAME OVER--",0
10
11 'the main loop
12 Q=Q+1:IF Q=5:D=1-RND(3):Q=0
13 X=X+KEY(6):X=X+IN(3)-IN(2)
14 LIM X,4,24:O=S
15 S=S+D:LIMIT S,7,22:COLOR 4,0
16 SPRITE 0,-1,-1:SCROLL 2
17 SPRITE 0,14,X:COLOR 6,6
18 'draw street
19 FOR I=2 TO S-4:? @2,I;%T:NEXT
20 FOR I=S+4 TO 27:? @2,I;%T:NEXT
21 COLOR 6,0:IF O>S ? @2,S-3;%131
22 COLOR 0,6:IF O<S ? @2,S-4;%130
23 COLOR 0,6:IF O>S ? @2,S+4;%131
24 COLOR 6,0:IF O<S ? @2,S+3;%130
25
26 'bonus points
27 J=RND(60):COLOR 3,0
28 IF J=5 THEN ? @2,S-2;%27;
29 IF J=25 THEN ? @2,S;%27;
30 IF J=45 THEN ? @2,S+2;%27;
31
32 'trees
33 B=B+1:IF B=4 THEN B=0
34 IF B<>1 GOTO 39
35 H=RND(2)
36 IF H=0 THEN F=2+RND(S-7)
37 IF H=1 THEN F=27-RND(22-S)
38 COLOR 2,6:? @2,F;%161;:GOTO 43
39 IF B<>2 GOTO 43
40 COLOR 4,6:? @2,F;%162;
41
42 'check collision
43 W=30-3*V:IF (AR(0)&1)=0 GOTO 47
44 N=AR(13)+AR(14)+AR(15)+AR(16)
45 IF N>150 GOTO 67
46 P=P+19:DATA 13,32,32:W=94
47 P=P+1:COLOR 7,1
48 ? @0,2;"Score:";P
49 IF P>500 THEN V=5
50 IF P>1000 THEN V=4
51 NOTE W:SYNC V:DATA 0,2
52 GOTO 12
53
54 'game over
55 NOTE 255: IF P<M GOTO 57
56 EPOKE G,LO(P):EPOKE G+1,HI(P)
57 R=58:GO 60
58 ALERT 25:GOTO 1
59 'print High-score
60 IF EPEEK(G+1)<128 GOTO 62
61 EPOKE G,0:EPOKE G+1,0
62 M=EPEEK(G)+256*EPEEK(G+1)
63 COLOR 6,1
64 ? @0,15;"High:";M:GO R
65
66 'game over (JAMMA)
67 L=L-1:NOTE 255: IF P<M GOTO 69
68 EPOKE G,LO(P):EPOKE G+1,HI(P)
69 R=70:GO 60
70 COL 7,2:? @20,8;"Press Start"
71 IF KEY(0)=234:GO 73
72 IF IN(6)=1:GO 71
73 IF L>0:GO 2
74 RETURN
#
