2015-04-20 1 views
1

Новым для программирования, но я следую учебнику от Racket и Im, пытающегося получить ракетную землю на посадочной площадке. Получил ракеты, чтобы работать, но я хотел добавить еще несколько объектов, таких как посадочная площадка. Вот что у меня есть:Учебник DrRacket помогает использовать несколько изображений при использовании анимации

; constants 
(define width 100) 
(define height 100) 
(define background "sky blue") 
(define mtscn (empty-scene width height background)) 
(define rocket.) 
(define rocket-center-to-bottom 
    (- height (/ (image-height rocket) 2))) 
(define base.) 
(define base-center-to-bottom 
    (- height (/ (image-height rocket) 2))) 

    ; functions 
    (define (create-rocket-scene.v6 h) 
    (cond 
    [(<= h rocket-center-to-bottom) 
    (place-image rocket 50 h mtscn)] 
    [(> h rocket-center-to-bottom) 
    (place-image rocket 50 rocket-center-to-bottom mtscn)] 
    [(<= h base-center-to-bottom) 
    (place-image base 50 h mtscn)] 
    [(> h base-center-to-bottom) 
    (place-image base 50 base-center-to-bottom mtscn)])) 


(animate create-rocket-scene.v6) 

в основном скопировать и вставить код ракеты переименовывается ракету к основанию затем сделал базовое изображение. Он говорит, что его работа, но база не появляется. Я хочу, чтобы базовое изображение оставалось внизу, а ракета - сверху вниз, где находится база. Спасибо за любую помощь

ответ

0

этого, где эта проблема стоит:

(cond 
    [(<= h rocket-center-to-bottom) (place-image rocket 50 h mtscn)] 
    [(> h rocket-center-to-bottom) (place-image rocket 50 rocket-center-to-bottom mtscn)] 
    [(<= h base-center-to-bottom) (place-image base 50 h mtscn)] 
    [(> h base-center-to-bottom) (place-image base 50 base-center-to-bottom mtscn)]) 

cond -expression находит первый «вопрос», что это правда, и использует «ответ», который идет с ним.

Если (<= h rocket-center-to-bottom) истинно, то используется первое предложение, и используется (place-image rocket 50 h mtscn). Это означает, что третий пункт, в котором вы используете base, никогда не достигается.

Вместо этого вы должны сделать как горную сцену и основание к тем же картинам:

(place-image base 50 h 
    (place-image rocket 50 h mtscn)) 

Это ставит ракету на вершине горы сцены, и на вершине этой базы.

То есть, вам нужно только два положения в cond:

(cond 
    [(<= h rocket-center-to-bottom)  (place-image base 50 h 
              (place-image rocket 50 h mtscn))] 
    [(> h rocket-center-to-bottom)  ...draw-both-here...]) 
+0

спасибо за вашу помощь. Вот что я должен работать. (площадь [(<= h ракета-центр-снизу) (место-изображение основание 50 97 (ракета-носитель 50 ч mtscn))] [(> h ракета-центр-снизу) (место-образное основание 50 97 (ракета-ракета-ракета 50 ракета-центр-дно mtscn))])) – shaol

+0

@shaol Замечательно, что это сработало. Не забудьте подтвердить и/или принять ответ (используйте зеленую галочку), если вы удовлетворены ответом. – soegaard

Смежные вопросы