-
Notifications
You must be signed in to change notification settings - Fork 27
Expand file tree
/
Copy pathspcwar.bas
More file actions
539 lines (539 loc) · 17.6 KB
/
spcwar.bas
File metadata and controls
539 lines (539 loc) · 17.6 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
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
100 REM *** PROGRAM SIMULATES TV PROGRAM STARTREK
110 REM *** WRITTEN BY MIKE MAYFIELD, CENTERLINE ENGINEERING
120 REM *** DEBUGGING AND MINO REVISIONS BY LEO LAVERDURE, IRA POTEL,
130 REM *** MARY COLE, AND DAVE AHL OF DIGITAL
170 RANDOMIZE
180 PRINT " * * * STAR TREK * * *":PRINT
200 INPUT "DO YOU WANT INSTRUCTIONS (THEY'RE LONG!)";A$
210 IF A$<>"YES" THEN 230
220 GOTO 5820
230 REM *** PROGRAM BEGINS HERE
240 Z$,R$,Q$=" "
260 DIM G(8,8),C(9,2),K(3,3),N(3),Z(8,8)
290 T0,T=INT(RND(1)*20+20)*100
300 T9=30:D0=0:E0,E=3000:P0,P=10:S9=200:S,H8=0
360 DEF FND(D)=SQR((K(I,1)-S1)**2+(K(I,2)-S2)**2)
370 Q1=INT(RND(1)*8+1)
380 Q2=INT(RND(1)*8+1)
390 S1=INT(RND(1)*8+1)
400 S2=INT(RND(1)*8+1)
410 T7=TIME(0)
420 C(2,1),C(3,1),C(4,1),C(4,2),C(5,2),C(6,2)=-1
430 C(1,1),C(3,2),C(5,1),C(7,2),C(9,1)=0
440 C(1,2),C(2,2),C(6,1),C(7,1),C(8,1),C(8,2),C(9,2)=1
450 MAT D=ZER
460 D$="WARP ENGINESS.R. SENSORSL.R. SENSORSPHASER CNTRL"
470 D$=D$+"PHOTON TUBESDAMAGE CNTRL"
480 E$="SHIELD CNTRLCOMPUTER"
490 B9,K9=0
491 REM *** SETS UP WHAT EXISTS IN GALAXY
500 FOR I=1TO8
510 FOR J=1TO8
520 R1=RND(1)
530 IF R1>.98 THEN 580
540 IF R1>.95 THEN 610
550 IF R1>.8 THEN 640
560 K3=0:GOTO 660
580 K3=3:K9=K9+3:GOTO 660
610 K3=2:K9=K9+2:GOTO 660
640 K3=1:K9=K9+1
660 R1=RND(1)
670 IF R1>.96 THEN 700
680 B3=0:GOTO 720
700 B3=1:B9=B9+1
720 S3=INT(RND(1)*8+1)
730 G(I,J)=K3*100+B3*10+S3
740 Z(I,J)=0
750 NEXT J
760 NEXT I
770 K7=K9
775 PRINT:PRINT
780 PRINT"YOU MUST DESTROY"K9" KLINGONS IN"T9" STARDATES WITH "B9" STARBASES"
790 IF B9>0 THEN 810
800 G(6,3)=114
810 K3,B3,S3=0
820 IF Q1<1 OR Q1>8 OR Q2<1 OR Q2>8 THEN 920
830 X=G(Q1,Q2)*.01
840 K3=INT(X)
850 B3=INT((X-K3)*10)
860 S3=G(Q1,Q2)-INT(G(Q1,Q2)*.1)*10
870 IF K3=0 THEN 910
880 IF S>200 THEN 910
890 PRINT"COMBAT AREA CONDITION RED"
900 PRINT" SHIELDS DANGEROUSLY LOW"
910 MAT K=ZER
920 FOR I=1TO3
930 K(I,3)=0
940 NEXT I
950 Q$=Z$:R$=Z$
970 S$=MID(Z$,1,48)
971 REM *** PUT ENTERPRISE SOMEWHERE
980 A$="<*>"
990 Z1=S1
1000 Z2=S2
1010 GOSUB 5510
1020 FOR I=1TOK3
1030 GOSUB 5380
1031 REM *** PUT KLINGONS SOMEWHERE
1040 A$="+++"
1050 Z1=R1
1060 Z2=R2
1070 GOSUB 5510
1080 K(I,1)=R1: K(I,2)=R2: K(I,3)=S9
1110 NEXT I
1120 FOR I=1TOB3
1130 GOSUB 5380
1131 REM *** PUT STARBASE(S) SOMEWHERE
1140 A$=">!<": Z1=R1: Z2=R2
1170 GOSUB 5510
1180 NEXT I
1190 FOR I=1TOS3
1200 GOSUB 5380
1201 REM *** PUT STARS SOMEWHERE
1210 A$=" * ": Z1=R1: Z2=R2
1240 GOSUB 5510
1250 NEXT I
1260 GOSUB 4120
1270 INPUT "COMMAND:";A
1290 IF A=0 GOTO 1410
1291 IF A=1 GOTO 1260
1292 IF A=2 GOTO 2330
1293 IF A=3 GOTO 2530
1294 IF A=4 GOTO 2800
1295 IF A=5 GOTO 3460
1296 IF A=6 GOTO 3560
1297 IF A=7 GOTO 4630
1298 IF A=8 GOTO 6510
1310 PRINT:PRINT" 0 = SET COURSE"
1320 PRINT" 1 = SHORT RANGE SENSOR SCAN"
1330 PRINT" 2 = LONG RANGE SENSOR SCAN"
1340 PRINT" 3 = FIRE PHASERS"
1350 PRINT" 4 = FIRE PHOTON TORPEDOES"
1360 PRINT" 5 = SHIELD CONTROL"
1370 PRINT" 6 = DAMAGE CONTROL REPORT"
1380 PRINT" 7 = CALL ON LIBRARY COMPUTER"
1390 PRINT" 8 = END THE CONTEST":PRINT
1400 GOTO 1270
1401 REM *** COURSE CONTROL CODE BEGINS HERE
1410 INPUT "COURSE (1-9):";C1
1430 IF C1=0 THEN 1270
1440 IF C1<1 OR C1>9 THEN 1410
1450 INPUT "WARP FACTOR (0-8):";W1
1470 IF W1<0 OR W1>8 THEN 1410
1480 IF D(1)>=0 OR W1<=.2 THEN 1510
1490 PRINT "WARP ENGINES ARE DAMAGED, MAXIMUM SPEED = WARP .2"
1500 GOTO 1410
1510 IF K3<=0 THEN 1560
1520 GOSUB 3790
1530 IF K3<=0 THEN 1560
1540 IF S<0 THEN 4000
1550 GOTO 1610
1560 IF E>0 THEN 1610
1570 IF S<1 THEN 3920
1580 PRINT "YOU HAVE"E" UNITS OF ENERGY"
1590 PRINT "SUGGEST YOU GET SOME FROM YOUR SHIELDS WHICH HAVE"S" UNITS LEFT"
1600 GOTO 1270
1610 FOR I=1TO8: IF D(I)>=0 THEN 1640
1611 REM *** FIX ANY DAMAGED DEVICE
1630 D(I)=D(I)+1
1640 NEXT I
1650 IF RND(1)>.2 THEN 1810
1660 R1=INT(RND(1)*8+1)
1670 IF RND(1)>= .5 THEN 1750
1680 D(R1)=D(R1)-(RND(1)*5+1)
1690 PRINT:PRINT "DAMAGE CONTROL REPORT:";
1710 GOSUB 5610
1720 PRINT" DAMAGED":PRINT:GOTO 1810
1750 D(R1)=D(R1)+(RND(1)*5+1)
1760 PRINT:PRINT "DAMAGE CONTROL REPORT:";
1780 GOSUB 5610
1790 PRINT" STATE OF REPAIR IMPROVED":PRINT
1810 N=INT(W1*8):A$=" ":Z1=S1:Z2=S2
1850 GOSUB 5510
1860 X1=C(C1,1)+(C(C1+1,1)-C(C1,1))*(C1-INT(C1))
1870 X=S1:Y=S2
1890 X1=C(C1,1)+(C(C1+1,1)-C(C1,1))*(C1-INT(C1))
1900 X2=C(C1,2)+(C(C1+1,2)-C(C1,2))*(C1-INT(C1))
1910 FOR I=1TON:S1=S1+X1:S2=S2+X2
1940 IF S1<1 OR S1>=9 OR S2<1 OR S2>=9 THEN 2170
1950 S8=S1*24+S2*3-26: IF S8>72 THEN 1990
1970 IF MID(Q$,S8,3)=" " THEN 2070
1980 GOTO 2030
1990 IF S8>144 THEN 2020
2000 IF MID(R$,S8-72,3)=" " THEN 2070
2010 GOTO 2030
2020 IF MID(S$,S8-144,3)=" " THEN 2070
2030 PRINT"WARP ENGINES SHUTDOWN AT SECTOR "S1","S2" DUE TO BAD NAVAGATION"
2040 S1=S1-X1:S2=S2-X2:GOTO 2080
2070 NEXT I
2080 A$="<*>":Z1=S1:Z2=S2
2110 GOSUB 5510
2120 E=E-N+5:IF W1<1 THEN 2150
2140 T=T+1
2150 IF T>T0+T9 THEN 3970
2160 GOTO 1260
2170 X=Q1*8+X+X1*N:Y=Q2*8+Y+X2*N
2190 Q1=INT(X/8):Q2=INT(Y/8):S1=INT(X-Q1*8):S2=INT(Y-Q2*8)
2230 IF S1<>0 THEN 2260
2240 Q1=Q1-1:S1=8
2260 IF S2<>0 THEN 2290
2270 Q2=Q2-1:S2=8
2290 T=T+1:E=E-N+5
2310 IF T>T0 + T9 THEN 3970
2320 GOTO 810
2321 REM *** LONG RANGE SENSON SCAN CODE BEGINS HERE
2330 IF D(3)>=0 THEN 2370
2340 PRINT "LONG RANGE SENSORS ARE INOPERABLE"
2360 GOTO 1270
2370 PRINT"LONG RANGE SENSOR SCAN FOR QUADRANT "Q1","Q2
2380 PRINT"-------------------"
2390 FOR I=Q1-1 TO Q1+1
2400 MAT N=ZER
2410 FOR J=Q2-1 TO Q2+1
2420 IF I<1 OR I>8 OR J<1 OR J>8 THEN 2460
2430 N(J-Q2+2)=G(I,J)
2440 IF D(7)<0 THEN 2460
2450 Z(I,J)=G(I,J)
2460 NEXT J
2470 P1$=": ### : ### : ### :"
2471 PRINT USING P1$,N(1),N(2),N(3)
2480 PRINT"-------------------"
2490 NEXT I
2500 GOTO 1270
2501 REM *** PHASER CONTROL CODE BEGINS HERE
2530 IF K3<=0 THEN 3670
2540 IF D(4)>=0 THEN 2570
2560 GOTO 1270
2570 IF D(7)>=0 THEN 2590
2580 PRINT " COMPUTER FAILURE HAMPERS ACCURACY"
2590 PRINT"PHASERS LOCKED ON TARGET. ENERGY AVAILABLE="E
2600 INPUT "NUMBER OF UNITS TO FIRE:";X
2620 IF X<=0 THEN 1270
2630 IF E-X<0 THEN 2570
2640 E=E-X
2650 GOSUB 3790
2660 IF D(7)>=0 THEN 2680
2670 X=X*RND(1)
2680 FOR I=1TO3
2690 IF K(I,3)<=0 THEN 2770
2700 H=INT((X/K3/FND(0))*(2*RND(1)))
2710 K(I,3)=K(I,3)-H
2720 PRINTH" UNIT HIT ON KLINGON AT SECTOR "K(I,1)","K(I,2);
2721 PRINT" ("K(I,3)" LEFT)"
2740 IF K(I,3)>0 THEN 2770
2750 GOSUB 3690
2760 IF K9<=0 THEN 4040
2770 NEXT I
2780 IF E<0 THEN 4000
2790 GOTO 1270
2791 REM *** PHOTON TORPEDO CODE BEGINS HERE
2800 IF D(5)>=0 THEN 2830
2810 PRINT "PHOTON TUBES ARE NOT OPERATIONAL"
2820 GOTO 1270
2830 IF P>0 THEN 2860
2840 PRINT "ALL PHOTON TORPEDOES EXPENDED"
2850 GOTO 1270
2860 INPUT "TORPEDO COURSE (1-9):";C1
2880 IF C1=0 THEN 1270
2890 IF C1<1 OR C1>=9 THEN 2860
2900 X1=C(C1,1)+(C(C1+1,1)-C(C1,1))*(C1-INT(C1))
2910 X2=C(C1,2)+(C(C1+1,2)-C(C1,2))*(C1-INT(C1))
2920 X=S1:Y=S2:P=P-1
2950 PRINT "TORPEDO TRACK:"
2960 X=X+X1:Y=Y+X2
2980 IF X<1 OR X>=9 OR Y<1 OR Y>=9 THEN 3420
2990 PRINT" "X","Y
3010 A$=" ":Z1=X:Z2=Y
3040 GOSUB 5680
3050 IF Z3=0 THEN 3070
3060 GOTO 2960
3070 A$="+++":Z1=X:Z2=Y
3100 GOSUB 5680
3110 IF Z3=0 THEN 3220
3120 PRINT "*** KLINGON DESTROYED ***"
3130 K3=K3-1:K9=K9-1
3150 IF K9<=0 THEN 4040
3160 FOR I=1TO3:IF INT(X)<>K(I,1) THEN 3190
3180 IF INT(Y)=K(I,2) THEN 3200
3190 NEXT I
3200 K(I,3)=0:GOTO 3360
3220 A$=" * ":Z1=X:Z2=Y
3250 GOSUB 5680
3260 IF Z3=0 THEN 3290
3270 PRINT "YOU CAN'T DESTROY STARS, SILLY"
3280 GOTO 3420
3290 A$=">!<":Z1=X:Z2=Y
3320 GOSUB 5680
3330 IF Z3=0 THEN 2960
3340 PRINT "*** STAR BASE DESTROYED *** .......CONGRATULATIONS"
3350 B3=B3-1
3360 A$=" ":Z1=X:Z2=Y
3390 GOSUB 5510
3400 G(Q1,Q2)=K3*100+B3*10+S3
3410 GOTO 3430
3420 PRINT "TORPEDO MISSED"
3430 GOSUB 3790
3440 IF E<0 THEN 4000
3450 GOTO 1270
3451 REM *** SHIELD CONTROL CODE BEGINS HERE
3460 IF D(7)>=0 THEN 3490
3470 PRINT "SHIELD CONTROL IS NON-OPERATIONAL"
3480 GOTO 1270
3490 PRINT "ENERGY AVAILABLE ="E+S;
3500 INPUT " NUMBER OF UNITS TO SHIELDS:";X
3510 IF X<=0 THEN 1270
3520 IF E+S-X<0 THEN 3490
3530 E=E+S-X:S=X
3550 GOTO 1270
3551 REM *** DAMAGE CONTROL REPORT CODE BEGINS HERE
3560 IF D(6)>=0 THEN 3590
3570 PRINT "DAMAGE CONTROL REPORT IS NOT AVAILABLE"
3580 GOTO 1270
3590 PRINT:PRINT "DEVICE STATE OF REPAIR"
3610 FOR R1=1TO8
3620 GOSUB 5610
3630 PRINTD(R1)
3640 NEXT R1:PRINT
3660 GOTO 1270
3670 PRINT"SHORT RANGE SENSORS REPORT NO KLINGONS IN THIS QUADRANT"
3680 GOTO 1270
3690 PRINT "KLINGON AT SECTOR "K(I,1)","K(I,2)"DESTROYED ***"
3710 K3=K3-1:K9=K9-1:A$=" ":Z1=K(I,1):Z2=K(I,2)
3760 GOSUB 5510
3770 G(Q1,Q2)=K3*100+B3*10+S3
3780 RETURN
3790 IF C$<>"DOCKED" THEN 3820
3800 PRINT "STAR BASE SHIELDS PROTECT THE ENTERPRISE"
3810 RETURN
3820 IF K3<=0 THEN 3910
3830 FOR I=1TO3:IF K(I,3)<=0 THEN 3900
3850 H=INT((K(I,3)/FND(0))*(2+RND(1))):S=S-H
3870 PRINTH" UNIT HIT ON ENTERPRISE AT SECTOR "K(I,1)","K(I,2);
3871 PRINT" ("S" LEFT)"
3890 IF S<0 THEN 4000
3900 NEXT I
3910 RETURN
3920 PRINT "THE ENTERPRISE IS DEAD IN SPACE. IF YOU SURVIVE ALL IMPENDING"
3930 PRINT "ATTACKS YOU WILL BE DEMOTED TO THE RANK OF PRIVATE"
3940 IF K3<=0 THEN 4020
3950 GOSUB 3790
3960 GOTO 3940
3970 PRINT:PRINT "IT IS STARDATE"T
3990 GOTO 4020
3991 REM *** NO ENERGY LEFT
4000 PRINT:PRINT"THE ENTERPRISE HAS BEEN DESTROYED. THE FEDERATION WILL BE CONQUERED"
4020 PRINT "THERE ARE STILL "K9" KLINGON BATTLE CRUISERS"
4030 PRINT:PRINT:PRINT:PRINT "YOU GET ANOTHER CHANCE....":GOTO 230
4040 PRINT:PRINT"THE LAST KLINGON BATTLE CRUISER IN THE GALAXY HAS BEEN DESTROYED"
4050 PRINT"THE FEDERATION HAS BEEN SAVED!!!!!":PRINT
4075 E5=((K7/(T-T0))*1000)
4080 PRINT "YOUR EFFICIENCY RATING ="E5
4100 PRINT"YOUR ACTUAL TIME OF MISSION ="INT((TIME(0)-T7)/60);" MINUTES"
4105 PRINT:PRINT:PRINT
4106 INPUT"DO YOU WANT TO TRY AGAIN";R$
4107 IF R$ = "YES" THEN 230
4110 GOTO 6510
4111 REM *** SHORT RANGE SENSOR SCAN AND STARTING POINT CODE
4120 FOR I=S1-1TO S1+1
4130 FOR J=S2-1TO S2+1
4140 IF I<1 OR I>8 OR J<1 OR J>8 THEN 4200
4150 A$=">!<":Z1=I:Z2=J
4180 GOSUB 5680
4190 IF Z3=1 THEN 4240
4200 NEXT J
4210 NEXT I
4220 D0=0:GOTO 4310
4240 D0=1:C$="DOCKED":E=3000:P=10
4280 PRINT "SHIELDS DROPPED FOR DOCKING PURPOSES"
4290 S=0:GOTO 4380
4310 IF K3>0 THEN 4350
4320 IF E<E0 *.1 THEN 4370
4330 C$="GREEN"
4340 GOTO 4380
4350 C$="RED":GOTO 4380
4370 C$="YELLOW"
4380 IF D(2)>=0 THEN 4430
4390 PRINT:PRINT"*** SHORT RANGE SENSORS ARE OUT ***":PRINT
4420 GOTO 4530
4430 O1$="---------------------------------"
4435 PRINT USING O1$
4440 O2$=" \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \"
4445 PRINT USING O2$,MID(Q$,1,3),MID(Q$,4,3),MID(Q$,7,3),MID(Q$,10,3),MID(Q$,13,3),MID(Q$,16,3),MID(Q$,19,3),MID(Q$,22,3)
4450 O3$=O2$+" STARDATE #####"
4455 PRINT USING O3$,MID(Q$,25,3),MID(Q$,28,3),MID(Q$,31,3),MID(Q$,34,3),MID(Q$,37,3),MID(Q$,40,3),MID(Q$,43,3),MID(Q$,46,3),T
4460 O4$=O2$+" CONDITION \ \"
4465 PRINT USING O4$,MID(Q$,49,3),MID(Q$,52,3),MID(Q$,55,3),MID(Q$,58,3),MID(Q$,61,3),MID(Q$,64,3),MID(Q$,67,3),MID(Q$,70,3),C$
4470 O5$=O2$+" QUADRANT #"
4475 PRINT USING O5$,MID(R$,1,3),MID(R$,4,3),MID(R$,7,3),MID(R$,10,3),MID(R$,13,3),MID(R$,16,3),MID(R$,19,3),MID(R$,22,3),Q1;
4476 PRINT ",";Q2
4480 O6$=O2$+" SECTOR #"
4485 PRINT USING O6$,MID(R$,25,3),MID(R$,28,3),MID(R$,31,3),MID(R$,34,3),MID(R$,37,3),MID(R$,40,3),MID(R$,43,3),MID(R$,46,3),S1;
4486 PRINT ",";S2
4490 O7$=O2$+" TOTAL ENERGY ######"
4495 PRINT USING O7$,MID(R$,49,3),MID(R$,52,3),MID(R$,55,3),MID(R$,58,3),MID(R$,61,3),MID(R$,64,3),MID(R$,67,3),MID(R$,70,3),E
4500 O8$=O2$+" PHOTON TORPEDOES ###"
4505 PRINT USING O8$,MID(S$,1,3),MID(S$,4,3),MID(S$,7,3),MID(S$,10,3),MID(S$,13,3),MID(S$,16,3),MID(S$,19,3),MID(S$,22,3),P
4510 O9$=O2$+" SHIELDS ######"
4515 PRINT USING O9$,MID(S$,25,3),MID(S$,28,3),MID(S$,31,3),MID(S$,34,3),MID(S$,37,3),MID(S$,40,3),MID(S$,43,3),MID(S$,46,3),S
4520 PRINT USING O1$
4530 RETURN
4620 REM *** LIBRARY COMPUTER CODE BEGINS HERE
4630 IF D(8)>=0 THEN 4660
4640 PRINT "COMPUTER DISABLED":GOTO 1270
4660 INPUT "COMPUTER ACTIVE AND AWAITING COMMAND:";A
4680 IF A=0 GOTO 4740
4681 IF A=1 GOTO 4830
4682 IF A=2 GOTO 4880
4690 PRINT "FUNCTIONS AVAILABLE FROM COMPUTER"
4700 PRINT " 0 = CUMULATIVE GALACTIC RECORD"
4710 PRINT " 1 = STATUS REPORT"
4720 PRINT " 2 = PHOTON TORPEDO DATA"
4730 GOTO 4660
4731 REM *** CUMULATIVE GALACTIC RECORD CODE BEGINS HERE
4740 PRINT"COMPUTER RECORD OF GALAXY FOR QUADRANT "Q1","Q2
4760 PRINT" 1 2 3 4 5 6 7 8"
4770 PRINT" ----- ----- ----- ----- ----- ----- ----- -----"
4780 FOR I=1TO8
4790 N1$="# ### ### ### ### ### ### ### ###"
4795 PRINT USING N1$,I,Z(I,1),Z(I,2),Z(I,3),Z(I,4),Z(I,5),Z(I,6),Z(I,7),Z(I,8)
4800 PRINT" ----- ----- ----- ----- ----- ----- ----- -----"
4810 NEXT I
4820 GOTO 1270
4821 REM *** STATUS REPORT CODE BEGINS HERE
4830 PRINT " STATUS REPORT"
4840 PRINT "NUMBER OF KLINGONS LEFT ="K9
4850 V5=(T0+T9)-T
4851 PRINT "NUMBER OF STARDATES LEFT =";V5
4860 PRINT "NUMBER OF STARBASES LEFT ="B9
4870 GOTO 3560
4880 PRINT:H8=0
4881 REM *** PHOTON TORPEDO DATA CODE BEGINS HERE
4900 FOR I=1TO3
4910 IF K(I,3)<=0 THEN 5260
4920 C1=S1:A=S2:W1=K(I,1):X=K(I,2)
4960 GOTO 5010
4970 PRINT"YOU ARE AT QUADRANT ( "Q1","Q2" ) SECTOR ( "S1","S2" )"
4990 INPUT "SHIP AND TARGET COORDINATES ARE:";C1,A,W1,X
5010 X=X-A:A=C1-W1
5030 IF X<0 THEN 5130
5031 IF A<0 THEN 5190
5050 IF X>0 THEN 5070
5051 IF A=0 THEN 5150
5070 C1=1
5080 IF ABS(A) <= ABS(X) THEN 5110
5085 V5=C1+(((ABS(A)-ABS(X))+ABS(A))/ABS(A))
5090 PRINT "DIRECTION ="V5
5100 GOTO 5240
5110 PRINT "DIRECTION ="C1+(ABS(A)/ABS(X))
5120 GOTO 5240
5130 IF A>0 THEN 5170
5140 IF X=0 THEN 5190
5150 C1=5:GOTO 5080
5170 C1=3:GOTO5200
5190 C1=7
5200 IF ABS(A)>=ABS(X) THEN 5230
5210 PRINT "DIRECTION ="C1+(((ABS(X)-ABS(A))+ABS(X))/ABS(X))
5220 GOTO 5240
5230 PRINT "DIRECTION ="C1+(ABS(X)/ABS(A))
5240 PRINT "DISTANCE ="SQR(X**2+A**2)
5250 IF H8=1 THEN 5320
5260 NEXT I
5270 H8=0
5280 INPUT "DO YOU WANT TO USE THE CALCULATOR";A$
5300 IF A$="YES" THEN 4970
5310 IF A$<>"NO" THEN 5280
5320 GOTO 1270
5321 REM *** END OF LIBRARY COMPUTER CODE
5380 R1=INT(RND(1)*8+1):R2=INT(RND(1)*8+1):A$=" ":Z1=R1:Z2=R2
5430 GOSUB 5680
5440 IF Z3=0 THEN 5380
5450 RETURN
5510 REM *** INSERTION IN STRING ARRAY FOR QUADRANT ***
5520 S8=Z1*24+Z2*3-26:IF S8>72 THEN 5560
5540 Q$=LEFT(Q$,S8-1)+A$+RIGHT(Q$,S8+3)
5550 GOTO 5600
5560 IF S8>144 THEN 5590
5570 R$=LEFT(R$,S8-73)+A$+RIGHT(R$,S8-69)
5580 GOTO 5600
5590 S$=LEFT(S$,S8-145)+A$+RIGHT(S$,S8-141)
5600 RETURN
5610 REM *** PRINTS DEVICE NAME FROM ARRAY***
5620 S8=R1*12-11:IF S8>72 THEN 5660
5640 PRINT MID(D$,S8,11),:GOTO 5670
5660 PRINT MID(E$,S8-72,11),
5670 RETURN
5680 REM ***STRING COMPARISON IN QUADRANT ARRAY***
5690 S8=Z1*24+Z2*3-26:Z3=0:IF S8>72 THEN 5750
5720 IF MID(Q$,S8,3)<>A$ THEN 5810
5730 Z3=1:GOTO 5810
5750 IF S8>144 THEN 5790
5760 IF MID(R$,S8-72,3)<>A$ THEN 5810
5770 Z3=1:GOTO 5810
5790 IF MID(S$,S8-144,3)<>A$ THEN 5810
5800 Z3=1
5810 RETURN
5820 &" INSTRUCTIONS"
5821 &:&"THE GALAXY IS DIVIDED INTO AN 8,8 QUADRANT GRID"
5822 &"WHICH IS IN TURN DIVIDED INTO AN 8,8 SECTOR GRID."
5823 &:&"THE CAST OF CHARACTERS IS AS FOLLOWS:"
5830 &"<*> = ENTERPRISE"
5840 &"+++ = KLINGON"
5850 &">!< = STARBASE":& " * = STAR"
5870 &"COMMAND 0 = WARP ENGINE CONTROL:"
5880 &" COURSE IS IN A CIRCULAR NUMERICAL 4 3 2"
5890 &" VECTOR ARRANGEMENT AS SHOWN. \ ^ /"
5900 &" INTEGER AND REAL VALUES MAY BE \^/"
5910 &" USED. THEREFORE COURSE 1.5 IS 5 ----- 1"
5920 &" HALF WAY BETWEEN 1 AND 2. /^\"
5930 &" / ^ \"
5940 &" A VECTOR OF 9 IS UNDEFINED, BUT 6 7 8"
5950 &" VALUES MAY APPROACH 9."
5960 &" COURSE"
5970 &" ONE WARP FACTOR IS THE SIZE OF"
5980 &" ONE QUADRANT. THEREFORE TO GET"
5990 &" FROM QUADRANT 6,5 TO 5,5 YOU WOULD"
6000 &" USE COURSE 3. WARP FACTOR 1"
6005 &
6010 &"COMMAND 1 = SHORT RANGE SENSOR SCAN"
6020 &" PRINT THE QUADRANT YOU ARE CURRENTLY IN. INCLUDING"
6030 &" STARS, KLINGONS, STARBASES, AND THE ENTERPRISE, ALONG"
6040 &" WITH OTHER PERTINATE INFORMATION."
6045 &:&"COMMAND 2 = LONG RANGE SENSOR SCAN"
6060 &" SHOWS CONDITIONS IN SPACE FOR ONE QUADRANT ON EACH SIDE"
6070 &" OF THE ENTERPRISE IN THE MIDDLE OF THE SCAN. THE SCAN"
6080 &" IS CODED IN THE FORM XXX, WHERE THE UNITS DIGIT IS THE "
6090 &" NUMBER OF STARS, THE TENS DIGIT IS THE NUMBER OF STAR-"
6100 &" BASES. THE HUNDREDS DIGIT IS THE NUMBER OF KLINGONS."
6110 &:&"COMMAND 3 = PHASER CONTROL"
6120 &" ALLOWS YOU TO DESTROY THE KLINGONS BY HITTING HIM WITH"
6130 &" SUITABLY LARGE NUMBERS OF ENERGY UNITS TO DEPLETE HIS "
6140 &" SHIELD POWER. KEEP IN MIND THAT WHEN YOU SHOOT AT HIM,"
6150 &" HE GONNA SHOOT AT YOU, TOO!"
6160 &:&"COMMAND 4 = PHOTON TORPEDO CONTROL"
6170 &" COURSE IS THE SAME AS USED IN WARP ENGINE CONTROL"
6180 &" IF YOU HIT THE KLINGON, HE IS DESTROYED AND CANNOT FIRE"
6190 &" BACK AT YOU. IF YOU MISS, YOU ARE SUBJECT TO HIS "
6200 &" PHASER FIRE."
6210 &:&" NOTE: THE LIBRARY COMPUTER (COMMAND 7) HAS AN OPTION"
6220 &" TO COMPUTE TORPEDO TRAJECTORY FOR YOU (OPTION 2)."
6230 &:&"COMMAND 5 = SHIELD CONTROL"
6240 &" DEFINES NUMBER OF ENERGY UNITS TO BE ASSIGNED TO SHIELDS"
6250 &" ENERGY IS TAKEN FROM TOTAL SHIP'S ENERGY."
6251 &" NOTE THAT TOTAL ENERY INCLUDES SHIELD ENERGY."
6260 &:&"COMMAND 6 = DAMAGE CONTROL REPORT"
6270 &" GIVES STATE OF REPAIRS OF ALL DEVICES. A STATE OF REPAIR"
6280 &" LESS THAN ZERO SHOWS THAT THE DEVICE IS TEMPORARALY"
6290 &" DAMAGED."
6300 &:&"COMMAND 7 = LIBRARY COMPUTER"
6310 &" THE LIBRARY COMPUTER CONTAINS THREE OPTIONS:"
6320 &" OPTION 0 = CUMULATIVE GALACTIC RECORD"
6330 &" WHICH SHOWS COMPUTER MEMORY OF THE RESULTS"
6340 &" OF ALL PREVIOUS LONG RANGE SENSOR SCANS"
6350 &" OPTION 1 = STATUS REPORT"
6360 &" WHICH SHOWS NUMBER OF KLINGONS, STARDATES,"
6370 &" AND STARBASES LEFT."
6380 &" OPTION 2 = PHOTON TORPEDO DATA"
6390 &" GIVES TRAJECTORY AND DISTANCE BETWEEN THE"
6400 &" ENTERPRISE AND ALL KLINGONS IN YOUR QUADRANT"
6500 GOTO 230
6510 END