Compucolor.org – Virtual Media

Listing of file='LINKO.BAS;01' on disk='vmedia/lunar_lander-sector.ccvf'

100 REM            LINKO - MAR 24,1980
110 REM         WRITTEN BY DAVID B. SUITS
120 REM   COPYRIGHT (C) 1980 BY COMPUCOLOR CORP.
130 DIM TI(12),P(7,13):DEF FN A(R)= INT (R* RND (1))+ 1
140 PLOT 14,6,37,12,3,26,12:PRINT "L I N K O"
150 PLOT 3,64,0:FOR J= 1TO 500:NEXT :PLOT 14,6,100
160 PLOT 3,64,0:FOR J= 1TO 1500:NEXT
170 PLOT 15,6,6,12
180 INPUT "WHAT LEVEL OF DIFFICULTY WOULD YOU LIKE (1-4)? ";DD$
190 DD= INT (VAL (DD$)):IF DD< 1OR DD> 4THEN 180
200 SM= 5:IF DD> 2THEN SM= SM- (DD- 2)
210 PLOT 15,6,6,12,27,24:FOR J= 1TO 6:CR(J)= 12:NEXT
220 R= PEEK (33209):FOR J= 1TO R:RN= RND (1):NEXT
230 RD= 0:SN= 0:SY= 11:B= FN A(8)
240 ON BGOSUB 250,260,270,280,290,300,310,320:GOTO 970
250 RESTORE 340:RETURN
260 RESTORE 380:RETURN
270 RESTORE 420:RETURN
280 RESTORE 460:RETURN
290 RESTORE 500:RETURN
300 RESTORE 540:RETURN
310 RESTORE 580:RETURN
320 RESTORE 620:RETURN
330 REM  BOARD 1
340 DATA 6,3,5,2,5,3,1,6,2,1,4,1,5,2,6,3,4,6,2,1,3,4,5,4
350 DATA 4,1,3,1,2,5,6,4,5,2,6,3,5,4,2,6,4,1,3,5,6,3,1,2
360 DATA 4,6,1,5,3,2,4,2,1,6,3,5,2,3,4,1,6,1,5,3,4,5,2,6
370 REM  BOARD 2
380 DATA 6,2,4,6,5,3,2,1,4,3,5,1,5,3,2,1,4,1,6,3,5,6,4,2
390 DATA 1,4,6,5,3,2,5,1,2,4,3,6,3,6,5,2,1,6,4,5,3,2,1,4
400 DATA 2,1,3,5,6,4,3,2,4,5,6,1,5,6,4,1,2,5,6,4,3,1,2,3
410 REM  BOARD 3
420 DATA 4,2,5,6,3,1,5,4,6,2,3,1,3,6,2,1,5,4,3,1,2,4,5,6
430 DATA 2,1,5,4,6,3,2,5,3,6,1,4,6,4,2,3,1,5,6,1,4,5,2,3
440 DATA 1,3,6,5,4,2,3,6,2,1,4,5,4,5,1,3,2,6,1,5,3,4,6,2
450 REM  BOARD 4
460 DATA 3,2,1,4,5,6,4,3,1,2,5,1,5,6,4,3,1,2,3,6,5,6,4,6
470 DATA 1,3,5,2,4,6,5,2,1,3,2,4,4,6,2,6,5,3,1,4,6,5,1,3
480 DATA 2,5,1,3,1,2,6,5,4,3,4,2,1,2,3,6,4,5,4,2,1,5,3,6
490 REM  BOARD 5
500 DATA 1,6,5,2,4,3,4,1,5,2,6,3,2,3,4,5,6,1,6,2,4,3,1,2
510 DATA 4,1,6,3,2,3,5,1,6,1,4,5,5,3,5,4,6,1,2,3,4,2,5,6
520 DATA 3,2,1,6,5,4,6,5,1,4,3,1,6,5,4,2,3,5,1,3,2,6,2,4
530 REM  BOARD 6
540 DATA 4,2,6,3,5,4,3,5,4,1,6,1,5,3,4,1,6,2,6,1,3,5,2,4
550 DATA 1,2,6,2,4,5,3,5,6,4,3,2,6,4,1,5,3,1,2,4,3,2,5,6
560 DATA 2,5,4,6,2,3,6,1,5,4,1,3,3,1,5,1,6,1,4,2,3,2,6,5
570 REM  BOARD 7
580 DATA 6,5,1,2,3,4,5,6,2,4,3,1,3,1,4,6,5,2,6,1,3,5,2,4
590 DATA 2,6,3,1,4,5,3,4,2,6,1,5,1,4,5,2,3,6,2,5,1,3,4,6
600 DATA 5,3,1,6,4,2,1,3,4,6,5,2,4,2,6,5,1,3,4,2,5,3,6,1
610 REM  BOARD 8
620 DATA 5,4,6,2,5,4,3,5,1,6,2,3,6,1,3,4,6,2,1,2,3,5,4,1
630 DATA 2,3,2,5,4,5,6,4,6,1,3,2,4,5,6,3,1,3,1,2,5,4,5,6
640 DATA 3,2,1,6,2,4,5,3,1,6,2,4,1,6,4,5,3,1,6,2,4,3,1,5
650 REM 
660 PLOT 6,3,14,3,57,3:PRINT SM:PLOT 15:RETURN
670 REM  MARKERS
680 ON WGOSUB 690,700,710,720,730,740:GOTO 830
690 RESTORE 750:RETURN
700 RESTORE 760:RETURN
710 RESTORE 770:RETURN
720 RESTORE 780:RETURN
730 RESTORE 790:RETURN
740 RESTORE 800:RETURN
750 DATA 0,0,0,0,0,224,110,102,0,240,15,0
760 DATA 0,0,0,0,102,230,14,0,0,240,15,0
770 DATA 0,240,15,0,0,112,103,102,0,0,0,0
780 DATA 0,240,15,0,102,118,7,0,0,0,0,0
790 DATA 0,240,15,0,0,240,15,0,0,240,15,0
800 DATA 0,0,0,0,102,102,102,102,0,0,0,0
810 PLOT 255
820 PLOT 26,26,26,26,10:RETURN
830 PLOT 6,37,3,X1,Y1:FOR K= 1TO 3:PLOT 2,254
840 FOR J= 1TO 4:READ TI(J):PLOT TI(J):NEXT J
850 GOSUB 810:NEXT K:RETURN
860 REM  COLORS
870 R= FN A(6)
880 ON RGOSUB 900,910,920,930,940,950:PLOT 6,CO
890 CN= CO+ 7* (CO< > 7):RETURN
900 CO= 63:RETURN
910 CO= 55:RETURN
920 CO= 23:RETURN
930 CO= 7:RETURN
940 CO= 31:RETURN
950 CO= 15:RETURN
960 REM 
970 FOR RW= 1TO 6:SX= 12:SY= SY+ 3:FOR C= 1TO 12:SX= SX+ 4
980 SN= SN+ 1:READ R:GOSUB 880:P(RW,C)= CO:PLOT 3,SX,SY
990 PRINT "neeo";:GOSUB 820:PRINT "a";:IF SN< 10THEN PRINT " ";
1000 PLOT 6,CN:PRINT RIGHT$ (STR$ (SN),LEN (STR$ (SN))- 1);
1010 PLOT 6,CO:PRINT "b";:GOSUB 820:PRINT "lm"
1020 NEXT C,RW:PLOT 6,6,3,18,0:PRINT "n";
1030 FOR J= 1TO 41:PRINT "e";:NEXT :PRINT "o"
1040 PLOT 27,10,3,60,1:PRINT "bbbbbbbbbb"
1050 PLOT 3,18,1:PRINT "aaaaaaaaaa":PLOT 27,24,3,18,11
1060 PRINT "l";:FOR J= 1TO 41:PRINT "";:NEXT :PRINT "m"
1070 W= 0:Y1= 6:FOR X1= 20TO 55STEP 7:W= W+ 1
1080 GOSUB 680:PLOT 6,1,10,25:PRINT W:NEXT X1
1090 PLOT 6,7,3,3,5:PRINT "neo  neo"
1100 PLOT 3,3,6:PRINT "lm  lm"
1110 PLOT 3,19,5:PRINT "teeeeeeeeeeeeeeeeeeeeeeeeeu"
1120 PLOT 3,47,5:PRINT "teeeeeeeeeeeu"
1130 PLOT 3,25,2:PRINT "ANGLE MARKERS:":PLOT 3,24,3:PRINT "UNLIMITED SUPPLY"
1140 PLOT 3,47,1:PRINT "STRAIGHT":PLOT 3,47,2:PRINT "MARKERS"
1150 PLOT 3,47,3:PRINT "REMAINING:":GOSUB 660
1160 IF DD= 1THEN 1310
1170 REM  ADVANCED GAME
1180 FOR J= 1TO 6
1190 AX(J)= FN A(12):AY(J)= FN A(6):IF J= 1THEN 1230
1200 F6= 0
1210 FOR K= 1TO J- 1:IF P(AY(K),AX(K))= P(AY(J),AX(J))THEN F6= - 1
1220 NEXT K:IF F6THEN 1190
1230 PLOT 6,5,3,12+ AX(J)* 4,11+ AY(J)* 3
1240 PRINT "XXXX";:GOSUB 820
1250 IF AX(J)< 10AND AY(J)= 1THEN PRINT "XX";:GOTO 1270
1260 PRINT "X";:PLOT 25
1270 PLOT 25:PRINT "X";:GOSUB 820:PRINT "XXXX":NEXT J
1280 FOR J= 1TO 6:P(AY(J),AX(J))= 10:CR(J)= CR(J)- 1:NEXT
1290 REM 
1300 REM  BEGIN
1310 F5= 0:RD= RD+ 1:PLOT 14,3,3,29:PRINT "ROUND:"RD:PLOT 15
1320 PL= 0:PLOT 8:FOR J= 1TO 5:PRINT SPC( 18)"":NEXT
1330 PRINT SPC( 3)"":PRINT SPC( 3)""
1340 FOR J= 5TO 6:PLOT 3,11,J:PRINT SPC( 7)"":NEXT
1350 FOR J= 1TO 6:PRINT SPC( 18)"":NEXT
1360 PLOT 3,1,1:PRINT "PRESS RETURN"
1370 INPUT " TO ROLL DICE...";A$:IF A$= "-9"THEN 2340
1380 PLOT 8:FOR J= 1TO 5:PRINT SPC( 18)"":NEXT
1390 RS= FN A(30)+ 5:FOR ROLL= 1TO RS
1400 FOR XD= 3TO 8STEP 5:GOSUB 870
1410 IF XD= 3THEN D1= CO:R1= R
1420 IF XD= 8THEN D2= CO:R2= R
1430 PLOT 3,XD,5:PRINT "neo":PLOT 3,XD,6:PRINT "lm"
1440 NEXT XD,ROLL
1450 PLOT 6,2:PL= PL+ 1:IF PL< 3THEN 1650
1460 REM  CHECK FOR WIN
1470 F3= 0:FOR K= 1TO 6:C= 1:RW= K
1480 ON P(K,1)GOTO 1490,1510,1490,1540,1490,1570
1490 NEXT K:IF F3THEN 1630
1500 GOTO 1310
1510 RW= RW+ 1:IF RW= 7THEN 1490
1520 ON P(RW,C)GOTO 1490,1490,1570,1600,1510,1490
1530 GOTO 1490
1540 RW= RW- 1:IF RW= 0THEN 1490
1550 ON P(RW,C)GOTO 1570,1600,1490,1490,1540,1490
1560 GOTO 1490
1570 C= C+ 1:IF C= 13THEN K= 6:F3= - 1:GOTO 1490
1580 ON P(RW,C)GOTO 1490,1510,1490,1540,1490,1570
1590 GOTO 1490
1600 C= C- 1:IF C= 0THEN 1490
1610 ON P(RW,C)GOTO 1510,1490,1540,1490,1490,1600
1620 GOTO 1490
1630 PLOT 14,3,3,17:PRINT "YOU WIN!":PLOT 15:GOTO 2340
1640 REM 
1650 IF PL= 2THEN 1680
1660 CR(R1)= CR(R1)- 1:CR(R2)= CR(R2)- 1
1670 IF CR(R1)< 0OR CR(R2)< 0THEN 2300
1680 PLOT 3,3,8:PRINT "PLAY #"PL
1690 IF PL= 1OR D1= D2THEN 1720
1700 IF F5= 1THEN PLOT 3,11,6:PRINT "<--":GOTO 1720
1710 PLOT 3,0,6:PRINT "-->"
1720 PLOT 3,0,9:FOR J= 1TO 4:PRINT SPC( 18)"":NEXT
1730 PLOT 3,1,10:INPUT "WHICH MARKER? ";MA:IF MA= - 9THEN 2340
1740 IF MA< > INT (MA)OR MA< 1OR MA> 6THEN 1720
1750 IF MA> 4AND SM= 0THEN GOSUB 2200:GOTO 1720
1760 PLOT 3,0,12:PRINT SPC( 18)"":PLOT 3,1,12:INPUT "PUT IT WHERE? ";NB
1770 IF NB= - 9THEN 2340
1780 IF NB< > INT (NB)OR NB< 1OR NB> 72THEN 1760
1790 RW= 0
1800 RW= RW+ 1:IF NB> (RW* 12)THEN 1800
1810 C= NB- ((RW- 1)* 12)
1820 IF P(RW,C)= 0THEN GOSUB 2260:GOTO 1720
1830 IF P(RW,C)= 10THEN GOSUB 2170:GOTO 1720
1840 IF P(RW,C)> 0AND P(RW,C)< 7THEN GOSUB 2240:GOTO 1720
1850 IF P(RW,C)< > D1AND P(RW,C)< > D2THEN GOSUB 2220:GOTO 1720
1860 IF F5= 1AND P(RW,C)< > D2THEN GOSUB 2220:GOTO 1720
1870 IF F5= 2AND P(RW,C)< > D1THEN GOSUB 2220:GOTO 1720
1880 F3= 0:GOSUB 2400:IF F3THEN GOSUB 2260:GOTO 1720
1890 GOSUB 2480:IF F3THEN GOSUB 2260:GOTO 1720
1900 X1= C* 4+ 12:Y1= RW* 3+ 11:IF D1= D2THEN 1930
1910 IF P(RW,C)= D1THEN F5= 1:GOTO 1930
1920 F5= 2
1930 P(RW,C)= MA:W= MA:GOSUB 680
1940 IF MA> 4THEN SM= SM- 1:GOSUB 660
1950 ON MAGOSUB 1960,1970,1980,1990,2000,2010:GOTO 1450
1960 GOSUB 2020:GOSUB 2040:RETURN
1970 GOSUB 2020:GOSUB 2050:RETURN
1980 GOSUB 2040:GOSUB 2030:RETURN
1990 GOSUB 2030:GOSUB 2050:RETURN
2000 GOSUB 2040:GOSUB 2050:RETURN
2010 GOSUB 2020:GOSUB 2030:RETURN
2020 T1= P(RW- 1,C):GOSUB 2060:P(RW- 1,C)= 0:RETURN
2030 T1= P(RW+ 1,C):GOSUB 2060:P(RW+ 1,C)= 0:RETURN
2040 T1= P(RW,C- 1):GOSUB 2060:P(RW,C- 1)= 0:RETURN
2050 T1= P(RW,C+ 1):GOSUB 2060:P(RW,C+ 1)= 0:RETURN
2060 IF T1< 7OR T1= 10THEN RETURN
2070 IF T1= 63THEN T1= 1
2080 IF T1= 55THEN T1= 2
2090 IF T1= 23THEN T1= 3
2100 IF T1= 7THEN T1= 4
2110 IF T1= 31THEN T1= 5
2120 IF T1= 15THEN T1= 6
2130 CR(T1)= CR(T1)- 1:RETURN
2140 REM 
2150 PLOT 3,1,15:PRINT "*************":PRINT :RETURN
2160 PRINT :PRINT " *************":PLOT 3,64,0:RETURN
2170 GOSUB 2150:PRINT " SQUARE"NB;" IS":PRINT " NOT ELIGIBLE"
2180 GOSUB 2160:FOR J= 1TO 1500:NEXT
2190 PLOT 3,0,15:FOR J= 1TO 11:PRINT SPC( 15)"":NEXT :RETURN
2200 GOSUB 2150:PRINT " YOU'RE OUT":PRINT " OF STRAIGHT"
2210 PRINT " MARKERS":GOTO 2180
2220 GOSUB 2150:PRINT " SQUARE"NB;" IS":PRINT " THE WRONG"
2230 PRINT " COLOR":GOTO 2180
2240 GOSUB 2150:PRINT " SQUARE"NB;" IS":PRINT " OCCUPIED"
2250 GOTO 2180
2260 GOSUB 2150:PRINT " NO MARKER":PRINT " MAY BE NEXT"
2270 PRINT " TO ANY OTHER":PRINT " MARKER UNLESS"
2280 PRINT " THEIR LINES":PRINT " JOIN UP":GOSUB 2160
2290 FOR J= 1TO 2500:NEXT :GOTO 2190
2300 RESTORE 2380:R= FN A(5):FOR J= 1TO R:READ R$:NEXT
2310 PLOT 6,5,3,1,14:PRINT R$:PRINT " THERE AREN'T"
2320 PRINT " ENOUGH SQUARES":PRINT " OF THE PROPER"
2330 PRINT " COLORS LEFT":PRINT :PRINT "***GAME OVER***"
2340 PLOT 3,3,22:PRINT "CARE FOR":PRINT "   ANOTHER"
2350 INPUT "   GAME? ";A$:IF LEFT$ (A$,1)= "Y"THEN PLOT 12:GOTO 170
2360 IF LEFT$ (A$,1)< > "N"THEN PLOT 3,0,24:PRINT SPC( 15)"":PLOT 3,0,24:GOTO 2350
2370 LOAD "MENU":RUN
2380 DATA "TOUGH LUCK!","TOO BAD!","THAT'S ALL!","OH! OH!","BAD NEWS!"
2390 REM  ERROR CHECK 1
2400 F4= 0
2410 IF P(RW- 1,C)> 0AND P(RW- 1,C)< 7THEN F4= F4+ 1
2420 IF P(RW+ 1,C)> 0AND P(RW+ 1,C)< 7THEN F4= F4+ 1
2430 IF P(RW,C- 1)> 0AND P(RW,C- 1)< 7THEN F4= F4+ 1
2440 IF P(RW,C+ 1)> 0AND P(RW,C+ 1)< 7THEN F4= F4+ 1
2450 IF F4> 2THEN F3= - 1
2460 RETURN
2470 REM  ERROR CHECK 2
2480 ON MAGOTO 2500,2550,2600,2650,2700,2750
2490 RETURN
2500 IF P(RW,C+ 1)= 3OR P(RW,C+ 1)= 5OR P(RW,C+ 1)= 1THEN F3= - 1
2510 IF P(RW+ 1,C)= 2OR P(RW+ 1,C)= 6OR P(RW+ 1,C)= 1THEN F3= - 1
2520 IF P(RW- 1,C)> 0AND P(RW- 1,C)< 7THEN F3= - 1
2530 IF P(RW,C- 1)> 0AND P(RW,C- 1)< 7THEN F3= - 1
2540 RETURN
2550 IF P(RW,C- 1)= 4OR P(RW,C- 1)= 5OR P(RW,C- 1)= 2THEN F3= - 1
2560 IF P(RW+ 1,C)= 1OR P(RW+ 1,C)= 6OR P(RW+ 1,C)= 2THEN F3= - 1
2570 IF P(RW- 1,C)> 0AND P(RW- 1,C)< 7THEN F3= - 1
2580 IF P(RW,C+ 1)> 0AND P(RW,C+ 1)< 7THEN F3= - 1
2590 RETURN
2600 IF P(RW- 1,C)= 4OR P(RW- 1,C)= 6OR P(RW- 1,C)= 3THEN F3= - 1
2610 IF P(RW,C+ 1)= 1OR P(RW,C+ 1)= 5OR P(RW,C+ 1)= 3THEN F3= - 1
2620 IF P(RW,C- 1)> 0AND P(RW,C- 1)< 7THEN F3= - 1
2630 IF P(RW+ 1,C)> 0AND P(RW+ 1,C)< 7THEN F3= - 1
2640 RETURN
2650 IF P(RW- 1,C)= 3OR P(RW- 1,C)= 6OR P(RW- 1,C)= 4THEN F3= - 1
2660 IF P(RW,C- 1)= 2OR P(RW,C- 1)= 5OR P(RW,C- 1)= 4THEN F3= - 1
2670 IF P(RW+ 1,C)> 0AND P(RW+ 1,C)< 7THEN F3= - 1
2680 IF P(RW,C+ 1)> 0AND P(RW,C+ 1)< 7THEN F3= - 1
2690 RETURN
2700 IF P(RW- 1,C)= 3OR P(RW- 1,C)= 4OR P(RW- 1,C)= 6THEN F3= - 1
2710 IF P(RW+ 1,C)= 1OR P(RW+ 1,C)= 2OR P(RW+ 1,C)= 6THEN F3= - 1
2720 IF P(RW,C- 1)> 0AND P(RW,C- 1)< 7THEN F3= - 1
2730 IF P(RW,C+ 1)> 0AND P(RW,C+ 1)< 7THEN F3= - 1
2740 RETURN
2750 IF P(RW,C- 1)= 2OR P(RW,C- 1)= 4OR P(RW,C- 1)= 5THEN F3= - 1
2760 IF P(RW,C+ 1)= 1OR P(RW,C+ 1)= 3OR P(RW,C+ 1)= 5THEN F3= - 1
2770 IF P(RW- 1,C)> 0AND P(RW- 1,C)< 7THEN F3= - 1
2780 IF P(RW+ 1,C)> 0AND P(RW+ 1,C)< 7THEN F3= - 1
2790 RETURN