-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSTUNT_DRIVER_1.bas
145 lines (145 loc) · 3.41 KB
/
STUNT_DRIVER_1.bas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
232 REM =----------------------
1010 REM = STUNT DRIVER
1020 REM = Gary Woolridge
1021 REM =----------------------
1022 REM = Acorn Programs
1024 REM = June/July 1984
1030 REM =----------------------
1032 REM = Agon port by Blufftek
1034 REM = 2023
1036 REM =----------------------
1040
1050 PROCinitialize
1060
1070 REPEAT
1080 REPEAT
1090 MODE 2
1100 PROCvars
1110 PROCscreen
1120 PROCscore
1130 REPEAT
1140 PROCkeys
1150 IF S%<>0 OR J% : PROCmovecar
1160 IF P%>0 OR Q%>0 : dead=TRUE
1170 UNTIL end OR dead
1180 IF dead: lives%=lives%-1
1190 IF end: score%=score%+10*nbars% : nbars%=nbars%+1 : SOUND 1,1,100,30
1200 IF score%>99990 score%=0
1210 UNTIL nbars%=13 OR lives%=0
1220 nbars%=1
1230 uu%=uu%+200
1240 IF uu%>700 : uu%=300
1250 UNTIL lives%=0
1260 PROCnewgame
1270 MODE 7
1280 END
1290
1300
1310 DEF PROCkeys
1320 K%=-1
1330 IF INKEY(-1) : K%=1
1340 S%=S%+K%
1350 IF S%>48 : S%=48
1360 IF S%<0 : S%=0
1370 IF J% : ENDPROC
1380 IF INKEY(-74) J%=TRUE
1390 IF J% AND Z%=0 H%=4
1400 ENDPROC
1410
1420
1430 DEF PROCmovecar
1440 end=FALSE : dead=FALSE
1450 GCOL 3,7
1460 *FX 19
1470 MOVE X%,Y%+Z% : VDU 128,129
1480 X%=X%+S% : Z%=Z%+H%
1490 P%=POINT(X%+128,Y%-16+Z%)
1500 Q%=POINT(X%,Y%+Z%-24)
1510 IF P%>0 OR Q%>0:PROCcrash:ENDPROC
1520 IF Z%>64 : H%=-4
1530 IF Z%=0 : H%=0 : J%=0
1540 IF X%>1152 : Y%=Y%-200 : X%=0
1550 IF Y%<300 : end=TRUE
1560 MOVE X%,Y%+Z% : VDU 128,129
1570 ENDPROC
1580
1590
1600 DEF PROCcrash
1610 SOUND 0,2,100,50
1620 MOVE X%+32,Y%
1630 GCOL 1,9 : VDU 135,8
1640 GCOL 1,12: VDU 136
1650 TIME=0
1660 REPEAT UNTIL TIME>200
1670 ENDPROC
1680
1690
1700 DEF PROCscore
1710 LOCAL X
1720 X=5-LEN(STR$(score%))
1730 VDU 4,23,1,0;0;0;0; : COLOUR 6
1740 PRINT TAB(X,28);score%
1750 PRINT TAB(8,28);nbars%
1760 PRINT TAB(15,28);lives%
1770 VDU 5
1780 ENDPROC
1790
1800
1810 DEF PROCscreen
1820 GCOL 0,2
1830 FOR O%=868 TO 268 STEP -200
1840 FOR I%=0 TO 16 STEP 4
1850 PLOT 77,0,O%-I%
1860 NEXT
1870 NEXT
1880 GCOL 0,4 : MOVE 128,uu%
1890 VDU 5,131,132 : GCOL 0,3
1900 FOR B%=1 TO nbars%
1910 VDU 130
1920 NEXT
1930 GCOL 0,4 : VDU 133,134 : GCOL 0,7
1940 MOVE X%,Y% : VDU 128,129,4
1950 PRINT TAB(0,26) "SCORE" TAB(6) "BARRELS" TAB(14) "CARS"
1960 COLOUR 6: PRINT TAB(0,28);"00000"
1970 ENDPROC
1980
1990
2000 DEF PROCnewgame
2010 VDU 4,23,1,0;0;0;0;
2020 CLS : COLOUR 3
2030 PRINT'''"SCORE :";score%
2040 PRINT'''"New Game (Y/N) :";
2050 *FX 15,0
2060 REPEAT
2070 A$=CHR$(GET AND 223)
2080 UNTIL A$="Y" OR A$="N"
2090 IF A$="Y" THEN RUN
2100 ENDPROC
2110
2120
2130 DEFPROCvars
2140 V%=0 : S%=0 : Z%=0 : J%%=0 : H%=0
2150 X%=0 : Y%=900 : P%=0 : Q%=0 : K%=0
2160 end=FALSE : dead=FALSE
2170 ENDPROC
2180
2190
2200 DEF PROCinitialize
2210 @%=1
2220 score%=0 : lives%=3 : nbars%=1
2230 uu%=300
2240 *FX 4,1
2250 *FX 16,0
2260 *FX 229,1
2270 VDU 23,128,0,31,60,60,127,56,40,56
2280 VDU 23,129,0,192,112,60,254,28,20,28
2290 VDU 23,130,126,129,153,165,165,153,129,126
2300 VDU 23,131,0,0,0,0,3,15,63,255
2310 VDU 23,132,0,12,60,252,252,252,252,252
2320 VDU 23,133,0,48,60,63,63,63,63,63
2330 VDU 23,134,0,0,0,0,192,240,252,255
2340 VDU 23,135,24,40,68,171,165,90,60,255
2350 VDU 23,136,0,18,36,0,74,36,0,0
2360 ENVELOPE 1,5,0,0,0,0,0,0,126,-10,-5,-1,126,126
2370 ENVELOPE 2,3,2,4,2,2,-2,2,126,-10,-5,-1,126,126
2380 ENDPROC