home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib41b.dsk / SURROUND.bas < prev    next >
BASIC Source File  |  2023-02-26  |  4KB  |  75 lines

  1. 1  REM  ********************************
  2. 2  REM  * SURROUND                     *
  3. 3  REM  * BY: DAVID LEWIS              *
  4. 4  REM  * COPYRIGHT (C) 1991           *
  5. 5  REM  * MINDCRAFT PUBL. CORP.        *
  6. 6  REM  * LINCOLD, MA 01773            *
  7. 7  REM  ********************************
  8. 10  PRINT  CHR$(12) CHR$(21): REM  TURN OFF 80 COLUMN DISPLAY
  9. 20  GOSUB 560: REM  REMOVE THIS LINE TO REMOVE SOUND
  10. 30  GOSUB 300: GOSUB 410: GOSUB 310: REM  INITIALIZATION, EXPLANATION, AND SETTING OF LEVELS.
  11. 40  REM  PLAYER 1
  12. 50 P =  PEEK( -16384): IF P <127  THEN P = P1: POKE  -16368,0
  13. 60 P1 = P: REM  RESTORE PREVIOUS MOVE SO THAT MOTION IS CONTINUOUS
  14. 70  IF P = 128 +81  THEN H1 = 0:V1 =  -1
  15. 80  IF P = 128 +65  THEN H1 = 0:V1 = 1
  16. 90  IF P = 128 +90  THEN H1 =  -1:V1 = 0
  17. 100  IF P = 128 +88  THEN H1 = 1:V1 = 0
  18. 110  FOR G = 0 TO DEAY: NEXT 
  19. 120  REM  THE COMPARISONS IN LINES 50 TO 90 AND 140 TO 190 ARE IN THE ORDER UP,DOWN,LEFT,RIGHT
  20. 130  REM  PLAYER 2
  21. 140 P =  PEEK( -16384): IF P <127  THEN P = P2: POKE  -16368,0
  22. 150 P2 = P: REM  RESTORE PREVIOUS MOVE SO THAT MOTION IS CONTINUOUS
  23. 160  IF P = 128 +79  THEN H2 = 0:V2 =  -1
  24. 170  IF P = 128 +76  THEN H2 = 0:V2 = 1
  25. 180  IF P = 128 +60  THEN H2 =  -1:V2 = 0
  26. 190  IF P = 128 +62  THEN H2 = 1:V2 = 0
  27. 200  FOR G = 0 TO DEAY: NEXT 
  28. 210 X2 = X2 +H2:Y2 = Y2 +V2:X1 = X1 +H1:Y1 = Y1 +V1: REM  FIND NEW POSITIONS
  29. 220 M = X1:N = Y1: VTAB 21: REM  POSITION FOR EXPLOSION
  30. 230  IF ( SCRN( X2,Y2)  AND  SCRN( X1,Y1))  OR (X2 = X1  AND Y2 = Y1)  THEN  PRINT "BOTH PLAYERS LOSE.": GOSUB 280: GOTO 600
  31. 240  IF  SCRN( X1,Y1)  THEN  PRINT "RIGHT PLAYER WINS."; CHR$(7): GOSUB 280: GOTO 600
  32. 250 M = X2:N = Y2
  33. 260  IF  SCRN( X2,Y2)  THEN  PRINT "LEFT PLAYER WINS." CHR$(7): GOSUB 280: GOTO 600
  34. 270  POKE 7,5: POKE 6,Y1 *254/191: CALL 768: PLOT X1,Y1: PLOT 7,5: POKE 6,Y2 *254/191: CALL 768: PLOT X2,Y2: GOTO 50: REM  IF NO LOSS, MAKE SOUND AND CONTINUE
  35. 280  FOR G = 1 TO 100: COLOR=  RND(1) *16: PLOT M,N: NEXT : RETURN : REM  THIS LINE MAKES EXPLOSION
  36. 290  REM  INITIALIZATION
  37. 300 X1 = 10:Y1 =  INT( RND(1) *13 +13):X2 = 30:Y2 =  INT( RND(1) *13 +13):P1 = 128 + ASC("X"):P2 = 128 + ASC("<"): RETURN : REM  SET INITIAL POSITIONS AND DIRECTION
  38. 310  GR : COLOR= 13
  39. 320  FOR X = 0 TO 39: PLOT X,0: PLOT X,39: PLOT 39,X: PLOT 0,X: NEXT 
  40. 330  COLOR= 15
  41. 340  ON F GOTO 350,360,370,380: REM  LEVELS
  42. 350  RETURN 
  43. 360  FOR G = 13 TO 26: PLOT 19,G: NEXT : RETURN 
  44. 370  FOR G = 13 TO 26: PLOT G,19: NEXT : RETURN 
  45. 380  FOR G = 1 TO 10: PLOT  RND(1) *40, RND(1) *40: NEXT : RETURN 
  46. 390  FOR G = A TO B  STEP D: HTAB C: VTAB G: PRINT " ";: FOR F = 1 TO 20: NEXT : NEXT : RETURN : REM  VERTICAL LINE
  47. 400  FOR G = A TO B  STEP D: VTAB C: HTAB G: PRINT " ";: FOR F = 1 TO 20: NEXT : NEXT : RETURN : REM  HORIZONTAL LINE  
  48. 410  TEXT : HOME : VTAB 5: HTAB 11: PRINT "S U R R O U N D !!"
  49. 420  FOR G = 1 TO 100: NEXT : INVERSE : REM  LINES 420 TO 440 DRAW BORDER AROUND WORD SURROUND
  50. 430 D = 1:A = 3:B = 7:C = 9: GOSUB 390:A = 9:B = 30:C = 7: GOSUB 400
  51. 440 D =  -1:A = 7:B = 3:C = 30: GOSUB 390:A = 30:B = 9:C = 3: GOSUB 400: NORMAL 
  52. 450  VTAB 10: HTAB 12: PRINT "BY: DAVID LEWIS": HTAB 5: PRINT "(C) 1991 MINDCRAFT PUBL. CORP."
  53. 460  PRINT 
  54. 470  PRINT : PRINT "TRY TO BLOCK YOUR OPPONENT'S LINE!"
  55. 480  PRINT : PRINT "LEFT PLAYER: USE THE KEYS QAZX TO MOVE  UP, DOWN, LEFT AND RIGHT."
  56. 490  PRINT 
  57. 500  PRINT "RIGHT PLAYER: USE THE KEYS OL<> TO MOVE UP, DOWN, LEFT AND RIGHT.": POKE  -16368,0
  58. 510  GOSUB 630
  59. 520  INPUT "LEVEL OF  BOARD POSITION (1 TO 4): ";F$:F =  VAL(F$):F = F -(F >4) *(F -4) +(F <1) *(1 -F): REM  MAKE F IN RANGE 1 TO 4
  60. 530  PRINT : INPUT "WHAT IS YOUR DELAY VALUE? ";F$:DEAY =  VAL(F$)
  61. 540  HOME : RETURN 
  62. 550  REM  SOUND ROUTINE
  63. 560  POKE 768,173: POKE 769,48: POKE 770,192: POKE 771,136: POKE 772,208: POKE 773,4: POKE 774,198: POKE 775,7: POKE 776,240: POKE 777,8
  64. 570  POKE 778,202: POKE 779,208: POKE 780,246: POKE 781,166: POKE 782,6: POKE 783,76: POKE 784,0: POKE 785,3: POKE 786,96
  65. 580  RETURN 
  66. 590  REM  ANOTHER GAME
  67. 600  VTAB 23: CALL  -958: PRINT "ANOTHER GAME? Y/N";: GET YN$: IF YN$ < >"Y"  AND YN$ < >"N"  AND YN$ < >"y"  AND YN$ < >"n"  THEN  PRINT : GOTO 600
  68. 610  IF YN$ = "Y"  OR YN$ = "y"  THEN 30
  69. 620  TEXT : HOME : END 
  70. 630  VTAB 22: CALL  -958
  71. 640  PRINT "<P>LAY GAME OR <Q>UIT?"
  72. 650 X =  PEEK( -16384): IF X <127  THEN 650
  73. 660  IF X = 208  THEN  POKE  -16368,0: VTAB 22: CALL  -958: RETURN 
  74. 670  IF X = 209  THEN  POKE  -16368,0: TEXT : HOME : END 
  75. 680  GOTO 650