home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib02.dsk / FOUR-IN-A-ROW.bas < prev    next >
BASIC Source File  |  2023-02-26  |  5KB  |  125 lines

  1. 0  DIM N$(20),M$(20),A(7,6)
  2. 1  PRINT "";""
  3. 10  REM  *************************
  4. 20  REM  * FOUR-IN-A-ROW         *
  5. 30  REM  * BY J.A. ROGAN         *
  6. 40  REM  * COPYRIGHT (C) 1980    *
  7. 50  REM  * BY MICRO-SPARC, INC.  *
  8. 60  REM  * LINCOLN, MA. 01773    *
  9. 70  REM  *************************
  10. 80  REM  <<REQUIRES 16K APPLESOFT>>
  11. 90  HOME : HTAB 15: VTAB 12: INVERSE : FLASH : PRINT "FOUR-IN-A-ROW": NORMAL : HTAB 20: VTAB 20: PRINT "BY J.A.ROGAN": FOR D = 1 TO 1500: NEXT D
  12. 100  TEXT : HOME : CLEAR : HTAB 9: VTAB 12: PRINT "DO YOU WANT INSTRUCTIONS ?";: GET A$: PRINT A$
  13. 110  IF A$ < >"Y"  THEN 200
  14. 120  HOME : INVERSE : HTAB 16: PRINT "RULES": NORMAL : PRINT : PRINT : PRINT "THE RULES OF THE GAME ARE VERY SIMPLE."
  15. 122  PRINT : PRINT "THIS IS A TWO PLAYER GAME.": PRINT : PRINT "THE OBJECT OF THE GAME IS TO GET FOUR": PRINT "OF YOUR PIECES IN A ROW, EITHER UP AND": PRINT "DOWN, ACROSS OR DIAGONALLY."
  16. 124  PRINT : PRINT "THE FIRST PLAYER TO GET FOUR IN A ROW": PRINT "IS THE WINNER!"
  17. 126  PRINT : PRINT "DUE TO THE FORCE OF GRAVITY THE PIECES": PRINT "WILL FALL TO THE BOTTOM OF THE GAME": PRINT "BOARD OR ON TOP OF ANOTHER PIECE."
  18. 128  PRINT : PRINT : PRINT : PRINT "HIT ANY KEY TO BEGIN.";: GET A$: PRINT A$
  19. 129  HOME 
  20. 200  REM  DRAW GAME BOARD
  21. 201  GR : COLOR= 15: FOR X = 0 TO 39: HLIN 0,39 AT X: NEXT 
  22. 210  COLOR= 14:A = 0:D = 39:B = 39:C = 32: FOR X = 1 TO 2: HLIN A,B AT A: VLIN A,B AT B: HLIN B,A AT C: VLIN A,B AT A:A = A +1:B = B -1:C = C -1: HLIN 0,39 AT D:D = D -1: NEXT 
  23. 215  VLIN 0,32 AT 2: VLIN 0,32 AT 37
  24. 220 A = 7:B = 0:C = 32: FOR X = 1 TO 6: VLIN B,C AT A:A = A +5: NEXT 
  25. 230 A = 2:B = 37:C = 6: FOR X = 1 TO 5: HLIN A,B AT C:C = C +5: NEXT 
  26. 240  COLOR=  INT(14 * RND(1))
  27. 241  PLOT 4,33: VLIN 33,37 AT 5: HLIN 4,6 AT 37
  28. 242  COLOR=  INT(14 * RND(1)): HLIN 9,11 AT 33: PLOT 11,34: HLIN 9,11 AT 35: PLOT 9,36: HLIN 9,11 AT 37
  29. 243  COLOR=  INT(14 * RND(1)): HLIN 14,16 AT 33: HLIN 15,16 AT 35: HLIN 14,16 AT 37: PLOT 16,34: PLOT 16,36
  30. 244  COLOR=  INT(14 * RND(1)): VLIN 33,35 AT 19: VLIN 33,37 AT 21: HLIN 19,21 AT 35
  31. 245  COLOR=  INT(14 * RND(1)): HLIN 24,26 AT 33: HLIN 24,26 AT 35: HLIN 24,26 AT 37: PLOT 24,34: PLOT 26,36
  32. 246  COLOR=  INT(14 * RND(1)): HLIN 29,31 AT 33: HLIN 29,31 AT 35: HLIN 29,31 AT 37: VLIN 33,37 AT 29: PLOT 31,36
  33. 247  COLOR=  INT(14 * RND(1)): HLIN 34,36 AT 33: VLIN 33,37 AT 36
  34. 248  REM  BEGIN PLAY
  35. 250  HOME : PRINT "WHO IS PLAYER #1 ";: INPUT N$
  36. 255  PRINT 
  37. 260  PRINT "WHO IS PLAYER #2 ";: INPUT M$
  38. 270  FOR D = 1 TO 500: NEXT 
  39. 280  HOME : PRINT N$" YOUR COLOR IS RED.": PRINT : PRINT M$" YOUR COLOR IS BLACK."
  40. 290  FOR D = 1 TO 3000: NEXT D
  41. 300  HOME : PRINT "WHAT IS YOUR MOVE ";N$;" ?";: GET A$:A =  VAL(A$): PRINT A
  42. 310  IF A =  >1  AND A < = 7  THEN 500
  43. 320  HOME : PRINT "COLUMN 1 TO 7 PLEASE !": FOR D = 1 TO 500: NEXT D: GOTO 300
  44. 330  HOME : PRINT "WHAT IS YOUR MOVE ";M$;" ?";: GET A$:A =  VAL(A$): PRINT A
  45. 340  IF A =  >1  AND A < = 7  THEN 502
  46. 350  HOME : PRINT "COLUMN 1 TO 7 PLEASE !": FOR D = 1 TO 500: NEXT D: GOTO 330
  47. 490  HOME : PRINT "THAT COLUMN IS FULL!"
  48. 491  FOR D = 1 TO 500: NEXT D
  49. 492  GOTO 330
  50. 495  HOME : PRINT "THAT COLUMN IS FULL!"
  51. 496  FOR D = 1 TO 500: NEXT D
  52. 497  GOTO 300
  53. 500  COLOR= 1:J = 1: GOTO 510: REM  PLAYER #1
  54. 502  COLOR= 0:J = 0: GOTO 510: REM  PLAYER #2
  55. 504  REM  CHECK FOR NEXT PLAYER WHEN ROW IS FULL
  56. 505  IF J = 1  THEN 495
  57. 506  GOTO 490
  58. 510 X = (A *5) -2:Y = X +3:W = 2:Z = W:V = 1
  59. 514  REM  CHECK IF ROW IS FULL
  60. 515  IF  SCRN( X,W) < >15  THEN 505
  61. 520  FOR D = 1 TO 4:SOUND =  PEEK( -16336): HLIN X,Y AT W:W = W +1: NEXT D:W = W +1: IF  SCRN( X,W) < >15  THEN 580
  62. 530  COLOR= 15: FOR D = 1 TO 4: HLIN X,Y AT Z:Z = Z +1: NEXT D:Z = Z +1
  63. 540  COLOR= J:V = V +1: GOTO 515
  64. 567  IF J = 1  THEN 330
  65. 569  GOTO 300
  66. 580 A(V,A) = J +5
  67. 590  GOSUB 600
  68. 595  GOSUB 700
  69. 596  IF J = 1  THEN 330
  70. 597  GOTO 300
  71. 600  REM  CHECK FOR WIN
  72. 601  PRINT : PRINT : PRINT "I'M CHECKING FOR A WINNER !"
  73. 602 H = 1:U = 1
  74. 604  FOR N = 0 TO 5
  75. 606  FOR T = 0 TO 3
  76. 608 X = A(H,U) +A(H,U +1) +A(H,U +2) +A(H,U +3)
  77. 610  IF X = 20  OR X = 24  THEN 1000
  78. 612 U = U +1
  79. 614  NEXT T
  80. 616 H = H +1:L = 1:U = L:L = L +L
  81. 618  NEXT N
  82. 620 H = 1:U = 1
  83. 624  FOR N = 0 TO 6
  84. 626  FOR T = 0 TO 2
  85. 628 X = A(H,U) +A(H +1,U) +A(H +2,U) +A(H +3,U)
  86. 630  IF X = 20  OR X = 24  THEN 1000
  87. 632 H = H +1
  88. 634  NEXT 
  89. 636 H = 1:U = U +1
  90. 638  NEXT N
  91. 640 H = 4:U = 1
  92. 642  FOR N = 0 TO 2
  93. 644  FOR T = 0 TO 3
  94. 646 X = A(H,U) +A(H -1,U +1) +A(H -2,U +2) +A(H -3,U +3)
  95. 648  IF X = 20  OR X = 24  THEN 1000
  96. 650 U = U +1
  97. 652  NEXT T
  98. 654 U = 1:H = H +1
  99. 655  NEXT N
  100. 656 H = 4:U = 7
  101. 658  FOR N = 0 TO 2
  102. 660  FOR T = 0 TO 3
  103. 662 X = A(H,U) +A(H -1,U -1) +A(H -2,U -2) +A(H -3,U -3)
  104. 664  IF X = 20  OR X = 24  THEN 1000
  105. 666 U = U -1
  106. 668  NEXT T
  107. 670 H = H +1:U = 7
  108. 672  NEXT N
  109. 700  REM  CHECK FOR TIE GAME
  110. 705  FOR T = 1 TO 7
  111. 710  IF A(1,T) = 0  THEN 715
  112. 711  NEXT T
  113. 712  GOTO 720
  114. 715  RETURN 
  115. 720  HOME : PRINT "TIED GAME": GOTO 1020
  116. 900  HOME : PRINT "DO YOU WANT TO PLAY AGAIN ?";: GET A$: PRINT A$
  117. 910  IF A$ = "Y"  THEN 100
  118. 920  TEXT : HOME : HTAB 12: VTAB 12: PRINT "THANKS FOR PLAYING.": END 
  119. 1000  HOME : IF X = 24  THEN 1050
  120. 1010  PRINT M$" IS THE WINNER !!!!!!"
  121. 1020  PRINT : PRINT "DO YOU WANT TO PLAY AGAIN ?";: GET A$: PRINT A$
  122. 1030  IF A$ = "Y"  THEN 100
  123. 1040  GOTO 920
  124. 1050  PRINT N$" IS THE WINNER !!!!!!"
  125. 1060  GOTO 1020