home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / SIMTEL / CPMUG / CPMUG004.ARK / MAZE.FOR < prev    next >
Text File  |  1984-04-29  |  4KB  |  207 lines

  1.     INTEGER W(25,53),V(25,53),H,B,S,R,X,Z,Q,H1,C
  2.     REAL LINE(26)
  3.     DATA EDD, EBB, BBI, BBB /'!--', '!  ', '  I', '   ' /
  4.     WRITE(1,99)
  5. 99    FORMAT(///,' RANDOM NUMBER (5 DIGITS) ')
  6.     READ(1,98) IX
  7. 98    FORMAT(I5)
  8. 120    WRITE(1,100)
  9. 100    FORMAT(' SIZE ')
  10.     READ(1,101) H
  11. 101    FORMAT(I2)
  12.     B = H
  13.     IF (H .NE. 1) GO TO 150
  14.     IF( B .NE. 1 ) GO TO 150
  15.     WRITE(1,102)
  16. 102    FORMAT('GIVE ME SOMETHING I CAN WORK WITH!!')
  17.     GO TO 120
  18. 150    WRITE(1,103)
  19. 103    FORMAT(//)
  20.     DO 10 I=1, 25
  21.         DO 10 J=1, 53
  22.          W(I,J)=0
  23.         V(I,J)=0
  24. 10    CONTINUE
  25.     Q = 0
  26.     Z = 0
  27.     H1 = H + 1
  28.     X = IFIX (RND(IX) * H + 1)
  29.     DO 180 I=1, H
  30.         IF (I .EQ. X) GO TO 173
  31.         LINE(I) = EDD
  32.         GO TO 180
  33. 173        LINE(I) = EBB
  34. 180    CONTINUE
  35.     LINE(H1) = EBB
  36.     WRITE (1,104) (LINE(I), I = 1, H1)
  37. 104    FORMAT('1',2X,26A3)
  38.     C = 1
  39.     W(X, 1) = C
  40.     C = C + 1
  41.     R = X
  42.     S = 1
  43.     GO TO 260
  44. 210    IF (R .NE. H) GO TO 240
  45.     IF (S .NE. B) GO TO  230
  46.     R=1
  47.     S=1
  48.     GO TO 250
  49. 230    R=1
  50.     S=S+1
  51.     GOTO 250
  52. 240    R=R+1
  53. 250    IF (W(R,S) .EQ. 0 ) GO TO 210
  54. 260    IF (R-1 .EQ. 0 ) GO TO  530
  55.     IF (W(R-1,S) .NE. 0) GO TO 530
  56.     IF (S-1 .EQ. 0) GO TO 390
  57.     IF (W(R,S-1) .NE. 0) GO TO 390
  58.     IF (R .EQ. H) GO TO 330
  59.     IF (W(R+1,S) .NE. 0) GO TO 330
  60.     X=IFIX(RND(IX)*3+1)
  61.     GO TO (790, 820, 860), X
  62. 330    IF (S .NE. B) GO TO 340
  63.     IF (Z .EQ. 1) GO TO 370
  64.     Q=1
  65.     GOTO 350
  66. 340    IF (W(R,S+1) .NE. 0) GO TO 370
  67. 350    X=IFIX(RND(IX)*3+1)
  68.     IF (X .EQ. 1) GO TO 790
  69.     IF (X .EQ. 2) GO TO 820
  70.     IF (X .EQ. 3) GO TO 910
  71. 370    X=IFIX(RND(IX)*2+1)
  72.     IF (X .EQ. 1) GO TO 790
  73.     IF (X .EQ. 2) GO TO 820
  74. 390    IF (R .EQ. H) GO TO 470
  75.     IF (W(R+1,S) .NE. 0) GO TO 470
  76.     IF (S .NE. B) GO TO 420
  77.     IF (Z .EQ. 1) GO TO 450
  78.     Q = 1
  79.     GOTO 430
  80. 420    IF (W(R,S+1) .NE. 0) GO TO 450
  81. 430    X = IFIX(RND(IX)*3+1)
  82.     IF (X .EQ. 1) GO TO 790
  83.     IF (X .EQ. 2) GO TO 860
  84.     IF (X .EQ. 3) GO TO 910
  85. 450    X=IFIX(RND(IX)*2+1)
  86.     IF (X .EQ. 1) GO TO 790
  87.     IF (X .EQ. 2) GO TO 860
  88. 470    IF (S .NE. B) GO TO 490
  89.     IF (Z .EQ. 1) GO TO 520
  90.     Q = 1
  91.     GOTO 500
  92. 490    IF (W(R,S+1) .NE. 0) GO TO 520
  93. 500    X=IFIX(RND(IX)*2+1)
  94.     IF (X .EQ. 1) GO TO 790
  95.     IF (X .EQ. 2) GO TO 910
  96. 520    GOTO 790
  97. 530    IF (S-1 .EQ. 0) GO TO 670
  98.     IF (W(R,S-1) .NE. 0) GO TO 670
  99.     IF (R .EQ. H) GO TO 610
  100.     IF (W(R+1,S) .NE. 0) GO TO 610
  101.     IF (S .NE. B) GO TO 560
  102.     IF (Z .EQ. 1) GO TO 590
  103.     Q=1
  104.     GOTO 570
  105. 560    IF (W(R,S+1) .NE. 0) GO TO 590
  106. 570    X=IFIX(RND(IX)*3+1)
  107.     IF (X .EQ. 1) GO TO 820
  108.     IF (X .EQ. 2) GO TO 860
  109.     IF (X .EQ. 3) GO TO 910
  110. 590    X=IFIX(RND(IX)*2+1)
  111.     IF (X .EQ. 1) GO TO 820
  112.     IF (X .EQ. 2) GO TO 860
  113. 610    IF (S .NE. B) GO TO 630
  114.     IF (Z .EQ. 1) GO TO 660
  115.     Q=1
  116.     GOTO 640
  117. 630    IF (W(R,S+1) .NE. 0) GO TO 660
  118. 640    X=IFIX(RND(IX)*2+1)
  119.     IF (X .EQ. 1) GO TO 820
  120.     IF (X .EQ. 2) GO TO 910
  121. 660    GOTO 820
  122. 670    IF (R .EQ. H) GO TO 740
  123.     IF (W(R+1,S) .NE. 0) GO TO 740
  124.     IF (S .NE. B) GO TO 700
  125.     IF (Z .EQ. 1) GO TO 730
  126.     Q=1
  127.     GOTO 830
  128. 700    IF (W(R,S+1) .NE. 0) GO TO 730
  129.     X=IFIX(RND(IX)*2+1)
  130.     IF (X .EQ. 1) GO TO 860
  131.     IF (X .EQ. 2) GO TO 910
  132. 730    GOTO 860
  133. 740    IF (S .NE. B) GO TO 760
  134.     IF (Z .EQ. 1) GO TO 780
  135.     Q=1
  136.     GOTO 770
  137. 760    IF (W(R,S+1) .NE. 0) GO TO 780
  138. 770    GOTO 910
  139. 780    GOTO 1000
  140. 790    W(R-1,S)=C
  141.     C=C+1
  142.     V(R-1,S)=2
  143.     R=R-1
  144.     IF (C .EQ. H*B+1) GO TO 1010
  145.     Q=0
  146.     GOTO 260
  147. 820    W(R,S-1)=C
  148. 830    C=C+1
  149.     V(R,S-1)=1
  150.     S=S-1
  151.     IF (C .EQ. H*B+1) GO TO 1010
  152.     Q=0
  153.     GOTO 260
  154. 860    W(R+1,S)=C
  155.     C=C+1
  156.     IF (V(R,S) .EQ. 0) GO TO 880
  157.     V(R,S)=3
  158.     GOTO 890
  159. 880    V(R,S)=2
  160. 890    R=R+1
  161.     IF (C .EQ. H*B+1) GO TO 1010
  162.     GOTO 530
  163. 910    IF (Q .EQ. 1) GO TO 960
  164.     W(R,S+1)=C
  165.     C=C+1
  166.     IF (V(R,S) .EQ. 0) GO TO 940
  167.     V(R,S)=3
  168.     GOTO 950
  169. 940    V(R,S)=1
  170. 950    S=S+1
  171.     IF (C .EQ. H*B+1) GO TO 1010
  172.     GOTO 260
  173. 960    Z=1
  174.     IF (V(R,S) .EQ. 0) GO TO 980
  175.     V(R,S)=3
  176.     Q=0
  177.     GOTO 1000
  178. 980    V(R,S)=1
  179.     Q=0
  180.     R=1
  181.     S=1
  182.     GOTO 250
  183. 1000    GOTO 210
  184. 1010    DO 1073 J=1, B
  185.         LINE(1) = BBI
  186.         DO 1040 I=1, H
  187.             IF (V(I,J) .LT. 2) GO TO 1030
  188.             LINE(I+1) = BBB
  189.             GOTO 1040
  190. 1030            LINE(I+1) = BBI
  191. 1040        CONTINUE
  192.         WRITE(1, 106) (LINE(I), I=1, H1)
  193. 106        FORMAT (1X,26A3)
  194.         DO 1070 I=1, H
  195.             IF (V(I,J) .EQ. 0) GO TO 1060
  196.             IF (V(I,J) .EQ. 2) GO TO 1060
  197.             LINE(I) = EBB
  198.             GOTO 1070
  199. 1060            LINE(I) = EDD
  200. 1070        CONTINUE
  201.         LINE(H1) = EBB
  202.         WRITE (1,107) (LINE(I), I = 1, H1)
  203. 107        FORMAT (3X, 26A3)
  204. 1073    CONTINUE
  205.     STOP
  206.     END
  207.