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 / MBUG / MBUG055.ARC / MAZE.BAS < prev    next >
BASIC Source File  |  1979-12-31  |  2KB  |  79 lines

  1. 100 REM  WRITTEN BY JACK HAUBER UPDATED 5-21-77  D. NIXON
  2. 110 WIDTH 80
  3. 120 DEFINT A-Z  
  4. 130 PRINT "THIS PROGRAM WILL PRINT OUT A DIFFERENT MAZE EVERY TIME IT"  
  5. 140 PRINT "IS RUN AND GUARANTEES ONLY ONE PATH THROUGH.  YOU CAN CHOOSE"
  6. 150 PRINT "THE DIMENSIONS OF THE MAZE. I.E. THE NUMBER OF SQUARES WIDE" 
  7. 160 PRINT "AND THE NUMBER OF SQUARES LONG." 
  8. 170 PRINT   
  9. 180 PRINT "WHAT ARE YOUR WIDTH AND LENGTH"; 
  10. 190 INPUT H,V   
  11. 200 DIM W(H,V),V(H,V)   
  12. 210 PRINT   
  13. 220 IF H>2 AND V>2 THEN 260 
  14. 230 PRINT "MEANINGLESS DIMENSIONS, TRY AGAIN."  
  15. 240 PRINT   
  16. 250 GOTO 1950  
  17. 260 IF H< 27 GOTO 290   
  18. 270 PRINT " THE WIDTH IS WIDER THEN 80 COLUMNS" 
  19. 280 GOTO 1950  
  20. 290 PRINT   
  21. 300 PRINT   
  22. 310 LET Q = 0   
  23. 320 LET Z = 0   
  24. 330 LET X = INT(RND(1)*H+1) 
  25. 340 FOR I = 1 TO H  
  26. 350  IF I = X THEN 380  
  27. 360  PRINT ":--";   
  28. 370  GOTO 390   
  29. 380  PRINT ":  ";   
  30. 390 NEXT I  
  31. 400 PRINT ":"   
  32. 410 LET C = 1   
  33. 420 LET W(X,1) = C  
  34. 430 LET C = C+1 
  35. 440 LET R = X   
  36. 450 LET S = 1   
  37. 460 GOTO 570
  38. 470 IF R <> H THEN 550  
  39. 480 IF S <> V THEN 520  
  40. 490 LET R = 1   
  41. 500 LET S = 1   
  42. 510 GOTO 560
  43. 520 LET R = 1   
  44. 530 LET S = S+1 
  45. 540 GOTO 560
  46. 550 LET R = R+1 
  47. 560 IF W(R,S) = 0 THEN 470  
  48. 570 IF R-1 = 0 THEN 930
  49. 580 IF W(R-1,S) <> 0 THEN 930  
  50. 590 IF S-1 = 0 THEN 740
  51. 600 IF W(R,S-1) <> 0 THEN 740  
  52. 610 IF R = H THEN 650   
  53. 620 IF W(R+1,S) <> 0 THEN 650   
  54. 630 LET X = INT(RND(1)*3+1) 
  55. 640 ON X GOTO 1320,1390,1460
  56. 650 IF S <> V THEN 690 
  57. 660 IF Z = 1 THEN 720 
  58. 670 LET Q = 1  
  59. 680 GOTO 700  
  60. 690 IF W(R,S+1) <> 0 THEN 720 
  61. 700 LET X = INT(RND(1)*3+1)
  62. 710 ON X GOTO 1320,1390,1560   
  63. 720 LET X = INT(RND(1)*2+1)
  64. 730 ON X GOTO 1320,1390
  65. 740 IF R = H THEN 850 
  66. 750 IF W(R+1,S) <> 0 THEN 850 
  67. 760 IF S<> V THEN 800 
  68. 770 IF Z = 1 THEN 830 
  69. 780 LET Q = 1  
  70. 790 GOTO 810  
  71. 800 IF W(R,S+1) <> 0 THEN 830 
  72. 810 LET X = INT(RND(1)*3+1)
  73. 820 ON X GOTO 1320,1460,1560   
  74. 830 LET X = INT(RND(1)*2+1)
  75. 840 ON X GOTO 1320,1460
  76. 850 IF S <> V THEN 890
  77. 860 IF Z = 1 THEN 920 
  78. 870 LET Q = 1  
  79. 880 GOT