-
Notifications
You must be signed in to change notification settings - Fork 14
Expand file tree
/
Copy pathTennis.b3c
More file actions
412 lines (412 loc) · 13.4 KB
/
Copy pathTennis.b3c
File metadata and controls
412 lines (412 loc) · 13.4 KB
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
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
1000 A=500:GOTO 20:REM TENNIS
1010 MY=VE-1:SN=0:BA=10
1020 MX=3*INT (HO/3)-1
1030 DIM R(3)
1040 A$="Q":B$="A":C$="O":D$="L"
1050 REM *** BEGINTEKENING ***
1060 CC(0)=2:CC(1)=6:GOSUB 600
1070 CN=0
1080 RESTORE
1090 FOR QQ=1 TO 18
1100 READ HY,VY
1110 HO=HY/100:VE=VY/100+.55
1120 GOSUB 620
1130 FOR TE=1 TO 4
1140 READ HY,VY
1150 HO=HY/100:VE=VY/100+.55
1160 GOSUB 630
1170 NEXT TE
1180 NEXT QQ
1190 CC(0)=4
1200 FOR QQ=1 TO 3
1210 READ HY,VY
1220 HO=(HY+30)/100:VE=VY/100
1230 GOSUB 620
1240 READ TT
1250 FOR TE=1 TO TT
1260 READ HY,VY
1270 HO=(HY+30)/100:VE=VY/100
1280 GOSUB 630
1290 NEXT TE
1300 NEXT QQ
1310 FOR TE=1 TO 3
1320 READ VY,SR$
1330 HO=.3:VE=VY/100:GOSUB 650
1340 NEXT TE
1350 SD=10000:GOSUB 450
1500 REM *** HOOFDMENU ***
1510 CC(0)=1:CC(1)=5:GOSUB 100
1520 BL=BA-1:S1=0:S2=0
1530 PRINT " ******* Abdon Pijpelink 's"
1540 PRINT " * *"
1550 PRINT " *"
1560 PRINT " * **** * *** * *** ** *****"
1570 PRINT " * * * ** * ** * * *"
1580 PRINT " * ****** * * * * * ******"
1590 PRINT " * * * * * * * *"
1600 PRINT " * ***** * * * * *** *****"
1610 PRINT :PRINT :PRINT
1620 PRINT "1 - UITLEG":PRINT "2 - TOETSEN KIEZEN"
1630 PRINT "3 - AANTAL BALLEN":PRINT "4 - SNELHEID"
1640 PRINT "5 - SPELEN TEGEN DE COMPUTER"
1650 PRINT "6 - SPELEN TEGEN EEN MENSELIJK WEZEN"
1660 PRINT "7 - STOPPEN"
1670 PRINT :PRINT
1680 PRINT "MAAK UW KEUZE, OF LAAT HET"
1690 GOSUB 200
1700 IF IN$="1" THEN GOTO 2010:REM UITLEG
1710 IF IN$="2" THEN GOTO 6010:REM TOETSEN
1720 IF IN$="3" THEN GOTO 5510:REM AANT BALLEN
1730 IF IN$="4" THEN GOTO 9510:REM SNELHEID
1740 IF IN$="5" THEN GOTO 3010:REM VS COMPUTER
1750 IF IN$="6" THEN GOTO 4010:REM VS MENS
1760 IF IN$="7" THEN GOTO 5010:REM STOPPEN
1770 GOTO 1690
2000 REM *** UITLEG ***
2010 GOTO 2040
2020 HO=MX:VE=MY-1:GOSUB 110
2030 GOSUB 210:GOSUB 100:RETURN
2040 CC(0)=6:CC(1)=0:GOSUB 100
2050 PRINT "Vragen, die in deze uitleg niet zullen"
2060 PRINT "worden beantwoord zijn :"
2070 PRINT :PRINT
2080 PRINT "- Wat is de gemiddelde maximale leeftijd"
2090 PRINT " van een schildpad ?"
2100 PRINT
2110 PRINT "- Waarom zit het menselijk hoofd aan de"
2120 PRINT " bovenkant van het lijf en niet aan de"
2130 PRINT " onderkant ?"
2140 PRINT
2150 PRINT "- In welk werelddeel ligt 'Tsjaad' ?"
2160 PRINT
2170 PRINT "- Met wat voor een wapen werd Willem van"
2180 PRINT " Oranje vermoord ?"
2190 PRINT :PRINT
2200 PRINT "Mensen, die toch antwoord willen hebben"
2210 PRINT "op deze dringende vragen, kunnen dus"
2220 PRINT "beter even naar de bibliotheek fietsen,"
2230 PRINT "i.p.v. nu op een toets drukken..."
2240 GOSUB 2020
2250 PRINT "Aha, je hebt toch op een toets gedrukt,"
2260 PRINT "dat betekent, dat jij (of u) meer"
2270 PRINT "interesse hebt in de uitleg van TENNIS."
2280 PRINT
2290 PRINT "Sporten is gezond voor de mens (en"
2300 PRINT "misschien ook wel voor dieren)."
2310 PRINT "Een (1) nadeel van sporten is, dat je"
2320 PRINT "er moe van wordt. En aangezien mijn"
2330 PRINT "lijfspreuk is : 'Liever lui, als moe' ,"
2340 PRINT "heb ik gezocht naar een manier om toch"
2350 PRINT "te sporten, maar niet moe te worden."
2360 PRINT
2370 PRINT "Vele uren heb ik achter mijn Spectrum"
2380 PRINT "doorgebracht, om het resultaat, dat jij"
2390 PRINT "nu in het geheugen van jouw"
2400 PRINT "computer hebt zitten, te scheppen."
2410 PRINT
2420 PRINT "Je bent waarschijnlijk nu toch"
2430 PRINT "moe geworden van mijn geleuter, dus laat"
2440 PRINT "ik nu maar beginnen met het uitleggen"
2450 PRINT "van : T E N N I S."
2460 GOSUB 2020
2470 PRINT "Dit spel is niet ingewikkeld, als je"
2480 PRINT "weet hoe het moet."
2490 PRINT
2500 PRINT "Ik leg het spel uit volgens de optiemo-"
2510 PRINT "gelijkheden van het hoofdmenu."
2520 PRINT :PRINT
2530 PRINT "1. UITLEG"
2540 PRINT " Je mag drie keer raden wat dat nu zou"
2550 PRINT " kunnen zijn."
2560 PRINT :PRINT
2570 PRINT "2. TOETSEN KIEZEN"
2580 PRINT " Kies je eigen besturing. Dit is"
2590 PRINT " respectievelijk : Speler 1-omhoog,"
2600 PRINT " Speler 1-omlaag, Speler 2-omhoog en"
2610 PRINT " Speler 2-omlaag."
2620 PRINT :PRINT
2630 PRINT "Druk op een toets voor de rest..."
2640 GOSUB 2020:PRINT "3. AANTAL BALLEN"
2650 PRINT " Wordt niet misleden (of is het"
2660 PRINT " misleidt ?) door deze optie: Er wordt"
2670 PRINT " maar met 1 bal tegelijk gespeeld, maar"
2680 PRINT " met deze optie kan het totaal aantal"
2690 PRINT " ballen worden gekozen. De computer"
2700 PRINT " geeft tijdens het spel trouwens aan,"
2710 PRINT " hoeveel reserveballen er nog zijn."
2720 PRINT :PRINT :PRINT "4. SNELHEID"
2730 PRINT " Je kan de snelheid, waarmee"
2740 PRINT " de bal zich verplaatst ook regelen,"
2750 PRINT " 0 is het snelst en hoe hoger het"
2760 PRINT " getal, hoe langzamer het spel."
2770 PRINT " LET OP ! Op snelle computers kan het"
2780 PRINT " mogelijk zijn, dat er een heel hoog"
2790 PRINT " getal (zoiets als 10000) moet worden"
2800 PRINT " ingetikt voor een redelijke snelheid."
2810 GOSUB 2020:PRINT "5. SPELEN TEGEN DE COMPUTER"
2820 PRINT " Probeer om de bal steeds terug te"
2830 PRINT " slaan. Lukt dit niet, dan krijgt de"
2840 PRINT " tegenstander (in dit geval de computer)"
2850 PRINT " 10 punten bij zijn score opgeteld."
2860 PRINT " Winnen is te moeilijk !!!"
2870 PRINT :PRINT :PRINT "6. SPELEN TEGEN EEN MENSELIJK WEZEN"
2880 PRINT " Hetzelfde als 5, alleen nu is de"
2890 PRINT " tegenstander een vriend(in)."
2900 PRINT :PRINT :PRINT "7. STOPPEN"
2910 PRINT " Dit is een optie voor als je het"
2920 PRINT " spel beu raakt."
2930 PRINT :PRINT
2940 PRINT "Zo, dat was de uitleg. Als er nog vragen"
2950 PRINT "zijn, dan is dat jammer, want het"
2960 PRINT "antwoord zal altijd onbekend blijven."
2970 GOSUB 2020
2980 GOTO 1510
3000 REM *** SPELEN TEGEN COMPUTER ***
3010 CO=0
3020 CC(0)=6:CC(1)=0:GOSUB 100
3030 PRINT "Speler 1 : Tik je initialen in :":INPUT S1$
3040 IF LEN (S1$)>4 THEN GOTO 3020
3050 S2$="COMP"
3060 GOSUB 6510:REM SERVEREN
3070 FOR NN=1 TO 2:GOSUB 200
3080 IF (IN$=A$) OR (IN$=C$) THEN GOSUB 4500
3090 IF (IN$=B$) OR (IN$=D$) THEN GOSUB 4700
3095 NEXT NN
3100 GOSUB 3200:REM COMPUTER
3110 FOR SL=0 TO SN:NEXT SL
3120 GOSUB 7010:REM BEWEEG BAL
3130 GOTO 3070
3200 IF BY<R(2) THEN GOTO 3400
3210 IF R(2)>= MY-4 THEN RETURN
3220 VE=R(2)-2:HO=MX+1:GOSUB 110:PRINT " "
3230 VE=R(2)-1:GOSUB 110:PRINT " "
3240 VE=R(2)+3:GOSUB 110:PRINT "#"
3250 VE=R(2)+4:GOSUB 110:PRINT "#"
3260 R(2)=R(2)+2
3270 RETURN
3400 IF R(2)<= 5 THEN RETURN
3410 VE=R(2)+2:HO=MX+1:GOSUB 110:PRINT " "
3420 VE=R(2)+1:GOSUB 110:PRINT " "
3430 VE=R(2)-3:GOSUB 110:PRINT "#"
3440 VE=R(2)-4:GOSUB 110:PRINT "#"
3450 R(2)=R(2)-2
3460 RETURN
4000 REM *** SPELEN TEGEN VRIEND(IN) ***
4010 CO=1
4020 CC(0)=5:CC(1)=0:GOSUB 100
4030 PRINT "Speler 1 : tik je initialen in :":INPUT S1$
4040 IF LEN (S1$)>4 THEN GOTO 4020
4050 PRINT "Speler 2 : tik je initialen in :":INPUT S2$
4060 IF LEN (S2$)>4 THEN GOTO 4020
4070 GOSUB 6510:REM SERVEREN
4080 FOR NN=1 TO 2:GOSUB 200
4090 IF (IN$=A$) OR (IN$=C$) THEN GOSUB 4500
4095 NEXT NN
4100 FOR NN=1 TO 2:GOSUB 200
4110 IF (IN$=D$) OR (IN$=B$) THEN GOSUB 4700
4115 NEXT NN
4120 GOSUB 7010:REM BEWEEG BAL
4130 FOR SL=0 TO SN:NEXT SL
4140 GOTO 4080
4500 IF (IN$=A$) AND (R(1)<= 5) THEN RETURN
4510 IF (IN$=C$) AND (R(2)<= 5) THEN RETURN
4520 IF IN$=C$ THEN HO=MX+1:R=2
4530 IF IN$=A$ THEN HO=1:R=1
4540 VE=R(R)+1:GOSUB 110:PRINT " "
4550 VE=R(R)+2:GOSUB 110:PRINT " "
4560 VE=R(R)-3:GOSUB 110:PRINT "#"
4570 VE=R(R)-4:GOSUB 110:PRINT "#"
4580 R(R)=R(R)-2
4590 RETURN
4700 IF (R(1)>= MY-4) AND (IN$=B$) THEN RETURN
4710 IF (R(2)>= MY-4) AND (IN$=D$) THEN RETURN
4720 IF IN$=B$ THEN HO=1:R=1
4730 IF IN$=D$ THEN HO=MX+1:R=2
4740 VE=R(R)-2:GOSUB 110:PRINT " "
4750 VE=R(R)-1:GOSUB 110:PRINT " "
4760 VE=R(R)+3:GOSUB 110:PRINT "#"
4770 VE=R(R)+4:GOSUB 110:PRINT "#"
4780 R(R)=R(R)+2
4790 RETURN
5000 REM *** STOPPEN ***
5010 CC(0)=7:CC(1)=0:GOSUB 100
5020 GOTO 950
5500 REM *** AANTAL BALLEN ***
5510 CC(0)=5:CC(1)=1:GOSUB 100
5520 PRINT "KIES DE HOEVEELHEID BALLEN VOOR HET SPEL :"
5530 PRINT :PRINT
5540 INPUT BA
5550 BL=BA-1
5560 SD=35:GOSUB 450
5570 GOTO 1510
6000 REM *** TOETSEN KIEZEN ***
6010 CC(0)=5:CC(1)=1:GOSUB 100
6020 PRINT "SPELER 1 , KIES JE TOETS VOOR OMHOOG :"
6030 GOSUB 210:A$=IN$
6040 PRINT A$
6050 PRINT "SPELER 1 , KIES JE TOETS VOOR OMLAAG :"
6060 GOSUB 210:B$=IN$
6070 PRINT B$
6080 PRINT "SPELER 2 , KIES JE TOETS VOOR OMHOOG :"
6090 GOSUB 210:C$=IN$
6100 PRINT C$
6110 PRINT "SPELER 2 , KIES JE TOETS VOOR OMLAAG :"
6120 GOSUB 210:D$=IN$
6130 PRINT D$
6140 SD=100:GOSUB 450
6150 GOTO 1510
6500 REM *** SERVEREN ***
6510 CC(0)=0:CC(1)=4:GOSUB 100
6520 BX=20:BY=12
6530 FOR VE=10 TO 14
6540 HO=1:GOSUB 110:PRINT "#"
6550 HO=MX+1:GOSUB 110:PRINT "#"
6560 NEXT VE
6570 R(1)=12:R(2)=12
6580 CX=1:CY=0
6590 HO=20:VE=12:GOSUB 110:PRINT "O"
6600 HO=1:VE=1:GOSUB 110:PRINT S1$;" : ";S1
6610 HO=MX-10:GOSUB 110:PRINT S2$;" : ";S2
6620 HO=15:VE=MY-1:GOSUB 110:PRINT "BALLEN :";BL
6630 RETURN
7000 REM *** VERPLAATS BAL ***
7010 IF (BX<= 2) OR (BX>= MX-1) THEN GOTO 7200
7020 IF (BY<= 4) OR (BY>= MY-3) THEN GOTO 7500
7030 BH=BX+CX*3:BV=BY+CY
7040 HO=BH:VE=BV:GOSUB 110:PRINT "O"
7050 HO=BX:VE=BY:GOSUB 110:PRINT " "
7060 BX=BH:BY=BV
7070 RETURN
7200 IF BX<= 2 THEN GOTO 7300
7210 GOSUB 260:RQ=RV*100
7220 RA=RQ/37
7230 FOR C=R(2)-2 TO R(2)+2
7240 IF INT (BY)=C THEN CX=-CX:CY=-RA:GE=1
7250 NEXT C
7260 SP=50:SD=.5:SV=7:GOSUB 400
7270 IF GE=1 THEN GE=0:GOTO 7020
7280 GOTO 8010
7300 GOSUB 260:RQ=RV*100
7310 RA=RQ/37
7320 FOR C=R(1)-2 TO R(1)+2
7330 IF INT (BY)=C THEN :CX=-CX:CY=RA:GE=1
7340 NEXT C
7350 SP=50:SD=.5:SV=7:GOSUB 400
7360 IF GE=1 THEN GE=0:GOTO 7020
7370 GOTO 8010
7500 CY=-CY
7510 BH=BX+CX*3:BV=BY+CY
7520 HO=BH:VE=BV:GOSUB 110:PRINT "O"
7530 HO=BX:VE=BY:GOSUB 110:PRINT " "
7540 BX=BH:BY=BV
7550 GOTO 7010
8000 REM *** GESCOORD ! ***
8010 BL=BL-1
8020 IF BL=-1 THEN GOTO 9010
8030 IF BX<20 THEN GOTO 8070
8040 S1=S1+10
8050 IF CO=1 THEN GOTO 4070
8060 IF CO=0 THEN GOTO 3060
8070 S2=S2+10
8080 IF CO=1 THEN GOTO 4070
8090 IF CO=0 THEN GOTO 3060
9000 REM *** SPEL VOORBIJ ***
9010 CC(0)=7:CC(1)=3:GOSUB 600
9020 CN=0
9030 IF BX>15 THEN S1=S1+10
9040 IF BX<15 THEN S2=S2+10
9050 RESTORE
9060 FOR QQ=1 TO 18
9070 READ HY,VY
9080 HO=HY/100-.03:VE=VY/100:GOSUB 620
9090 FOR TE=1 TO 4
9100 READ HY,VY
9110 HO=HY/100-.03:VE=VY/100:GOSUB 630
9120 NEXT TE
9130 NEXT QQ
9140 IF S1>S2 THEN SR$=S1$+" HEEFT GEWONNEN !!!"
9150 IF S2>S1 THEN SR$=S2$+" HEEFT GEWONNEN !!!"
9160 IF S2=S1 THEN SR$="ER IS GEEN WINNAAR !!!"
9170 FOR TE=0 TO .3 STEP .06
9180 HO=TE/3:VE=.5+TE:GOSUB 650
9190 NEXT TE
9200 SD=100:GOSUB 450
9210 GOTO 1510
9500 REM *** SNELHEID ***
9510 CC(0)=4:CC(1)=7:GOSUB 100
9520 PRINT "Kies de snelheid (0,>)"
9530 PRINT :PRINT
9540 INPUT SN
9550 SD=35:GOSUB 450
9560 GOTO 1510
25010 DATA 15,15,25,15,25,17,15,17,15,15
25020 DATA 19,15,21,15,21,25,19,25,19,15
25030 DATA 29,15,39,15,39,17,29,17,29,15
25040 DATA 29,15,31,15,31,25,29,25,29,15
25050 DATA 29,19,35,19,35,21,29,21,29,19
25060 DATA 29,23,39,23,39,25,29,25,29,23
25070 DATA 43,15,45,15,45,25,43,25,43,15
25080 DATA 43,15,45,15,53,25,51,25,43,15
25090 DATA 51,15,53,15,53,25,51,25,51,15
25100 DATA 57,15,59,15,59,25,57,25,57,15
25110 DATA 57,15,59,15,67,25,65,25,57,15
25120 DATA 65,15,67,15,67,25,65,25,65,15
25130 DATA 71,15,73,15,73,25,71,25,71,15
25140 DATA 77,15,87,15,87,17,77,17,77,15
25150 DATA 77,15,79,15,79,21,77,21,77,15
25160 DATA 77,19,87,19,87,21,77,21,77,19
25170 DATA 85,19,87,19,87,25,85,25,85,19
25180 DATA 77,23,87,23,87,25,77,25,77,23
25200 DATA 17,10,17,18,15,7,15,6,20,1
25210 DATA 20,8,0,23,0,27,10,22,10,20
25220 DATA 5,11,5,9,10,17,10,20,20,30
25230 DATA 20,29,15,23,15,25,20
25240 DATA 27,10,7,32,10,34,5,24.5,5,23
25250 DATA 0,41,0,35.5,15,29,15,17,10,1,15.5,5
25260 DATA 35,"ABDON PIJPELINK"
25270 DATA 45,"PRESENTEERT :"
25280 DATA 90,"DRUK OP EEN TOETS"
30000 REM VARIABELEN OVERZICHT
30010 REM TE-Gebruikt voor beginscherm
30020 REM HY-Idem
30030 REM VY-Idem
30040 REM BA-Aantal ballen
30050 REM BL-Aantal resterende ballen
30060 REM R(1)-Positie racket 1
30070 REM R(2)-Positie racket 2
30080 REM S1-Score speler 1 (links)
30090 REM S2-Score speler 2 (rechts)
30100 REM SN-Snelheid
30110 REM SL-Snelheid FOR...NEXT-routine
30120 REM BX-Balpositie horizontaal
30130 REM BY-Balpositie verticaal
30140 REM CX-Stappen bal hor.
30150 REM CY-Stappen bal vert.
30160 REM RA-Random voor bepalen CY
30170 REM MX-Maximale balpositeie hor.
30180 REM MY-Maximaal aantal tekens vert.
30190 REM CO- =0 bij spelen vs. computer
30200 REM CO- =1 bij spelen vs. mens
30210 REM En verder wat minder
30211 REM belangrijke variabelen.
30220 REM STRINGS OVERZICHT
30230 REM A$-Toets omhoog speler 1
30240 REM B$-Toets omlaag speler 1
30250 REM C$-Toets omhoog speler 2
30260 REM D$-Toets omlaag speler 2
30270 REM S1$-Initialen speler 1
30280 REM S2$-Initialen speler 2
32000 REM
32010 REM TENNIS
32020 REM In Basicode - 3
32030 REM
32040 REM Abdon Pijpelink
32050 REM Mozarthof 74
32060 REM 4536 AW Terneuzen
32070 REM
32080 REM SINCLAIR ZX SPECTRUM
32090 REM
32100 REM
32110 REM TROS-RADIO dd 920513
32120 REM incl.corr. dd 920519
32130 REM-spezial DS-Kultur 921111