PasteRack.org
Paste # 37778
2020-02-13 11:05:28

Fork as a new paste.

Paste viewed 102 times.


Embed:

random imperfect maze generator

  1. #lang racket
  2.  
  3. (require 2htdp/image )
  4.  
  5. (define Hs (rectangle 5 20 'solid 'black))
  6. (define Vs (rotate 90 Hs))
  7.  
  8. (define empty (rectangle 20 20 'solid 'white))
  9.  
  10.  
  11.  
  12. (define Ew (overlay/align "left" "top"  Hs empty))
  13. (define Ww (overlay/align "right" "top"  Hs empty))
  14. (define Sw (overlay/align "right" "bottom"  Vs empty))
  15. (define Nw (overlay/align "right" "top"  Vs empty))
  16.  
  17.  
  18. (define SEw (overlay/align "middle" "center" Ew Sw))
  19. (define SWw (overlay/align "middle" "center" Nw Ww))
  20. (define NEw (overlay/align "middle" "center" Nw Ew))
  21. (define NWw (overlay/align "middle" "center" Nw Ww))
  22.  
  23.  
  24. (define SENw (overlay/align "middle" "center" Sw Ew Nw))
  25. (define EMWw (overlay/align "middle" "center" Ew Nw Ww))
  26. (define NWSw (overlay/align "middle" "center" Nw Ww Sw))
  27. (define WSEw (overlay/align "middle" "center" Ww Sw Ew))
  28.  
  29.  
  30. (define Cr (circle 2 'outline 'black))
  31.  
  32. (define apw (list Ew Sw Ww Nw SEw SWw NEw NWw SENw EMWw NWSw WSEw ;Cr
  33.                   ))
  34. (define (pick-item l)
  35.   (list-ref l (random (length l))))
  36.  
  37. (define (pr) (pick-item apw))
  38.  
  39. (define (row) (beside (pr)(pr)(pr)(pr)(pr)(pr)(pr)(pr)(pr)))
  40. (define (tbl) (above (row)(row)(row)(row)(row)(row)(row)(row)))
  41.  
  42.  
  43. (define maze (above (beside (tbl)(tbl)(tbl))(beside (tbl)(tbl)(tbl))(beside (tbl)(tbl)(tbl))))
  44. (list maze)

=>

(list image)