spacepaste

  1.  
  2. ;define points->image
  3. (define (points->image a-size points foreground background)
  4. (local [(define (row->image y)
  5. (xs->image a-size (xs (row points y)) foreground background))]
  6. (apply above (map row->image (range 0 size 1)))))
  7. ;define variables
  8. (define kat (render (scale . 1/4)))
  9. (define (draw-all a-maze kat-point click-point)
  10. (align-overlay "left" "top"
  11. (above (rectangle 0 (* (height barrier) (Y kat-point)) "solid" "transparent")
  12. (beside (rectangle (* (width barrier) (X kat-point)) 0 "solid" "transparent")
  13. kat))
  14. (overlay (points->image size (path a-maze kat-point click-point) highlight invisible)
  15. (points->image size a-maze invisible barrier)
  16. (scale ground size))))
  17. ;in-grid?
  18. (define (in-grid? a-point)
  19. (if [(< (X a-point) 0) #false]
  20. [(< (Y a-point) 0) #false]
  21. [(> (- size (X a-point))0) #true]
  22. [(> (- size (Y a-point))0) #true]
  23. [(< (X a-point) size) #true]
  24. [(< (Y a-point) size) #true]
  25. [else #false]))
  26. ;check-expect
  27. (check-expect (in-grid? (point -1 0))
  28. (if [(< -1 0) #false]
  29. [(< 0 0) #false]
  30. [(> (- size -1)0) #true]
  31. [(> (- size 0)0) #true]
  32. [(< -1 size) #true]
  33. [(< 0 size) #true]
  34. [(< -1 0) #false]
  35. [(< 0 0) #false]
  36. [else #false]))
  37.