我是使用Racket的新手,并且有一个看起来很简单的问题。 基本上,我需要使用Racket制作场景/图片。我的第一步是我要在同一张图片中有一个月亮,草和一个背景。
应该/我可以使用E-SCENE还是应该只使用叠加层?
我一直在努力弄清楚这一点。每当我这样做时,月亮和背景就会合而为一,而背景和草又会像另外一个一样出现。这是我到目前为止(不使用空场景)的内容:
(require 2htdp/image)
(require 2htdp/universe)
(define rectangle1 (rectangle 450 400 "solid" "midnight blue"))
(define circle1 (circle 50 "solid" "WhiteSmoke"))
(place-image circle1 (/ 450 6) (* 400 .15) rectangle1)
(define rectangle2 (rectangle 450 30 "solid" "forest green"))
(place-image rectangle2 (/ 450 2) 400 rectangle1)
(define background (overlay rectangle2 circle1 rectangle1))
答案 0 :(得分:0)
不要将place-image
视为一种效果;可以将其视为一个接受数据并返回新数据的函数,就像+
接受两个数字并返回一个数字一样。如果您假装+
只接受2个数字,那么要将3个数字与+
加在一起,则必须嵌套:
(+ 1 (+ 2 3))
place-image
函数仅合并2张图像,因此,以同样的方式嵌套上面的+
调用以合并3个数字,将3张图像与place-image
合并在一起,您必须< em>巢 place-image
呼叫:
(place-image image1 x1 y1
(place-image image2 x2 y2
image3))
对于您的代码,这意味着:
(place-image circle1 (/ 450 6) (* 400 .15)
(place-image rectangle2 (/ 450 2) 400
rectangle1))
将这三个图像结合在一起以产生:
类似地,将更多的东西组合在一起,以获得数字:
(+ 1 (+ 2 (+ 3 (+ 4 5))))
对于图片:
(place-image image1 x1 y1
(place-image image2 x2 y2
(place-image image3 x3 y3
(place-image image4 x4 y4
image5))))
注意:对于电话号码,您通常不必这样做。 (+ 1 2 3 4 5)
和(+ 1 (+ 2 ...))
一样好。