所以我要通過程序設計方法第2版的第一章。我相信我取得了不錯的進展。但是有一個「建議」在網格中添加另一個圖形。每次嘗試我都會遇到錯誤。在這一點上,我卡住了。以下是代碼和錯誤。爲什麼我不能在函數體中進行兩個make函數調用?
注:火箭圖像是在第1章我只是複製和粘貼文本到IDE中。
注意:「建議」是:如何更改程序以使火箭落在比底部高10個像素的平坦岩牀上?不要忘記改變風景。
這裏有一個工作的代碼。
(define BOARDWIDTH 200)
(define BOARDHEIGHT 200)
(define STARTPOSITION 50)
(define BOARDBKGR "blue")
(define GAMEBOARD (empty-scene BOARDWIDTH BOARDHEIGHT BOARDBKGR))
(define ROCKET .)
(define UFO (overlay (circle 10 "solid" "red")
(rectangle 40 4 "solid" "green")))
(define FLATBED (rectangle 60 10 "outline" "black"))
(define (SPACESHIP option)
(cond
[(= option 1) ROCKET]
[(= option 2) UFO]))
(define SHOWNSHIP (SPACESHIP 1))
(define V 20) ;Velocity
(define A 1) ;Acceleration
(define (distance t) ;t = Time
(- (* V t) (* 1/2 A (sqr t))))
(define SPACESHIP-BOTTOM (- BOARDHEIGHT (/ (image-height SHOWNSHIP) 2)))
(define (render-shownship x y)
(place-image SHOWNSHIP x y GAMEBOARD))
(define (create-rocket-scene.v7 t)
(cond
[(<= (distance t) SPACESHIP-BOTTOM)
(render-shownship STARTPOSITION (distance t))]
[(> (distance t) SPACESHIP-BOTTOM)
(render-shownship STARTPOSITION SPACESHIP-BOTTOM)]))
下面是不起作用的代碼:
(define BOARDWIDTH 200)
(define BOARDHEIGHT 200)
(define STARTPOSITION 50)
(define BOARDBKGR "blue")
(define GAMEBOARD (empty-scene BOARDWIDTH BOARDHEIGHT BOARDBKGR))
(define ROCKET .)
(define UFO (overlay (circle 10 "solid" "red")
(rectangle 40 4 "solid" "green")))
(define FLATBED (rectangle 60 10 "outline" "black"))
(define (SPACESHIP option)
(cond
[(= option 1) ROCKET]
[(= option 2) UFO]))
(define SHOWNSHIP (SPACESHIP 1))
(define V 20) ;Velocity
(define A 1) ;Acceleration
(define (distance t) ;t = Time
(- (* V t) (* 1/2 A (sqr t))))
(define SPACESHIP-BOTTOM (- BOARDHEIGHT (/ (image-height SHOWNSHIP) 2)))
(define (render-shownship x y)
(place-image SHOWNSHIP x y GAMEBOARD)
(place-image FLATBED STARTPOSITION 195 GAMEBOARD)) ;offender
(define (create-rocket-scene.v7 t)
(cond
[(<= (distance t) SPACESHIP-BOTTOM)
(render-shownship STARTPOSITION (distance t))]
[(> (distance t) SPACESHIP-BOTTOM)
(render-shownship STARTPOSITION SPACESHIP-BOTTOM)]))
而我得到的錯誤是:
定義:預期的函數體只有一個表情,卻發現 1額外部分
真棒! Nadeem提示你做了訣竅。我的回答是:(定義SPACESHIP-BOTTOM( - BOARDHEIGHT (/(圖像高度SHOWNSHIP)2) (/(圖像高度平板式)2))) (定義(渲染shownship XY) (地方 - 像平板中StartPosition 195 (地方形象SHOWNSHIP XY遊戲鍵盤))) – dotnetN00b 2012-01-09 02:33:14
請隱藏解決這個。這是一個家庭作業問題,如果解決方案就在那裏,問題的關鍵就會受到破壞。 – dyoo 2012-01-09 03:13:27
我不認爲這是。我所做的甚至不是書中的練習。你看過鏈接嗎?此外,這是自學/學習。我沒有上課。但是如果主持人想把我的答案放在擾流標籤中。隨意。 – dotnetN00b 2012-01-09 03:37:17