;; The first three lines of this file were inserted by DrScheme. They record metadata ;; about the language level of this file in a form that our tools can easily process. #reader(lib "htdp-beginner-reader.ss" "lang")((modname entry4_not_contest) (read-case-sensitive #t) (teachpacks ((lib "draw.ss" "teachpack" "htdp"))) (htdp-settings #(#t constructor repeating-decimal #f #t none #f ((lib "draw.ss" "teachpack" "htdp"))))) (start 700 300) ;; set frame speed in seconds (define frame-speed .8) ;; puppy position structures: ;; bone (define (bone bone-posn) (and (draw-solid-rect (make-posn (- (posn-x bone-posn) 50) (- (posn-y bone-posn) 5)) 50 10 'blue) (draw-solid-disk (make-posn (posn-x bone-posn) (posn-y bone-posn)) 10 'green) (draw-solid-disk (make-posn (- (posn-x bone-posn) 50) (posn-y bone-posn)) 10 'green) ) ) ;; vertical bone (for when the bone is flying through the air) (define (vert-bone bone-posn) (and (draw-solid-rect (make-posn (- (posn-x bone-posn) 5) (- (posn-y bone-posn) 5)) 10 50 'blue) (draw-solid-disk (make-posn (posn-x bone-posn) (posn-y bone-posn)) 10 'green) (draw-solid-disk (make-posn (posn-x bone-posn) (+ (posn-y bone-posn) 50)) 10 'green) ) ) ;; dog body (define-struct dog-body (x y width height)) (define (body body-posn) (and (draw-solid-rect (make-posn (dog-body-x body-posn) (dog-body-y body-posn)) (dog-body-width body-posn) (dog-body-height body-posn) 'brown) (draw-solid-disk (make-posn (+ (dog-body-x body-posn) 20) (+ (dog-body-y body-posn) 16)) 8 'white) ) ) ;; dog head (define (head head-posn) (and (draw-solid-disk (make-posn (posn-x head-posn) (posn-y head-posn)) 18 'brown) (draw-solid-disk (make-posn (- (posn-x head-posn) 5) (- (posn-y head-posn) 3)) 2 'black) (draw-solid-disk (make-posn (+ (posn-x head-posn) 5) (- (posn-y head-posn) 3)) 2 'black) ) ) ;; dog legs (define (legs legs-posn) (and (draw-solid-line legs-posn (make-posn (- (posn-x legs-posn) 10) (+ (posn-y legs-posn) 30)) 'brown) (draw-solid-line (make-posn (+ (posn-x legs-posn) 10) (posn-y legs-posn)) (make-posn (+ (posn-x legs-posn) 20) (+ (posn-y legs-posn) 30)) 'brown) (draw-solid-line (make-posn (+ (posn-x legs-posn) 50) (posn-y legs-posn)) (make-posn (+ (posn-x legs-posn) 40) (+ (posn-y legs-posn) 30)) 'brown) (draw-solid-line (make-posn (+ (posn-x legs-posn) 60) (posn-y legs-posn)) (make-posn (+ (posn-x legs-posn) 70) (+ (posn-y legs-posn) 30)) 'brown) ) ) ;; the drawings (body (make-dog-body 50 200 100 40)) (bone (make-posn 80 50)) (head (make-posn 160 195)) (legs (make-posn 60 240)) (sleep-for-a-while frame-speed) (draw-solid-rect (make-posn 0 0) 700 300 'white) (body (make-dog-body 50 200 100 40)) (vert-bone (make-posn 340 80)) (head (make-posn 160 195)) (legs (make-posn 60 240)) (sleep-for-a-while frame-speed) (draw-solid-rect (make-posn 0 0) 700 300 'white) (body (make-dog-body 50 200 100 40)) (bone (make-posn 650 250)) (head (make-posn 160 195)) (legs (make-posn 60 240)) (sleep-for-a-while frame-speed) (draw-solid-rect (make-posn 0 0) 700 300 'white) (body (make-dog-body 120 200 100 40)) (bone (make-posn 650 250)) (head (make-posn 230 195)) (legs (make-posn 130 240)) (sleep-for-a-while frame-speed) (draw-solid-rect (make-posn 0 0) 700 300 'white) (body (make-dog-body 190 200 100 40)) (bone (make-posn 650 250)) (head (make-posn 300 195)) (legs (make-posn 200 240)) (sleep-for-a-while frame-speed) (draw-solid-rect (make-posn 0 0) 700 300 'white) (body (make-dog-body 260 200 100 40)) (bone (make-posn 650 250)) (head (make-posn 370 195)) (legs (make-posn 270 240)) (sleep-for-a-while frame-speed) (draw-solid-rect (make-posn 0 0) 700 300 'white) (body (make-dog-body 330 200 100 40)) (bone (make-posn 650 250)) (head (make-posn 440 195)) (legs (make-posn 340 240)) (sleep-for-a-while frame-speed) (draw-solid-rect (make-posn 0 0) 700 300 'white) (body (make-dog-body 400 200 100 40)) (bone (make-posn 650 250)) (head (make-posn 510 195)) (legs (make-posn 410 240)) (sleep-for-a-while frame-speed) (draw-solid-rect (make-posn 0 0) 700 300 'white) (body (make-dog-body 470 200 100 40)) (bone (make-posn 650 250)) (head (make-posn 580 195)) (legs (make-posn 480 240)) (sleep-for-a-while frame-speed) (draw-solid-rect (make-posn 0 0) 700 300 'white) (body (make-dog-body 470 200 100 40)) (bone (make-posn 650 250)) (head (make-posn 580 235)) (legs (make-posn 480 240))