2013-01-21 35 views
1

所以我想製作一個程序,使用big-bang生成圖像「HI」。我把它放在畫布的中央。我希望文本大小從1開始,當大小達到80時停止增長。我添加了on-tick,但它仍然不會從1開始並增長。關於我做錯什麼的想法?使用big-bang和on-tick

編輯 -

(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?)) 

回答

1

有幾件事情。最重要的是在draw-world 你畫一個大小爲11的文字。如果你畫一個大小爲world的文字,那麼你的文字將與當前世界的大小相同。

(text word world "olive") 

修復該錯誤後,您將立即發現下一件要解決的問題。

更新:

(define (stop? a-world) 
    (<= a-world 80)) 
+0

我得到它的工作。我現在需要做的就是當它達到80的文字大小時停止增長。我猜我需要改變大爆炸的最後部分。有任何想法嗎? –

+0

有線索的人? –

+2

你有沒有機會進入Fundies 1? @JerryLynch –

0

你可以這樣來做:

(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) 
相關問題