我试图创建一个将n个白云放在随机位置的蓝天上的功能。我尝试过使用场景图像,但我无法弄清楚如何在其上获得多个点。我看了地方图像,地点图像/对齐,但我理解地方图像是最简单的。该功能需要获取点数,黑色天空的宽度和高度。
答案 0 :(得分:4)
实际上,我相信你已经得到了你需要的答案 - 你已经有办法添加一个点。这意味着您可以采用黑色天空 - 图像 - 并添加白点来创建新图像。现在,您需要做的就是获取那个图像,并为其添加另一个白点(使用与添加第一个白点相同的方法),依此类推。
这就是“递归方式”的含义(如问题标题中所述)。
您的代码(感谢发布它!)缺少递归的基本情况。这就是为什么它永远不会退出。
这是一个固定的(希望)版本的代码(未经过测试,但希望能够得到正确的想法):
(define (draw-cloudy-sky num-clouds width height)
(cond ((zero? num-clouds) (rectangle width height "solid" "skyblue"))
(else (place-image (circle 10 "solid" "grey") (random width) (random height)
(draw-cloudy-sky (sub1 num-clouds) width height))))