home *** CD-ROM | disk | FTP | other *** search
/ AMIGA PD 1 / AMIGA-PD-1.iso / Programme_zum_Heft / Programmieren / Kurztests / ACE / Prgs / Gfx / maze.b < prev    next >
Text File  |  1994-10-03  |  4KB  |  142 lines

  1.  '..I snatched this (old) gem from the UseNet group alt.lang.basic (1994).
  2.  '..Run from a shell. Assumes font is topaz 8. Open a window and/or screen 
  3.  '..to improve run-time speed. 
  4.   
  5.  DEFINT A-Z
  6.  DIM Array1(30, 20), Array2(30, 20)
  7.  DIM Maze(24, 80)
  8.  RANDOMIZE TIMER
  9.  z = 1: c = 2: s = 1
  10.  x = INT(RND * 26 + 1)
  11.  Array2(x, 1) = 1: r = x
  12.  GOTO 2540
  13. 2440 IF r <> 26 THEN 2520
  14.  IF s <> 11 THEN 2490
  15.  r = 1: s = 1: GOTO 2530
  16. 2490 r = 1: s = s + 1: GOTO 2530
  17. 2520 r = r + 1
  18. 2530 IF Array2(r, s) = 0 THEN 2440
  19. 2540 IF r - 1 = 0 THEN 2830
  20.  IF Array2(r - 1, s) THEN 2830
  21.  IF s - 1 = 0 THEN 2680
  22.  IF Array2(r, s - 1) THEN 2680
  23.  IF r = 26 THEN 2610
  24.  IF Array2(r + 1, s) THEN 2610
  25.  x = INT(RND * 3 + 1): ON x GOTO 3140, 3210, 3280
  26. 2610 IF s <> 11 THEN 2650
  27.  IF z = 1 THEN 2670
  28.  Q = 1: GOTO 2660
  29. 2650 IF Array2(r, s + 1) THEN 2670
  30. 2660 x = INT(RND * 3 + 1): ON x GOTO 3140, 3210, 3370
  31. 2670 x = INT(RND * 2 + 1): ON x GOTO 3140, 3210
  32. 2680 IF r = 26 THEN 2770
  33.  IF Array2(r + 1, s) THEN 2770
  34.  IF s <> 11 THEN 2740
  35.  IF z = 1 THEN 2760
  36.  Q = 1: GOTO 2750
  37. 2740 IF Array2(r, s + 1) THEN 2760
  38. 2750 x = INT(RND * 3 + 1): ON x GOTO 3140, 3280, 3370
  39. 2760 x = INT(RND * 2 + 1): ON x GOTO 3140, 3280
  40. 2770 IF s <> 11 THEN 2810
  41.  IF z = 1 THEN 3140
  42.  Q = 1: GOTO 2820
  43. 2810 IF Array2(r, s + 1) THEN 3140
  44. 2820 x = INT(RND * 2 + 1): ON x GOTO 3140, 3370
  45. 2830 IF s - 1 = 0 THEN 3000
  46.  IF Array2(r, s - 1) THEN 3000
  47.  IF r = 26 THEN 2940
  48.  IF Array2(r + 1, s) THEN 2940
  49.  IF s <> 11 THEN 2910
  50.  IF z = 1 THEN 2930
  51.  Q = 1: GOTO 2920
  52. 2910 IF Array2(r, s + 1) THEN 2930
  53. 2920 x = INT(RND * 3 + 1): ON x GOTO 3210, 3280, 3370
  54. 2930 x = INT(RND * 2 + 1): ON x GOTO 3210, 3280
  55. 2940 IF s <> 11 THEN 2980
  56.  IF z = 1 THEN 3210
  57.  Q = 1: GOTO 2990
  58. 2980 IF Array2(r, s + 1) THEN 3210
  59. 2990 x = INT(RND * 2 + 1): ON x GOTO 3210, 3370
  60. 3000 IF r = 26 THEN 3080
  61.  IF Array2(r + 1, s) THEN 3080
  62.  IF s <> 11 THEN 3060
  63.  IF z = 1 THEN 3280
  64.  Q = 1: GOTO 3220
  65. 3060 IF Array2(r, s + 1) THEN 3280
  66.  x = INT(RND * 2 + 1): ON x GOTO 3280, 3370
  67. 3080 IF s <> 11 THEN 3120
  68.  IF z = 1 THEN 2440
  69.  Q = 1: GOTO 3370
  70. 3120 IF Array2(r, s + 1) THEN 2440
  71.  GOTO 3370
  72. 3140 Array2(r - 1, s) = c
  73.  c = c + 1: Array1(r - 1, s) = 2
  74.  r = r - 1: IF c > 286 THEN 3570
  75.  Q = 0: GOTO 2540
  76. 3210 Array2(r, s - 1) = c
  77. 3220 c = c + 1: Array1(r, s - 1) = 1
  78.  s = s - 1: IF c > 286 THEN 3570
  79.  Q = 0: GOTO 2540
  80. 3280 Array2(r + 1, s) = c
  81.  c = c + 1
  82.  IF Array1(r, s) = 0 THEN 3330
  83.  Array1(r, s) = 3: GOTO 3340
  84. 3330 Array1(r, s) = 2
  85. 3340 r = r + 1
  86.  IF c > 286 THEN 3570
  87.  GOTO 2830
  88. 3370 IF Q = 1 THEN 3470
  89.  Array2(r, s + 1) = c: c = c + 1
  90.  IF Array1(r, s) = 0 THEN 3430
  91.  Array1(r, s) = 3: GOTO 3440
  92. 3430 Array1(r, s) = 1
  93. 3440 s = s + 1
  94.  IF c > 286 THEN 3570
  95.  GOTO 2540
  96. 3470 z = 1
  97.  IF Array1(r, s) = 0 THEN 3520
  98.  Array1(r, s) = 3: Q = 0: GOTO 2440
  99. 3520 Array1(r, s) = 1
  100.  Q = 0: r = 1: s = 1: GOTO 2530
  101. 3570
  102.  FOR i = 1 TO 24
  103.    FOR j = 1 TO 80
  104.      Maze(i, j) = 46
  105.    NEXT
  106.  NEXT
  107.  FOR i = 1 TO 26
  108.    FOR j = 1 TO 11
  109.      IF Array1(i, j) = 0 OR Array1(i, j) = 1 THEN
  110.        Maze(j * 2, i * 3 - 1) = 46
  111.        Maze(j * 2, i * 3) = 46
  112.        Maze(j * 2, i * 3 + 1) = 127
  113.      END IF
  114.      IF Array1(i, j) = 2 OR Array1(i, j) = 3 THEN
  115.        Maze(j * 2, i * 3 - 1) = 46
  116.        Maze(j * 2, i * 3) = 46
  117.        Maze(j * 2, i * 3 + 1) = 46
  118.      END IF
  119.      IF Array1(i, j) = 0 OR Array1(i, j) = 2 THEN
  120.        Maze(j * 2 + 1, i * 3 - 2) = 127
  121.        Maze(j * 2 + 1, i * 3 - 1) = 127
  122.        Maze(j * 2 + 1, i * 3) = 127
  123.      END IF
  124.      IF Array1(i, j) = 1 OR Array1(i, j) = 3 THEN
  125.        Maze(j * 2 + 1, i * 3 - 2) = 127
  126.        Maze(j * 2 + 1, i * 3 - 1) = 46
  127.        Maze(j * 2 + 1, i * 3) = 46
  128.      END IF
  129.    NEXT
  130.  NEXT
  131.  FOR i = 1 TO 79
  132.  Maze(1, i) = 127: Maze(23, i) = 127
  133.  NEXT
  134.  FOR i = 1 TO 23
  135.  Maze(i, 1) = 127: Maze(i, 79) = 127
  136.  NEXT
  137.  COLOR 14, 1: CLS
  138.  FOR i = 1 TO 23: FOR j = 1 TO 79
  139.  LOCATE i, j: PRINT CHR$(Maze(i, j));
  140.  NEXT: NEXT: PRINT: PRINT
  141.  END
  142.