;; 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-beginner-reader.ss" "lang")((modname entry14) (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"))))) ;; ;;object definitions (define-struct building (corner width height)) ;a building object (define-struct person (head-center head-radius)) ;a person object (define-struct rock (center-x center-y radius)) ;a rock object (define-struct newcar (car-width car-height)) ;a car object ;;functions ;draws a building (define (draw-building a-building) (draw-solid-rect (building-corner a-building)(building-width a-building)(building-height a-building) 'gray)) ;clears a building (define (clear-building a-building) (clear-solid-rect(building-corner a-building)(building-width a-building)(building-height a-building))) ;;a function that adds windows to a building (define (add-windows a-building) (and (draw-solid-rect (make-posn 30 150) 50 60 'black) (draw-solid-rect (make-posn 165 150) 50 60 'black) (draw-solid-rect (make-posn 30 250) 50 60 'black) (draw-solid-rect (make-posn 165 250) 50 60 'black) (draw-solid-rect (make-posn 30 350) 50 60 'black) (draw-solid-rect (make-posn 165 350) 50 60 'black) (draw-solid-rect (make-posn 30 450) 50 60 'black) (draw-solid-rect (make-posn 165 450) 50 60 'black))) ;;clears windows (define (clear-windows a-building) (and (clear-solid-rect (make-posn 30 150) 50 60) (clear-solid-rect (make-posn 165 150) 50 60) (clear-solid-rect (make-posn 30 250) 50 60) (clear-solid-rect (make-posn 165 250) 50 60) (clear-solid-rect (make-posn 30 350) 50 60) (clear-solid-rect (make-posn 165 350) 50 60) (clear-solid-rect (make-posn 30 450) 50 60) (clear-solid-rect (make-posn 165 450) 50 60))) ;draws a person (define (draw-person a-person) (and (draw-solid-disk (person-head-center a-person) 10 'black) (draw-solid-rect (make-posn 178 325) 5 50 'black) (draw-solid-line (make-posn 180 340) (make-posn 200 360) 'black) (draw-solid-line (make-posn 180 340) (make-posn 160 360) 'black) (draw-solid-rect (make-posn 177 372) 3 30 'black) (draw-solid-rect (make-posn 182 372) 3 30 'black))) ;clears a person (define (clear-person a-person) (and (clear-solid-disk (person-head-center a-person) 10 ) (clear-solid-rect (make-posn 178 325) 5 50) (clear-solid-line (make-posn 180 340) (make-posn 200 360)) (clear-solid-line (make-posn 180 340) (make-posn 160 360)) (clear-solid-rect (make-posn 177 372) 3 30) (clear-solid-rect (make-posn 182 372) 3 30))) ;draws a rock (define (draw-rock a-rock changex changey) (draw-solid-disk (make-posn(+(rock-center-x a-rock)changex)(+(rock-center-y a-rock)changey))(rock-radius a-rock) 'brown)) ;clears a rock (define (clear-rock a-rock changex changey) (clear-solid-disk (make-posn(+(rock-center-x a-rock)changex)(+(rock-center-y a-rock)changey))(rock-radius a-rock) 'brown)) ;draw and clear rock (also used to move a rock) (define (draw-and-clear-rock a-rock changex changey speed) (and (draw-rock a-rock changex changey) (sleep-for-a-while speed) (clear-rock a-rock changex changey))) ;draws a car (define (draw-car a-car) (and (draw-solid-rect(make-posn 260 470)80 20 'purple) (draw-solid-rect(make-posn 265 450)70 20 'purple) (draw-solid-disk(make-posn 280 490)10 'black) (draw-solid-disk(make-posn 320 490)10 'black))) ;;object creation (define building1 (make-building(make-posn 0 125) 250 375)) (define building2 (make-building(make-posn 0 400) 350 400)) (define person1 (make-person( make-posn 180 325)10)) (define rock1 (make-rock 200 75 50)) (define rock2 (make-rock 280 325 75)) (define building3(make-building(make-posn 0 0) 250 500)) (define car1(make-newcar 1 74)) ;;Starts the Cartoon (start 500 500) ;;frame 1 (draw-building building1) (add-windows building1) (draw-rock rock1 0 0) (sleep-for-a-while 2) (clear-building building1) (clear-rock rock1 0 0) (clear-windows building1) ;;frame 2 (draw-building building2) (draw-rock rock2 0 0) (draw-person person1) (sleep-for-a-while 2) (clear-solid-line (make-posn 180 340)(make-posn 200 360)) ;;frame 3 (draw-solid-rect (make-posn 180 340) 30 1 'black) (sleep-for-a-while 0.5) (clear-solid-rect (make-posn 180 340) 30 1) (draw-person person1) ;;frame 4 (draw-and-clear-rock rock2 0 0 0.2) (draw-building building2) (draw-and-clear-rock rock2 5 0 0.2) (draw-building building2) (draw-and-clear-rock rock2 10 0 0.2) (draw-building building2) (draw-and-clear-rock rock2 20 0 0.2) (draw-building building2) (draw-and-clear-rock rock2 30 0 0.2) (draw-building building2) (draw-and-clear-rock rock2 40 0 0.2) (draw-building building2) (draw-and-clear-rock rock2 50 0 0.2) (draw-building building2) (draw-and-clear-rock rock2 60 0 0.2) (draw-building building2) (draw-and-clear-rock rock2 70 0 0.2) (draw-building building2) (draw-and-clear-rock rock2 80 0 0.2) (draw-building building2) (draw-and-clear-rock rock2 90 5 0.2) (draw-building building2) (draw-and-clear-rock rock2 100 10 0.2) (draw-building building2) (draw-and-clear-rock rock2 110 15 0.2) (draw-building building2) (clear-person person1) (clear-building building2) ;;frame 5 (draw-building building1) (add-windows building1) (draw-and-clear-rock rock1 100 15 0.1) (draw-and-clear-rock rock1 110 25 0.1) (draw-and-clear-rock rock1 110 35 0.1) (draw-and-clear-rock rock1 110 45 0.1) (draw-and-clear-rock rock1 110 65 0.1) (draw-and-clear-rock rock1 110 85 0.1) (draw-and-clear-rock rock1 110 105 0.1) (draw-and-clear-rock rock1 110 125 0.1) (draw-and-clear-rock rock1 110 145 0.1) (draw-and-clear-rock rock1 110 165 0.1) (draw-and-clear-rock rock1 110 185 0.1) (draw-and-clear-rock rock1 110 205 0.1) (draw-and-clear-rock rock1 110 225 0.1) (draw-and-clear-rock rock1 110 245 0.1) (draw-and-clear-rock rock1 110 265 0.1) (draw-and-clear-rock rock1 110 285 0.1) (draw-and-clear-rock rock1 110 305 0.1) (draw-and-clear-rock rock1 110 325 0.1) (draw-and-clear-rock rock1 110 345 0.1) (draw-and-clear-rock rock1 110 365 0.1) (draw-and-clear-rock rock1 110 385 0.1) (clear-building building1) (clear-windows building1) ;;frame 6 (draw-building building3) (draw-solid-rect (make-posn 30 50) 50 60 'black) (draw-solid-rect (make-posn 165 50) 50 60 'black) (draw-solid-rect (make-posn 30 250) 50 60 'black) (draw-solid-rect (make-posn 165 250) 50 60 'black) (draw-solid-rect (make-posn 80 420) 85 90 'blue) (draw-car car1) (draw-and-clear-rock rock1 120 -25 0.1) (draw-and-clear-rock rock1 110 -5 0.1) (draw-and-clear-rock rock1 110 15 0.1) (draw-and-clear-rock rock1 110 45 0.1) (draw-and-clear-rock rock1 110 75 0.1) (draw-and-clear-rock rock1 110 105 0.1) (draw-and-clear-rock rock1 110 135 0.1) (draw-and-clear-rock rock1 110 175 0.1) (draw-and-clear-rock rock1 110 205 0.1) (draw-and-clear-rock rock1 110 235 0.1) (draw-and-clear-rock rock1 110 275 0.1) (draw-and-clear-rock rock1 110 315 0.1) (draw-and-clear-rock rock1 110 355 0.1) (draw-and-clear-rock rock1 106 395 0.1) (draw-solid-disk (make-posn 306 450) 50 'brown) (sleep-for-a-while 2) ;;Final Frame (draw-solid-rect (make-posn 0 0) 500 500 'white) (draw-solid-string (make-posn 230 250) "fin")