DrRacket 教程帮助在使用动画时使用多个图像
DrRacket tutorial help using multiple images in using animate
编程新手,但我正在学习 Racket 的教程,我正在尝试让火箭降落在着陆基地上。让火箭工作,但我想添加更多对象,如着陆基地。这是我拥有的:
; constants
(define width 100)
(define height 100)
(define background "sky blue")
(define mtscn (empty-scene width height background))
(define rocket.)
(define rocket-center-to-bottom
(- height (/ (image-height rocket) 2)))
(define base.)
(define base-center-to-bottom
(- height (/ (image-height rocket) 2)))
; functions
(define (create-rocket-scene.v6 h)
(cond
[(<= h rocket-center-to-bottom)
(place-image rocket 50 h mtscn)]
[(> h rocket-center-to-bottom)
(place-image rocket 50 rocket-center-to-bottom mtscn)]
[(<= h base-center-to-bottom)
(place-image base 50 h mtscn)]
[(> h base-center-to-bottom)
(place-image base 50 base-center-to-bottom mtscn)]))
(animate create-rocket-scene.v6)
基本上复制并粘贴了火箭代码,然后将火箭重命名为基地,然后制作了基地形象。它说它在工作,但基地没有出现。我希望基本图像保持在底部,而火箭从顶部到达底部所在的底部。感谢您的帮助
这是问题所在:
(cond
[(<= h rocket-center-to-bottom) (place-image rocket 50 h mtscn)]
[(> h rocket-center-to-bottom) (place-image rocket 50 rocket-center-to-bottom mtscn)]
[(<= h base-center-to-bottom) (place-image base 50 h mtscn)]
[(> h base-center-to-bottom) (place-image base 50 base-center-to-bottom mtscn)])
A cond
-表达式找到第一个为真的 "question",
并使用它附带的 "answer"。
如果(<= h rocket-center-to-bottom)
为真,则使用第一个子句,并且
(place-image rocket 50 h mtscn)
被使用。这意味着永远不会达到您使用 base
的第三个子句。
相反,您需要将山景和基地都绘制到同一张图片上:
(place-image base 50 h
(place-image rocket 50 h mtscn))
这会将火箭放在山场景的顶部,然后是基地。
也就是说,你只需要cond
中的两个子句:
(cond
[(<= h rocket-center-to-bottom) (place-image base 50 h
(place-image rocket 50 h mtscn))]
[(> h rocket-center-to-bottom) ...draw-both-here...])
编程新手,但我正在学习 Racket 的教程,我正在尝试让火箭降落在着陆基地上。让火箭工作,但我想添加更多对象,如着陆基地。这是我拥有的:
; constants
(define width 100)
(define height 100)
(define background "sky blue")
(define mtscn (empty-scene width height background))
(define rocket.)
(define rocket-center-to-bottom
(- height (/ (image-height rocket) 2)))
(define base.)
(define base-center-to-bottom
(- height (/ (image-height rocket) 2)))
; functions
(define (create-rocket-scene.v6 h)
(cond
[(<= h rocket-center-to-bottom)
(place-image rocket 50 h mtscn)]
[(> h rocket-center-to-bottom)
(place-image rocket 50 rocket-center-to-bottom mtscn)]
[(<= h base-center-to-bottom)
(place-image base 50 h mtscn)]
[(> h base-center-to-bottom)
(place-image base 50 base-center-to-bottom mtscn)]))
(animate create-rocket-scene.v6)
基本上复制并粘贴了火箭代码,然后将火箭重命名为基地,然后制作了基地形象。它说它在工作,但基地没有出现。我希望基本图像保持在底部,而火箭从顶部到达底部所在的底部。感谢您的帮助
这是问题所在:
(cond
[(<= h rocket-center-to-bottom) (place-image rocket 50 h mtscn)]
[(> h rocket-center-to-bottom) (place-image rocket 50 rocket-center-to-bottom mtscn)]
[(<= h base-center-to-bottom) (place-image base 50 h mtscn)]
[(> h base-center-to-bottom) (place-image base 50 base-center-to-bottom mtscn)])
A cond
-表达式找到第一个为真的 "question",
并使用它附带的 "answer"。
如果(<= h rocket-center-to-bottom)
为真,则使用第一个子句,并且
(place-image rocket 50 h mtscn)
被使用。这意味着永远不会达到您使用 base
的第三个子句。
相反,您需要将山景和基地都绘制到同一张图片上:
(place-image base 50 h
(place-image rocket 50 h mtscn))
这会将火箭放在山场景的顶部,然后是基地。
也就是说,你只需要cond
中的两个子句:
(cond
[(<= h rocket-center-to-bottom) (place-image base 50 h
(place-image rocket 50 h mtscn))]
[(> h rocket-center-to-bottom) ...draw-both-here...])