;; 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 entry7) (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"))))) ;; ;;CSCI 1301 Lab 3 (define WIDTH 500) (define HEIGHT 500) ;;concerning the cloud ;;definitions with the cloud: (define cloud-y-value 100) (define cloud-x-value1 (/ WIDTH 2)) (define cloud-x-value2 (- cloud-x-value1 40)) (define cloud-x-value3 (+ cloud-x-value1 40)) (define cloud-radius 45) ;;attempt to organize cloud stuff ;;structure "clouds" made up of the following feilds: ;;y-cord is the y-coordinate of the cloud ;;X-CORD1 is the x-value of the center cloud ;;X-CORD2 is the x-value of the left cloud ;;X-CORD3 is the x-value of the right cloud (define-struct CLOUDS (Y-CORD X-CORD1 X-CORD2 X-CORD3)) (define IMAGE-CLOUD (make-CLOUDS cloud-y-value cloud-x-value1 cloud-x-value2 cloud-x-value3) ) (start WIDTH HEIGHT) ;;draw cloud in one function (and (draw-solid-disk (make-posn (CLOUDS-X-CORD1 IMAGE-CLOUD) (CLOUDS-Y-CORD IMAGE-CLOUD)) cloud-radius 'gray) (draw-solid-disk (make-posn (CLOUDS-X-CORD2 IMAGE-CLOUD) (CLOUDS-Y-CORD IMAGE-CLOUD)) cloud-radius 'gray) (draw-solid-disk (make-posn (CLOUDS-X-CORD3 IMAGE-CLOUD) (CLOUDS-Y-CORD IMAGE-CLOUD)) cloud-radius 'gray) ) ; ) ;;cloud has been made ;;house definitions: (define house-start-x 210) (define house-start-y 400) (define house-roof-radius 45) (define house-roof-center-x 259) (define house-roof-center-y 425) (define house-door-start-x 250) (define house-door-start-y 460) (define house-demensions 100) (define door-demensions-x 20) (define door-demensions-y 40) ;;make house: ;;draw the house. (and (draw-solid-disk (make-posn house-roof-center-x house-roof-center-y) house-roof-radius 'brown) (draw-solid-rect (make-posn house-start-x house-start-y) house-demensions house-demensions 'brown) (draw-solid-rect (make-posn house-door-start-x house-door-start-y) door-demensions-x door-demensions-y 'yellow) ) ;;rain definitions: (define rain-radius 4) ;;Making rain ;;struct "rain-x" is made up of the following fields: ;;x-rain1 has the x-value for the first raindrop ;;x-rain2 has the x-value for the second raindrop ;;x-rain3 has the x-value for the third raindrop ;;x-rain4 has the x-value for the fourth raindrop (define-struct rain-x (x-rain1 x-rain2 x-rain3 x-rain4)) (define-struct rain-y (y-rain1 y-rain2 y-rain3 y-rain4)) (define RAIN-X (make-rain-x (/ WIDTH 2) (+ (/ WIDTH 2) 40) (- (/ WIDTH 2) 40) (- (/ WIDTH 2)60)) ) (define RAIN-Y (make-rain-y 200 250 300 350) ) ;;make rain seem more real--do later (define (draw-rain1 color) (and (draw-solid-disk (make-posn (rain-x-x-rain1 RAIN-X) (rain-y-y-rain1 RAIN-Y)) rain-radius color) (draw-solid-disk (make-posn (rain-x-x-rain2 RAIN-X) (rain-y-y-rain1 RAIN-Y)) rain-radius color) (draw-solid-disk (make-posn (rain-x-x-rain3 RAIN-X) (rain-y-y-rain1 RAIN-Y)) rain-radius color) (draw-solid-disk (make-posn (rain-x-x-rain4 RAIN-X) (rain-y-y-rain1 RAIN-Y)) rain-radius color) ) ) ;;attempt to clear rain: (define (clear-rain1 y-value) (and (clear-solid-disk (make-posn (rain-x-x-rain1 RAIN-X) (rain-y-y-rain1 RAIN-Y)) rain-radius) (clear-solid-disk (make-posn (rain-x-x-rain2 RAIN-X) (rain-y-y-rain1 RAIN-Y)) rain-radius) (clear-solid-disk (make-posn (rain-x-x-rain3 RAIN-X) (rain-y-y-rain1 RAIN-Y)) rain-radius) (clear-solid-disk (make-posn (rain-x-x-rain4 RAIN-X) (rain-y-y-rain1 RAIN-Y)) rain-radius) ) ) ;;try to make the rain appear to fall: (define (draw-rain2 color) (and (draw-solid-disk (make-posn (rain-x-x-rain1 RAIN-X) (rain-y-y-rain2 RAIN-Y)) rain-radius color) (draw-solid-disk (make-posn (rain-x-x-rain2 RAIN-X) (rain-y-y-rain2 RAIN-Y)) rain-radius color) (draw-solid-disk (make-posn (rain-x-x-rain3 RAIN-X) (rain-y-y-rain2 RAIN-Y)) rain-radius color) (draw-solid-disk (make-posn (rain-x-x-rain4 RAIN-X) (rain-y-y-rain2 RAIN-Y)) rain-radius color) ) ) ;;clear draw-rain2 (define (clear-rain2 y-value) (and (clear-solid-disk (make-posn (rain-x-x-rain1 RAIN-X) (rain-y-y-rain2 RAIN-Y)) rain-radius) (clear-solid-disk (make-posn (rain-x-x-rain2 RAIN-X) (rain-y-y-rain2 RAIN-Y)) rain-radius) (clear-solid-disk (make-posn (rain-x-x-rain3 RAIN-X) (rain-y-y-rain2 RAIN-Y)) rain-radius) (clear-solid-disk (make-posn (rain-x-x-rain4 RAIN-X) (rain-y-y-rain2 RAIN-Y)) rain-radius) ) ) ;;draw-rain3 (define (draw-rain3 color) (and (draw-solid-disk (make-posn (rain-x-x-rain1 RAIN-X) (rain-y-y-rain3 RAIN-Y)) rain-radius color) (draw-solid-disk (make-posn (rain-x-x-rain2 RAIN-X) (rain-y-y-rain3 RAIN-Y)) rain-radius color) (draw-solid-disk (make-posn (rain-x-x-rain3 RAIN-X) (rain-y-y-rain3 RAIN-Y)) rain-radius color) (draw-solid-disk (make-posn (rain-x-x-rain4 RAIN-X) (rain-y-y-rain3 RAIN-Y)) rain-radius color) ) ) ;;clear-rain3 (define (clear-rain3 y-value) (and (clear-solid-disk (make-posn (rain-x-x-rain1 RAIN-X) (rain-y-y-rain3 RAIN-Y)) rain-radius) (clear-solid-disk (make-posn (rain-x-x-rain2 RAIN-X) (rain-y-y-rain3 RAIN-Y)) rain-radius) (clear-solid-disk (make-posn (rain-x-x-rain3 RAIN-X) (rain-y-y-rain3 RAIN-Y)) rain-radius) (clear-solid-disk (make-posn (rain-x-x-rain4 RAIN-X) (rain-y-y-rain3 RAIN-Y)) rain-radius) ) ) ;;draw-rain4 (define (draw-rain4 color) (and (draw-solid-disk (make-posn (rain-x-x-rain1 RAIN-X) (rain-y-y-rain4 RAIN-Y)) rain-radius color) (draw-solid-disk (make-posn (rain-x-x-rain2 RAIN-X) (rain-y-y-rain4 RAIN-Y)) rain-radius color) (draw-solid-disk (make-posn (rain-x-x-rain3 RAIN-X) (rain-y-y-rain4 RAIN-Y)) rain-radius color) (draw-solid-disk (make-posn (rain-x-x-rain4 RAIN-X) (rain-y-y-rain4 RAIN-Y)) rain-radius color) ) ) ;;clear-rain4 (define (clear-rain4 y-value) (and (clear-solid-disk (make-posn (rain-x-x-rain1 RAIN-X) (rain-y-y-rain4 RAIN-Y)) rain-radius) (clear-solid-disk (make-posn (rain-x-x-rain2 RAIN-X) (rain-y-y-rain4 RAIN-Y)) rain-radius) (clear-solid-disk (make-posn (rain-x-x-rain3 RAIN-X) (rain-y-y-rain4 RAIN-Y)) rain-radius) (clear-solid-disk (make-posn (rain-x-x-rain4 RAIN-X) (rain-y-y-rain4 RAIN-Y)) rain-radius) ) ) ;;define the lightning next, and perhaps then clear the house into a thing of ash...maybe if all of this works out then we could have the cloud move in and then move out after the house is destroyed... perhaps. See how i fell when i get back from Quitich. ;;Draw lightning (define-struct Lightning (dot1 dot2 dot3 dot4)) (define lightning-posn (make-Lightning (make-posn cloud-x-value2 (+ cloud-y-value cloud-radius)) (make-posn (+ cloud-x-value2 30) (+ cloud-y-value cloud-radius 140)) (make-posn (+ cloud-x-value2 45) (+ cloud-y-value cloud-radius 100)) (make-posn (+ cloud-x-value2 90) (+ cloud-y-value cloud-radius 300)) ) ) ;;defining "draw-lightning" (define (draw-lightning color) (and (draw-solid-line (Lightning-dot1 lightning-posn) (Lightning-dot2 lightning-posn) color) (draw-solid-line (Lightning-dot2 lightning-posn) (Lightning-dot3 lightning-posn) color) (draw-solid-line (Lightning-dot3 lightning-posn) (Lightning-dot4 lightning-posn) color) ) ) ;;explosion time ;;clear lightnightning first (define (clear-lightning a) (and (clear-solid-line (Lightning-dot1 lightning-posn) (Lightning-dot2 lightning-posn)) (clear-solid-line (Lightning-dot2 lightning-posn) (Lightning-dot3 lightning-posn)) (clear-solid-line (Lightning-dot3 lightning-posn) (Lightning-dot4 lightning-posn)) ) ) ;;explosion time: (define explosion-x (+ cloud-x-value2 90)) (define explosion-y (+ cloud-y-value cloud-radius 300)) (define-struct radii (radius1 radius2 radius3 radius4 radius5)) (define explosion (make-radii 5 25 55 100 150) ) (define (explosion1 color) (draw-solid-disk (make-posn explosion-x explosion-y) (radii-radius1 explosion) color) ) (define (explosion2 color) (draw-solid-disk (make-posn explosion-x explosion-y) (radii-radius2 explosion) color) ) (define (explosion3 color) (draw-solid-disk (make-posn explosion-x explosion-y) (radii-radius3 explosion) color) ) (define (explosion4 color) (draw-solid-disk (make-posn explosion-x explosion-y) (radii-radius4 explosion) color) ) (define (explosion5 color) (draw-solid-disk (make-posn explosion-x explosion-y) (radii-radius5 explosion) color) ) ;;clear the explosion and then make a black rectangle which represents what's left (define (last-scene color) (and (clear-solid-disk (make-posn explosion-x explosion-y) (radii-radius5 explosion)) (draw-solid-rect (make-posn house-start-x (+ house-start-y 90)) house-demensions (- house-demensions 90) color) ) ) ;;test for draw-rain1 (draw-rain1 'blue) ;;pass (sleep-for-a-while 1) ;;test for clear-rain1 (clear-rain1 2) ;;pass ;;test for draw-rain2 (draw-rain2 'blue) ;;pass (sleep-for-a-while 1) ;;test for clear-rain2 (clear-rain2 2) ;;pass ;;test for draw-rain3 (draw-rain3 'blue) ;;pass (sleep-for-a-while 1) ;;test for clear-rain3 (clear-rain3 2) ;;pass ;;test for draw-rain4 (draw-rain4 'blue) ;;pass (sleep-for-a-while 1) ;;test for clear-rain4 (clear-rain4 2) ;;test if lightning works (draw-lightning 'yellow) (sleep-for-a-while .5) ;;test clear-lightning (clear-lightning 1) ;;test explosion: (explosion1 'red) (sleep-for-a-while .5) (explosion2 'orange) (sleep-for-a-while .5) (explosion3 'red) (sleep-for-a-while .5) (explosion4 'orange) (sleep-for-a-while .5) (explosion5 'red) (sleep-for-a-while .5) ;;test "last-scene" (last-scene 'black)