1

所以我正在尝试制作一个使用大爆炸来增长图像“HI”的程序。我把它放在画布的中心。我希望文本大小从 1 开始并在大小达到 80 时停止增长。我添加了 on-tick 但它仍然不会从 1 开始并增长。关于我做错了什么的任何想法?

编辑-

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

    (define word "HELLO WORLD" )

    (define (draw-world world )
      (place-image (text word world  "olive")
                   240 210
                   (empty-scene 500 300)))


         (define (next t)
  (cond [(>= (draw-world t) 80) t]
        [else (+ t 1)]))

    (big-bang 1
              (on-tick add1)
              (to-draw draw-world)
              (stop-when zero?))
4

2 回答 2

2

你可以这样做:

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

(define WORD "HELLO WORLD" )

(define (main x)
  (big-bang x
          (on-tick next)        ; World -> World
          (to-draw draw-world)  ; World -> Image
          (stop-when stop?)))   ; World -> Boolean


; World -> World
; Gives the next world
(define (next world)
  (cond [(>= world 80) world]
        [else (+ world 1)]))

; World -> Image
; Draw the current world
(define (draw-world world )
  (place-image (text WORD world  "olive")
               240 210
               (empty-scene 500 300)))

; World -> Boolean
; Check if this is the last world
(define (stop? world)
  (= world 80))

(main 1)
于 2013-07-04T09:09:01.810 回答
1

有几件事。最重要的是在draw-world 哪里绘制大小为 11 的文本。如果改为绘制大小为 11 的文本,world那么您的文本将具有与当前世界相同的大小。

(text word world "olive")

修复该错误后,您将立即发现下一个要修复的内容。

更新:

(define (stop? a-world)
  (<= a-world 80))
于 2013-01-21T18:02:55.447 回答