home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib36b.dsk / BRIDGES.bas < prev    next >
BASIC Source File  |  2023-02-26  |  5KB  |  90 lines

  1. 10  REM **********************
  2. 20  REM * BRIDGES            *
  3. 30  REM * BY TIMOTHY THOMAS  *
  4. 40  REM * COPYRIGHT (C) 1989 *
  5. 50  REM * BY MICROSPARC, INC *
  6. 60  REM * CONCORD, MA  01742 *
  7. 70  REM **********************
  8. 80  REM 
  9. 90  LOMEM: 16494: PRINT  CHR$(21):FL = 0
  10. 100  GOTO 630
  11. 110  FOR I = 20 TO 1  STEP  -1
  12. 120  VTAB 22: HTAB 16: PRINT  SPC( I <10);I;" ";: PRINT "LEFT"
  13. 130  REM CHOOSE POSITION FOR CUP
  14. 140 A =  INT( RND(1) *35 +1):B =  INT( RND(1) *15 +1): IF P(A,B) < >0  THEN 140
  15. 150 P(A,B) = 2:FC = FC +1: DRAW 3 AT  FN X(A), FN Y(B): DRAW 1 AT  FN X(X), FN Y(Y)
  16. 160  REM GET KEYPRESS
  17. 170  POKE  -16368,0:XX = X:YY = Y
  18. 180 Z =  PEEK( -16384): IF Z < = 127  THEN 180
  19. 190  POKE  -16368,0
  20. 200  IF Z = 155  THEN  GOSUB 890
  21. 210  IF Z < >L  AND Z < >L1  THEN 240
  22. 220 X = X -1: IF X <1  OR P(X,Y) = 1  THEN X = X +1:F = 1:K = 1
  23. 230  GOTO 320
  24. 240  IF Z < >R  AND Z < >R1  THEN 270
  25. 250 X = X +1: IF X >35  OR P(X,Y) = 1  THEN X = X -1:F = 1:K = 2
  26. 260  GOTO 320
  27. 270  IF Z < >U  AND Z < >U1  THEN 300
  28. 280 Y = Y -1: IF Y <1  OR P(X,Y) = 1  THEN Y = Y +1:F = 1:K = 3
  29. 290  GOTO 320
  30. 300  IF Z < >D  AND Z < >D1  THEN 170
  31. 310 Y = Y +1: IF Y >16  OR P(X,Y) = 1  THEN Y = Y -1:F = 1:K = 4
  32. 320  POKE 768,2: POKE 769,4: CALL 772
  33. 330  IF F = 1  THEN  GOSUB 440:SC = SC +1: REM  IF BRIDGE NEEDED
  34. 340 P(XX,YY) = 1:FC = FC +1: IF   NOT F  THEN  DRAW 2 AT  FN X(XX), FN Y(YY): DRAW 1 AT  FN X(X), FN Y(Y)
  35. 350 F = 0:SC = SC -1: GOSUB 840
  36. 360  IF P(X,Y) < >2  THEN 170: REM IF NOT CUP
  37. 370  HCOLOR= 3: DRAW 2 AT  FN X(X), FN Y(Y): HCOLOR= 0: DRAW 1 AT  FN X(X), FN Y(Y)
  38. 380 FC = FC -1: FOR ZZ = 1 TO 3: POKE 768,50: POKE 769,10: CALL 772: NEXT ZZ:SC = SC +100: GOSUB 840: GOTO 390
  39. 390  NEXT I
  40. 400  VTAB 22: HTAB 16: PRINT "          ": POKE  -16368,0: REM 10 SPACES
  41. 410  VTAB 24: HTAB 1: CALL  -868: PRINT "PLAY AGAIN? (Y/N) ";: GET X$: PRINT X$: IF X$ = "Y"  OR X$ =  CHR$(121)  THEN  HOME : CLEAR :FL = 1: GOTO 660
  42. 420  POKE  -16368,0: TEXT : HOME : PRINT "BYE-BYE": END 
  43. 430  REM CALCULATE BRIDGES
  44. 440 TX = X:TY = Y:
  45. 450  ON K GOTO 460,490,520,550
  46. 460 TX = TX -1:FC = FC -1: IF TX = 0  THEN TX = 1: GOTO 570
  47. 470  IF P(TX,TY) = 1  THEN  GOSUB 590: GOTO 460
  48. 480  GOTO 570
  49. 490 TX = TX +1:FC = FC -1: IF TX = 36  THEN TX = 35: GOTO 570
  50. 500  IF P(TX,TY) = 1  THEN  GOSUB 590: GOTO 490
  51. 510  GOTO 570
  52. 520 TY = TY -1:FC = FC -1: IF TY = 0  THEN TY = 1: GOTO 570
  53. 530  IF P(TX,TY) = 1  THEN  GOSUB 590: GOTO 520
  54. 540  GOTO 570
  55. 550 TY = TY +1:FC = FC -1: IF TY = 17  THEN TY = 16: GOTO 570
  56. 560  IF P(TX,TY) = 1  THEN  GOSUB 590: GOTO 550
  57. 570  HCOLOR= 0: RETURN 
  58. 580  REM DRAW BRIDGES
  59. 590  FOR ZZ = 1 TO 3: POKE 768,20: POKE 769,20: CALL 772: NEXT ZZ:SC = SC -BS: GOSUB 840: GOSUB 860
  60. 600 P(TX,TY) = 0: HCOLOR= 3: DRAW 4 +(K <3) AT  FN X(TX), FN Y(TY)
  61. 610  RETURN 
  62. 620  REM INITIALIZATION AND INSTRUCTIONS
  63. 630  TEXT : HOME 
  64. 640  VTAB 4: HTAB 15: INVERSE : PRINT " BRIDGES ": NORMAL : PRINT : HTAB 18: PRINT "BY": PRINT : HTAB 12: PRINT "TIMOTHY  THOMAS"
  65. 650  PRINT : HTAB 10: PRINT "COPYRIGHT (C) 1989": PRINT : HTAB 18: PRINT "BY": PRINT : HTAB 12: PRINT "MICROSPARC, INC"
  66. 660 L = 136:R = 149:U = 139:D = 138:BS = 1
  67. 670 L1 = 202:R1 = 203:U1 = 201:D1 = 205
  68. 680  DEF  FN X(X) = (X -1) *8 +4: DEF  FN Y(Y) = (Y -1) *10 +5
  69. 690  DIM P(41,24):SC = 100:X = 1:Y = 1:P(1,1) = 1: IF FL = 1  THEN 720
  70. 700  ONERR  GOTO 850
  71. 710  SCALE= 1: ROT= 0: IF  PEEK(16384) < >5  OR  PEEK(233) < >64  THEN  PRINT  CHR$(4);"BLOADBRIDGES.SHAPES": POKE 232,0: POKE 233,64: POKE 216,0
  72. 720  POKE 230,32: HCOLOR= 3: HPLOT 0,0: CALL 62454: HCOLOR= 0: FOR I = 0 TO 279  STEP 8: HPLOT I,0 TO I,159: NEXT 
  73. 730  FOR I = 0 TO 159  STEP 10: HPLOT 0,I TO 279,I: NEXT 
  74. 740  HOME : PRINT "USE THE ARROW KEYS OR J, K, I AND M TO": PRINT "MOVE YOUR MAN TOWARD THE GOLDEN CUPS.": PRINT 
  75. 750  PRINT "AS YOU MOVE, THE PATH BEHIND YOU DIS-": PRINT "APPEARS. EACH STEP YOU TAKE COSTS YOU": PRINT "ONE POINT.": PRINT 
  76. 760  PRINT "TO RECROSS THE PATH YOU LEAVE, ONE OR": PRINT "MORE BRIDGES, EACH COSTING YOU": PRINT "POINTS, WILL BE PROVIDED.": PRINT 
  77. 770  PRINT "CUPS WILL ONLY BE PLACED ON VALID": PRINT "FIELDS, I.E. UNTRODDEN FIELDS OR": PRINT "BRIDGES.": PRINT 
  78. 780  PRINT "THERE ARE 20 CUPS IN ALL. A HIGH SCORE": PRINT "IS 1600 OR HIGHER.": PRINT 
  79. 790  PRINT "TIP: GO THE LONG WAY AROUND TO AVOID": PRINT "MAKING PATHS THAT CUT THE BOARD IN HALF.": PRINT 
  80. 800  VTAB 22: HTAB 1: PRINT "PRESS <RETURN> TO BEGIN ";: GET A$: PRINT A$: HOME 
  81. 810  FOR I = 770 TO 790: READ A: POKE I,A: NEXT I: DATA  173,48,192,136,208,5,206,1,3,240,9,202,208,245,174,0,3,76,2,3,96
  82. 820  POKE  -16297,0: POKE  -16301,0: POKE  -16304,0
  83. 830  VTAB 21: FOR I = 1 TO 40: PRINT "-";: NEXT : PRINT "SCORE = "; SPC( 2)SC;: HTAB 26: PRINT "BRIDGE COSTS  1";: FOR I = 1 TO 40: PRINT "-";: NEXT : HTAB 7: PRINT "PRESS <ESCAPE> TO END GAME";: GOTO 110
  84. 840  VTAB 22: HTAB 9: PRINT  RIGHT$("      " + STR$(SC),5): VTAB 22: HTAB 39: PRINT  RIGHT$(" " + STR$(BS),2): RETURN 
  85. 850  HOME : PRINT "CANNOT FIND BRIDGES.SHAPES": VTAB 23: END 
  86. 860  IF BS = 10  THEN  RETURN 
  87. 870 BS = BS +2: IF BS = 11  THEN BS = 10
  88. 880  RETURN 
  89. 890  VTAB 24: HTAB 1: CALL  -868: PRINT "ARE YOU SURE (Y/N):";: POKE  -16368,0: GET A$: IF A$ = "Y"  OR A$ = "y"  THEN  TEXT : HOME : VTAB 23: END 
  90. 900  HTAB 1: VTAB 24: PRINT "      PRESS <ESCAPE> TO END GAME";: RETURN