Advertisement
zbeucler

grid-make.ss

Feb 21st, 2021
233
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.76 KB | None | 0 0
  1. (define goal-node -1)
  2. (define free 0)
  3. (define frontier 1)
  4. (define obstacle 100000)
  5. (define start '())
  6. (define goal '())
  7. (define robot '())
  8.  
  9. (define make-grid
  10. (lambda (num)
  11. (make-grid2 0 num)))
  12.  
  13. (define make-grid2
  14. (lambda (a amax)
  15. (if (= a amax)
  16. '()
  17. ;else
  18. (cons (make-row 0 amax) (make-grid2 (+ a 1) amax)))))
  19.  
  20. (define make-row
  21. (lambda (a amax)
  22. (cond
  23. ((= a amax)
  24. '())
  25. ((< (random 100) obstacle-density)
  26. (cons obstacle (make-row (+ a 1) amax)))
  27. (else
  28. (cons free (make-row (+ a 1) amax))))))
  29.  
  30. (define convert-grid
  31. (lambda (grid)
  32. (list->vector (convert-grid2 grid))))
  33.  
  34. (define convert-grid2
  35. (lambda (grid)
  36. (if (null? grid)
  37. '()
  38. ;else
  39. (cons (list->vector (car grid)) (convert-grid2 (cdr grid))))))
  40.  
  41. (define get-node
  42. (lambda (grid x y)
  43. (vector-ref (vector-ref grid y) x)))
  44.  
  45. (define set-node!
  46. (lambda (grid x y value)
  47. (vector-set! (vector-ref grid y) x value)))
  48.  
  49. (define set-goal
  50. (lambda (grid)
  51. (let ((x (random num-col-row))
  52. (y (random num-col-row)))
  53. (cond
  54. ((= (get-node grid x y) free)
  55. (set-node! grid x y goal-node)
  56. (set! goal (list x y)))
  57. (else
  58. (set-goal grid))))))
  59.  
  60. (define set-start
  61. (lambda (grid)
  62. (let ((x (random num-col-row))
  63. (y (random num-col-row)))
  64. (cond
  65. ((= (get-node grid x y) free)
  66. (set! start (list x y))
  67. (set! robot (list x y)))
  68. (else
  69. (set-start grid))))))
  70.  
  71. (define robot-x
  72. (lambda ()
  73. (car robot)))
  74.  
  75. (define robot-y
  76. (lambda ()
  77. (cadr robot)))
  78.  
  79. (define pause
  80. (lambda (count)
  81. (if (<= count 0)
  82. 0
  83. ;else
  84. (pause (- count 1)))))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement