66 lines
1.5 KiB
Plaintext
66 lines
1.5 KiB
Plaintext
PROGRAM:Racer
|
|
01 '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
|
|
06 X=13:S=15:Q=0:C=0:D=0:T=$88
|
|
07 B=0:E=0:P=0:V=6:GOSUB 60
|
|
08 DATA 25,39,"--Game Over--",0
|
|
09 G=0:'EEPROM Highscore adress
|
|
10
|
|
11
|
|
12 Q=Q+1:IF Q=5:D=1-RND(3):Q=0
|
|
13 X=X+KEY(6):LIMIT X,4,24:O=S
|
|
14
|
|
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
|
|
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(O)&1)=0 GOTO 47
|
|
44 N=AR(13)+AR(14)+AR(15)+AR(16)
|
|
45 IF N>150 GOTO 55
|
|
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 GOSUB 60:ALERT 25:GOTO 1
|
|
58
|
|
59 'print highscore
|
|
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:RETURN
|
|
# |