;; 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 entry6_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"))))) ;;Tim Snyder & Reed Simpson (define (explosion position scale) (and (draw-solid-disk position (* 50 scale) 'red) (sleep-for-a-while .5) (draw-solid-disk position (* 75 scale) 'orange) (sleep-for-a-while .5) (draw-solid-disk position (* 100 scale) 'red) (sleep-for-a-while .5) (clear-solid-disk position (* 100 scale)))) ;;Makes explosion centered around position (define (make-car posx posy color) (and (draw-solid-disk (make-posn (+ posx 50) posy) 20 'blue) (draw-solid-rect (make-posn posx posy) 100 20 color) (draw-solid-disk (make-posn (+ posx 20) (+ posy 20)) 10 'black) (draw-solid-disk (make-posn (+ posx 80) (+ posy 20)) 10 'black))) ;;Creates car at posx, posy (define (clear-car posx posy) (and (clear-solid-disk (make-posn (+ posx 50) posy) 20) (draw-solid-rect (make-posn posx posy) 100 20 'white) (clear-solid-disk (make-posn (+ posx 20) (+ posy 20)) 10) (clear-solid-disk (make-posn (+ posx 80) (+ posy 20)) 10 'black))) ;;Erases car at posx, posy (define (move-car posx posy speed color) (and (clear-car posx posy) (make-car (+ posx (* speed 5)) posy color) (sleep-for-a-while .25) (clear-car (+ (* speed 5) posx) posy) (make-car (+ posx (* speed 10)) posy color) (sleep-for-a-while .25) (clear-car (+ (* speed 10) posx) posy) (make-car (+ posx (* speed 15)) posy color) (sleep-for-a-while .25) (clear-car (+ (* speed 15) posx) posy) (make-car (+ posx (* speed 20)) posy color))) ;;Moves car by combining erasing and recreating it a little farther ahead ;;draws a rectangle with a border of "color1" and a filling of "color2" (define (draw-rect position width height color1 color2) (and (draw-solid-rect position (floor width) (floor height) color1) (draw-solid-rect (make-posn (+ (posn-x position) 1) (+ (posn-y position) 1)) (floor (- width 2)) (floor (- height 2)) color2) ) ) ;;Draws a triangle from three points (define (draw-triangle position1 position2 position3) (and (draw-solid-line position1 position2) (draw-solid-line position2 position3) (draw-solid-line position3 position1) ) ) ;;draws a square window centered at "position" with "scale" as its width in pixels (define (draw-window position scale) (and (draw-rect (make-posn (- (posn-x position) (/ scale 2)) (- (posn-y position) (/ scale 2))) scale scale 'black 'white) (draw-solid-line (make-posn (- (posn-x position) (/ scale 2)) (posn-y position)) (make-posn (+ (posn-x position) (/ scale 2)) (posn-y position))) (draw-solid-line (make-posn (posn-x position) (- (posn-y position) (/ scale 2))) (make-posn (posn-x position) (+ (posn-y position) (/ scale 2)))) ) ) ;;combines the above functions to draw a house (define (draw-house position scale) (and (draw-rect (make-posn (- (posn-x position) (/ scale 2)) (- (posn-y position) (/ scale 3))) scale (/ scale 1.5) 'black 'red) ;;main house body (draw-triangle (make-posn (- (posn-x position) (/ scale 1.8)) (- (posn-y position) (/ scale 3))) (make-posn (posn-x position) (- (posn-y position) (/ scale 1.5))) (make-posn (+ (posn-x position) (/ scale 1.8)) (- (posn-y position) (/ scale 3)))) ;;Roof (draw-window (make-posn (- (posn-x position) (/ scale 4)) (posn-y position)) (/ scale 3)) ;;draws a window (draw-rect (make-posn (- (posn-x position) 0) (- (posn-y position) (/ scale 6))) (/ scale 4) (/ scale 2) 'black 'brown) ;;draws a door ) ) (define (move-meteor posx posy speed) (and (clear-solid-disk (make-posn posx posy) 25) (draw-solid-disk (make-posn (- posx (* speed 5)) (+ posy (* speed 5))) 25 'black) (clear-solid-disk (make-posn (- posx (* 5 speed)) (+ posy (* speed 5))) 25) (draw-solid-disk (make-posn (- posx (* speed 10)) (+ posy (* speed 10))) 25 'black) (sleep-for-a-while .25) (clear-solid-disk (make-posn (- posx (* 10 speed)) (+ posy (* speed 10))) 25) (draw-solid-disk (make-posn (- posx (* speed 15)) (+ posy (* speed 15))) 25 'black) (sleep-for-a-while .25) (clear-solid-disk (make-posn (- posx (* 15 speed)) (+ posy (* speed 15))) 25) (draw-solid-disk (make-posn (- posx (* speed 20)) (+ posy (* speed 20))) 25 'black) (sleep-for-a-while .25) )) ;;Moves meteor (define-struct basecar (posx posy color)) ;;structure for cars (define car1 (make-basecar 0 300 'green)) ;;defines the used car (start 600 600) ;;starts the GUI (draw-house (make-posn 300 300) 300) ;;makes a very nice house (draw-solid-disk (make-posn 600 0) 25 'black) ;;makes a meteor (move-meteor 600 0 5) ;;sends the meteor towards the house (move-meteor 500 100 5) (move-meteor 400 200 5) (explosion (make-posn 300 300) 4) ;;explodes the house (make-car (basecar-posx car1) (basecar-posy car1) (basecar-color car1)) ;;creates a car (move-car (basecar-posx car1) (basecar-posy car1) 6 (basecar-color car1)) ;;moves said car (move-car (+ 120 (basecar-posx car1)) (basecar-posy car1) 6 (basecar-color car1)) (move-car (+ 240 (basecar-posx car1)) (basecar-posy car1) 1.5 (basecar-color car1)) (draw-solid-disk (make-posn 600 0) 25 'black) ;;makes new meteor (move-meteor 600 0 5) ;;sends the meteor towards the car (move-meteor 500 100 5) (move-meteor 400 200 5) (explosion (make-posn 300 300) 2) (explosion (make-posn 300 300) 4) (explosion (make-posn 300 300) 8) ;;explodes the car (stop) ;;stops the insanity