;; The first three lines of this file were inserted by DrRacket. They record metadata ;; about the language level of this file in a form that our tools can easily process. #reader(lib "htdp-advanced-reader.ss" "lang")((modname giraffekiss_given) (read-case-sensitive #t) (teachpacks ()) (htdp-settings #(#t constructor repeating-decimal #t #t none #f () #f))) (require 2htdp/image) #|--- CONSTANTS ---|# (define GIRAFFE-COLOR 'chocolate) (define GIRAFFE-HEAD (ellipse 20 10 'solid GIRAFFE-COLOR)) (define GIRAFFE-EYE (circle 2 'solid 'black)) (define GIRAFFE-ANTENNA (overlay/xy (circle 2 'solid GIRAFFE-COLOR) 1 1 (rectangle 2 10 'solid GIRAFFE-COLOR))) (define GIRAFFE-HEAD-RIGHT (overlay/xy GIRAFFE-ANTENNA -13 0 (overlay/xy GIRAFFE-ANTENNA -9 10 (overlay/xy GIRAFFE-EYE -12 -3 GIRAFFE-HEAD)))) (define GIRAFFE-HEAD-LEFT (overlay/xy GIRAFFE-ANTENNA -9 0 (overlay/xy GIRAFFE-ANTENNA -5 10 (overlay/xy GIRAFFE-EYE -5 -3 GIRAFFE-HEAD)))) (define GIRAFFE-BODY (circle 10 'solid GIRAFFE-COLOR)) (define GIRAFFE-LEG (rectangle 2 30 'solid GIRAFFE-COLOR)) (define HEART-IMG (overlay/xy (circle 3 'solid 'pink) -3 0 (overlay/xy (circle 3 'solid 'pink) 1 5 (flip-vertical (triangle 7 'solid 'pink))))) #|--- FUNCTIONS ---|# ;;draw-left-giraffe : Number Number Image -> Image ;;Draw a leftward-facing giraffe on the background (define (draw-left-giraffe x height bg) (draw-at-bottom (overlay/xy GIRAFFE-LEG -22 (- -10 height) (overlay/xy GIRAFFE-LEG -15 (- -10 height) (overlay/xy GIRAFFE-HEAD-LEFT 10 12 (overlay/xy (rectangle 5 height 'solid GIRAFFE-COLOR) -2 (- height 15) GIRAFFE-BODY)))) x bg)) (check-expect (draw-left-giraffe 27 60 (empty-scene 300 200)) (place-image (overlay/xy GIRAFFE-LEG -22 -70 (overlay/xy GIRAFFE-LEG -15 -70 (overlay/xy GIRAFFE-HEAD-LEFT 10 12 (overlay/xy (rectangle 5 60 'solid GIRAFFE-COLOR) -2 45 GIRAFFE-BODY)))) 27 150 (empty-scene 300 200))) ;;draw-at-bottom : Image Number Image -> Image ;;Draw img at position x at the bottom of bg (define (draw-at-bottom img x bg) (place-image img x (- (image-height bg) (/ (image-height img) 2)) bg)) (check-expect (draw-at-bottom (circle 5 'solid 'red) 12 (square 20 'solid 'green)) (place-image (circle 5 'solid 'red) 12 15 (square 20 'solid 'green))) ;;draw-right-giraffe : Number Number Image -> Image ;;Draw the player as a giraffe (define (draw-right-giraffe x height bg) (draw-at-bottom (overlay/xy GIRAFFE-LEG -14 (- -10 height) (overlay/xy GIRAFFE-LEG -5 (- -10 height) (overlay/xy GIRAFFE-HEAD-RIGHT -12 12 (overlay/xy (rectangle 5 height 'solid GIRAFFE-COLOR) -14 (- height 15) GIRAFFE-BODY)))) x bg)) (check-expect (draw-right-giraffe 50 60 (empty-scene 300 200)) (place-image (overlay/xy GIRAFFE-LEG -14 -70 (overlay/xy GIRAFFE-LEG -5 -70 (overlay/xy GIRAFFE-HEAD-RIGHT -12 12 (overlay/xy (rectangle 5 60 'solid GIRAFFE-COLOR) -14 45 GIRAFFE-BODY)))) 50 150 (empty-scene 300 200)))