だから私はHow To Designプログラム第2版の第1章を読むつもりです。私はかなり良い進歩を遂げたと信じています。しかし、グリッドに別のグラフィックを追加する "提案"があります。試してみるたびにエラーが出ます。この時点で、私は立ち往生しています。以下はコードとエラーです。関数本体で2つの関数呼び出しを行うことができないのはなぜですか?
注:ROCKETイメージは第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余分部分
すごいです!あなたのヒントはそのトリックをしました。私の答えは次のとおりです。((宇宙船-BOTTOMを定義する - BOARDHEIGHT (/(像高SHOWNSHIP)2) (/(像高FLATBED)2))) (定義(レンダリングshownshipのXYを) (place-イメージフラットベッドスタジオ195 (場所イメージショーネイションxyゲームボーイ))) – dotnetN00b
これに解決策を隠してください。これは宿題の問題であり、ソリューションがまさにそこにあったなら、問題のポイントは損なわれるでしょう。 – dyoo
そうは思わない。私がやっていたことは本の演習でさえありません。あなたはリンクを見ましたか?また、これは自習/学習です。私はクラスを取っていません。しかし、司会者が私の答えをスポイラータグに入れたいと思ったら。どうぞ。 – dotnetN00b