home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib38b.dsk / STRANDED.bas < prev    next >
BASIC Source File  |  2023-02-26  |  7KB  |  110 lines

  1. 10  REM  **********************************
  2. 20  REM  * STRANDED                       *
  3. 30  REM  * BY DONALD W. MILLER, JR., M.D. *
  4. 40  REM  * COPYRIGHT(C) 1990              *
  5. 50  REM  * MINDCRAFT PUBL. CORP.          *
  6. 60  REM  * CONCORD, MA 01742              *
  7. 70  REM  **********************************
  8. 80  LOMEM: 16384: HGR : PRINT  CHR$(17): GOTO 550
  9. 90 CT = 0:A = X(SQ):B = Y(SQ)
  10. 100  FOR L = 1 TO 5  STEP 4:DR(L) = SQ(A,B -W):DR(L +1) = SQ(A +W,B):DR(L +2) = SQ(A +W,B +W):DR(L +3) = SQ(A -W,B +W):W =  -W: NEXT L
  11. 110  IF V  THEN  FOR L = 1 TO 8:V(DR(L)) = V(DR(L)) -1: NEXT :V = 0
  12. 120  FOR L = 1 TO 8: IF V(DR(L)) >0  AND T(DR(L))  THEN CT = CT +W:PM(CT,M) = DR(L)
  13. 130  NEXT L:NM(M) = CT: RETURN 
  14. 140  FOR K = 1 TO NM(0):TM(K) = TM(K) +V(PM(K,0)): IF DF >2  THEN SQ = PM(K,0):M = 1: GOSUB 90: FOR N = 1 TO NM(1):TM(K) = TM(K) +V(PM(N,1)): NEXT N: IF DF >3  THEN  GOSUB 160
  15. 150  NEXT K: RETURN 
  16. 160  FOR LL = 1 TO NM(1):SQ = PM(LL,1):M = 2: GOSUB 90: FOR LM = 1 TO NM(2):TM(K) = TM(K) +V(PM(LM,2)): NEXT LM: NEXT LL: RETURN 
  17. 170  HOME : VTAB 23: HTAB 14: PRINT "APPLE'S TURN"
  18. 180 NN(1) = 3 -I:NN(2) = I
  19. 190  FOR NN = 1 TO 2
  20. 200 XX = (PL(0,NN(NN)) -1)/4:YY = (PL(1,NN(NN)) +2)/5
  21. 210 M = 0:SQ = SQ(XX,YY): GOSUB 90
  22. 220  IF DF = 1  THEN RN =  RND(1) *NM(0) +1:SQ = PM(RN,0):XX = X(SQ):YY = Y(SQ): ON NN GOSUB 340,370: IF CT = 0  THEN 970
  23. 230  IF DF = 1  THEN 330
  24. 240  GOSUB 140
  25. 250 FF = 0
  26. 260  FOR N = 1 TO NM(0)
  27. 270  IF TM(N) > = TM(1)  AND TM(N) > = TM(2)  AND TM(N) > = TM(3)  AND TM(N) > = TM(4)  AND TM(N) > = TM(5)  AND TM(N) > = TM(6)  AND TM(N) > = TM(7)  AND TM(N) > = TM(8)  THEN FF = FF +1:RF(FF) = N
  28. 280  NEXT N
  29. 290 RN =  RND(1) *FF +1:SQ = PM(RF(RN),0):XX = X(SQ):YY = Y(SQ)
  30. 300  FOR N = 1 TO 8:TM(N) = 0: NEXT 
  31. 310  ON NN GOSUB 340,370
  32. 320  IF CT = 0  AND NN = 1  THEN 970
  33. 330  NEXT NN:I = NN(2): GOTO 540
  34. 340 BX = 4 *XX +1:BY = 5 *YY +2
  35. 350  COLOR= CL(3): FOR N = BY -4 TO BY: HLIN BX,BX +3 AT N: FOR P = 1 TO 3:S =  PEEK(SO): NEXT P: NEXT N:SQ = SQ(XX,YY):V = 1: GOSUB 90:V(SQ) = 0
  36. 360 M = 0:X1 = (PL(0,3 -I) -1)/4:Y1 = (PL(1,3 -I) +2)/5:SQ = SQ(X1,Y1): GOSUB 90: RETURN 
  37. 370  COLOR= 4:X = PL(0,I):Y = PL(1,I): GOSUB 400
  38. 380 T(SQ((X -1)/4,(Y +2)/5)) = 1
  39. 390  COLOR= CL(I):X = XX *4 +1:Y = YY *5 -2: FOR P = 1 TO 15:S =  PEEK(SO): NEXT :T(SQ(XX,YY)) = 0: GOSUB 400:PL(0,I) = X:PL(1,I) = Y: RETURN 
  40. 400  HLIN X +1,X +2 AT Y: HLIN X,X +3 AT Y +1: HLIN X +1,X +2 AT Y +2: HLIN X,X +3 AT Y +3: HLIN X,X +3 AT Y +4: RETURN 
  41. 410  FOR I = 1 TO 2
  42. 420  IF Z  AND  LEFT$(N$(I),5) = A$  THEN 170
  43. 430  HOME : VTAB 23: HTAB 1: PRINT N$(I)" ("CL$(I)"), BOMB COORDINATES ?";: GET AN$: PRINT AN$;:XX =  VAL(AN$): PRINT " ";: GET AN$: PRINT AN$;:YY =  VAL(AN$)
  44. 440  IF XX >8  OR XX <1  OR YY >6  OR YY <1  THEN  PRINT B$: GOTO 430
  45. 450  IF V(SQ(XX,YY)) <1  OR   NOT T(SQ(XX,YY))  THEN  PRINT B$: GOTO 430
  46. 460 X = XX:Y = YY: GOSUB 340: IF CT = 0  THEN 970
  47. 470  HOME : VTAB 23: HTAB 1: PRINT "AND NOW YOUR MOVE, "N$(I)" ? ";: GET AN$: PRINT AN$;:XX =  VAL(AN$): PRINT " ";: GET AN$: PRINT AN$;:YY =  VAL(AN$)
  48. 480 M = 0:X1 = (PL(0,I) -1)/4:Y1 = (PL(1,I) +2)/5:SQ = SQ(X1,Y1): GOSUB 90:F = 0
  49. 490  IF XX >8  OR XX <1  OR YY >6  OR YY <1  OR   NOT T(SQ(XX,YY))  THEN  PRINT B$: GOTO 470
  50. 500  FOR N = 1 TO CT: IF SQ(XX,YY) = PM(N,0)  THEN F = 1
  51. 510  NEXT : IF   NOT F  THEN  PRINT B$: GOTO 470
  52. 520  IF V(SQ(XX,YY)) <1  THEN  PRINT B$: GOTO 470
  53. 530 X = XX:Y = YY: GOSUB 370
  54. 540  NEXT I: GOTO 410
  55. 550  TEXT : HOME : HTAB 13: PRINT " ";: PRINT "! STRANDED !"
  56. 560  VTAB 3: HTAB 11: PRINT "A GAME OF STRATEGY": VTAB 5: HTAB 19: PRINT "BY": PRINT : HTAB 8: PRINT "DONALD W. MILLER JR., M.D.": PRINT : HTAB 10: PRINT "COPYRIGHT(C) 1990": PRINT : HTAB 10: PRINT "MINDCRAFT PUBL. CORP."
  57. 570  VTAB 15: HTAB 6: INVERSE : PRINT "BE SURE CAPS LOCK KEY IS DOWN": NORMAL : VTAB 22: HTAB 1: PRINT "PRESS RETURN TO CONTINUE";: GET QQ$
  58. 580  DIM X(48),Y(48),V(48),SQ(9,9),PM(9,9),CL(3),CL$(2),N$(2),RF(8),DR(8),NM(8)
  59. 590  DIM T(48)
  60. 600 B$ =  CHR$(7):A1$ = "apple":A$ = "APPLE":W = 1:SO =  -16336
  61. 610 CL$(1) = "BLACK":CL$(2) = "WHITE":CL(1) = 0:CL(2) = 15:CL(3) = 7
  62. 620  FOR X = 1 TO 8
  63. 630  FOR Y = 1 TO 6
  64. 640 SQ = SQ +1:X(SQ) = X:Y(SQ) = Y:SQ(X,Y) = SQ
  65. 650  NEXT : NEXT 
  66. 660  HOME : VTAB 6: PRINT "DO YOU NEED INSTRUCTIONS ?";: GET AN$: ON (AN$ = "Y"  OR AN$ = "y") GOTO 1030
  67. 670 PL(0,1) = 5:PL(1,1) = 13:PL(0,2) = 33:PL(1,2) = 18
  68. 680  RESTORE 
  69. 690  FOR I = 1 TO 48: READ V(I):T(I) = 1: NEXT :Z = 0:T(3) = 0:T(46) = 0
  70. 700  DATA  3,5,5,5,5,3,5,8,8,8,8,5,5,8,8,8,8,5,5,8,8,8,8,5,5,8,8,8,8,5,5,8,8,8,8,5,5,8,8,8,8,5,3,5,5,5,5,3
  71. 710  FOR I = 1 TO 2: HTAB 4: VTAB 2 *I +8: PRINT "PLAYER #"I" ";: INPUT N$(I): IF  LEFT$(N$(I),5) = A$  OR  LEFT$(N$(I),5) = A1$  THEN Z = 1:N$(I) = A$
  72. 720  NEXT 
  73. 730  IF Z  THEN  VTAB 16: HTAB 1: PRINT "WHAT LEVEL OF SKILL SHOULD THE APPLE    PLAY AT ? (1-4) ";: GET DF$:DF =  VAL(DF$): IF DF <1  OR DF >4  THEN 730
  74. 740  POKE  -16297,0: POKE  -16304,0
  75. 750  COLOR= 7: FOR Y = 0 TO 39: HLIN 0,39 AT Y: NEXT 
  76. 760  COLOR= 4: FOR Y = 3 TO 32: HLIN 5,36 AT Y: NEXT 
  77. 770 Y = 34:I = 1:CR = CL(1)
  78. 780  FOR X = 6 TO 34  STEP 4
  79. 790 CR = 15 -CR: COLOR= CR
  80. 800  ON I GOSUB 890,900,910,920,930,940,950,960
  81. 810 I = I +1: NEXT 
  82. 820 X = 1:I = 6
  83. 830  FOR Y = 28 TO 3  STEP  -5
  84. 840 CR = 15 -CR: COLOR= CR
  85. 850  ON I GOSUB 890,900,910,920,930,940
  86. 860 I = I -1: NEXT 
  87. 870  FOR I = 1 TO 2: COLOR= CL(I):X = PL(0,I):Y = PL(1,I): GOSUB 400: NEXT 
  88. 880  POKE  -16298,0: POKE  -16301,0: POKE  -16304,0: POKE 34,20: GOTO 410
  89. 890  VLIN Y,Y +4 AT X +1: RETURN 
  90. 900  HLIN X,X +2 AT Y: HLIN X,X +2 AT Y +2: HLIN X,X +2 AT Y +4: PLOT X +2,Y +1: PLOT X,Y +3: RETURN 
  91. 910  HLIN X,X +2 AT Y: HLIN X,X +2 AT Y +4: VLIN Y +1,Y +3 AT X +2: PLOT X +1,Y +2: RETURN 
  92. 920  VLIN Y,Y +2 AT X: VLIN Y,Y +4 AT X +2: PLOT X +1,Y +2: RETURN 
  93. 930  HLIN X,X +2 AT Y: HLIN X,X +2 AT Y +2: HLIN X,X +2 AT Y +4: PLOT X,Y +1: PLOT X +2,Y +3: RETURN 
  94. 940  VLIN Y,Y +4 AT X: VLIN Y +2,Y +4 AT X +2: PLOT X +1,Y +2: PLOT X +1,Y +4: RETURN 
  95. 950  HLIN X,X +2 AT Y: VLIN Y +1,Y +4 AT X +2: RETURN 
  96. 960  VLIN Y,Y +4 AT X: VLIN Y,Y +4 AT X +2: PLOT X +1,Y: PLOT X +1,Y +2: PLOT X +1,Y +4: RETURN 
  97. 970  HOME : FOR N = 1 TO 5
  98. 980  PRINT B$: POKE  -16303,0: PRINT B$: POKE  -16304,0
  99. 990  NEXT 
  100. 1000  VTAB 23: HTAB 11 -( LEN(N$(I))/2): PRINT N$(I)" IS THE WINNER !!!": FOR N = 1 TO 3500: NEXT 
  101. 1010  HOME : VTAB 23: PRINT "ANOTHER GAME ? ";: GET AN$: IF AN$ = "Y"  THEN  TEXT : HOME : GOTO 670
  102. 1020  TEXT : HOME : NORMAL : END 
  103. 1030  HOME : HTAB 14: PRINT "INSTRUCTIONS": NORMAL : PRINT 
  104. 1040  PRINT "   YOU AND YOUR ARCHRIVAL ARE STRANDED  TOGETHER ON A TROPICAL ISLE.  YOU EACH  HAVE AN UNLIMITED SUPPLY OF SECRET ANTI-MATTER BOMBS WITH WHICH YOU CAN MAKE    LAND VANISH AND ONLY SEA REMAIN !"
  105. 1050  PRINT "   IT IS YOUR MISSION TO ISOLATE YOUR   ENEMY ON A QUADRANT SURROUNDED          COMPLETELY BY WATER. WITHOUT AN ESCAPE, YOUR ARCHRIVAL CAN EASILY BE CAPTURED."
  106. 1060  PRINT "   YOU DO THIS BY FIRST CHOOSING A      QUADRANT TO BOMB NEAR THE ENEMY, AND    THEN, YOU MAKE YOUR ESCAPE TO A SAFER   QUADRANT.  YOU MAY BOMB ANYWHERE, BUT   YOU MAY ONLY MOVE TO ADJACENT QUADRANTS.";
  107. 1070  PRINT "   TO PLAY, FIRST ENTER THE X, THEN THE Y COORDINATE OF THE MOVE."
  108. 1080  PRINT "   IF YOU WANT TO PLAY THE COMPUTER,    JUST ENTER 'APPLE' WHEN ASKED FOR A     PLAYER'S NAME."
  109. 1090  REM 
  110. 1100  VTAB 24: HTAB 8: PRINT "(ANY KEY TO START GAME)";: GET AN$: HOME : GOTO 670