これは私のプログラムUFOがシーンの下部にあるフラットベッドの岩に触れないのはなぜですか?なぜそれは前に止まるのですか?
; constants
(define SCENE-WIDTH 200)
(define SCENE-HEIGHT 200)
(define BGR-COLOR "blue")
(define FLAT-ROCKBED (rectangle 100 10 "solid" "black"))
(define MTSCN (place-image FLAT-ROCKBED
(/ SCENE-WIDTH 2) SCENE-HEIGHT
(empty-scene SCENE-WIDTH SCENE-HEIGHT BGR-COLOR)))
[define UFO
[overlay [circle 10 "solid" "green"]
[rectangle 40 4 "solid" "green"]]]
(define X-POS (/ SCENE-WIDTH 2))
(define UFO-PADDING
(- SCENE-HEIGHT
(/ (image-height UFO) 2)
(image-height FLAT-ROCKBED)))
; functions
[define [ufo-landing height]
[cond
[[<= height UFO-PADDING]
(place-image UFO X-POS height MTSCN)]
[[> height UFO-PADDING]
(place-image UFO X-POS UFO-PADDING MTSCN)]]]
それはHow to Design Programs, 2nd Editionの最初の章からです。
私は相互作用領域に(animate ufo-landing)
関数を呼び出すときに、これは私が
UFOは、フラットベッド岩に触れていない得る出力されます。 どうすればいいですか?
編集1: 現場にUFO
を配置するための縦軸は二つの要因に依存しています。
- それ
UFO
ちょうどその表面に接触するように着陸しなければその上FLATBED-ROCK
の高さ。 UFO
の中心;その配置は、その高さが20ピクセルであるため、その中心座標の上下10ピコックスを占めます。
UFO-PADDING
定数は、上記の2つの要因を説明し、シーンにUFO
を配置するために使用されます。したがって、私はUFOがFLATBED-ROCK
の表面にほとんど触れていないときに停止することを期待しています。しかし、それはしません! UFO
の縦座標に影響する他の要因はありますか?私は何が欠けていますか?
ありがとう、私は今PCにアクセスできません。私は明日あなたのアドバイスを試み、報告します。 –
そうです。出来た。ありがとう! –
答えが正しく選択されたため、正しい答えを選択しました。しかし、なぜそれが働いたのか分からなかった。 しかし、私の計算とは違っていたので、正しくコーディングしていないものがあることは確かでした。そして、私はそれを見つけました.MTSCNを定義するとき、私はFLAT-ROCKBEDの配置を相殺するべきでしたが、私はそうしませんでした。それが主な原因でした。 ありがとうございました! –