如何在 Racket 中制作变色的天空?

How to make a color changing sky in Racket?

我有一个变量可以控制(颜色 R、G、B)中蓝色的数量。现在我对如何在(颜色 R、G、B)中使用该变量感到困惑。另外,我对球拍完全陌生。我知道我可以将这些功能组合在一起,但我不知道如何:(这段代码的目的是在动画中制作一个变色场景。 这是我的代码:

(需要 2htdp/图像)

(定义(天色数) (余数 510))

(定义(天空颜色数) (abs(- 255(Skycolor num))))

(定义(天空颜色数) (颜色 0 0 (天空颜色数)))

(定义(天空数) (square 200 "solid" (color 0 0 (sky-color num)))))

不太清楚“变色”是什么意思,但您可以从以下代码中获得一些启发。另请参阅 this similar question, where I explain how animate 作品。

#lang racket

(require 2htdp/universe)
(require 2htdp/image)

(define speed 5)

(define (sky-color ticks)
  (color 0 (modulo (* speed (- 255 ticks)) 255) 255))

(define bg
  (empty-scene 125 125))

(define (make-sky ticks)
  (square 250 "solid" (sky-color ticks)))

(define (draw-image ticks)
  (place-image (make-sky ticks) 0 0 bg))

(animate draw-image)