;; 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 entry5) (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"))))) ;; Lab 4 ;;Making the basic setup of the cartoon (start 300 300) ;;Creating a circle structure (X, Y, Width, and Height are numbers, color is a symbol) (define-struct circle (x y radius color)) (define Evil (make-circle 150 150 100 'red)) (define (draw-a-circle a-circle) (draw-solid-disk (make-posn (circle-x a-circle) (circle-y a-circle)) (circle-radius a-circle) (circle-color a-circle))) (define (clear-a-circle a-circle) (clear-solid-disk (make-posn (circle-x a-circle) (circle-y a-circle)) (circle-radius a-circle))) ;; makeing a rectangle (x y rect-width rect-height are numbers, color is a symbol) (define-struct rectangle (x y rect-width rect-height color)) (define (draw-a-rect a-rectangle) (draw-solid-rect (make-posn (rectangle-x a-rectangle) (rectangle-y a-rectangle)) (rectangle-rect-width a-rectangle) (rectangle-rect-height a-rectangle) (rectangle-color a-rectangle))) (define mouth (make-rectangle 105 180 95 20 'black)) (define (clear-a-rect a-rectangle) (clear-solid-rect (make-posn (rectangle-x a-rectangle) (rectangle-y a-rectangle)) (rectangle-rect-width a-rectangle) (rectangle-rect-height a-rectangle))) ;; I then use these commands to allow me to define rectangles and circles and then draw them. ;; drawing face (draw-a-circle Evil) (define eye1 (make-circle 100 100 20 'black)) (define eye2 (make-circle 200 100 20 'black)) (draw-a-circle eye1) (draw-a-circle eye2) (draw-a-rect mouth) (sleep-for-a-while 1) ;; making eye wink (have to re-draw parts of face so they are not covered by other parts or so we are not missing spaces) (clear-a-circle eye1) (draw-a-circle Evil) (draw-a-circle eye2) (draw-a-rect mouth) (define winkingeye (make-rectangle 80 100 40 10 'black)) (draw-a-rect winkingeye) ;; returning eye back to normal (have to re-draw parts of face so they are not covered by other parts or so we are not missing spaces) (sleep-for-a-while 1) (clear-a-rect winkingeye) (draw-a-circle Evil) (draw-a-circle eye2) (draw-a-rect mouth) (draw-a-circle eye1) (sleep-for-a-while 1) ;; Making him go cross-eyed (clear-a-circle eye1) (clear-a-circle eye2) (draw-a-circle Evil) (draw-a-rect mouth) (define cross11 (make-circle 120 110 20 'black)) (define cross21 (make-circle 180 110 20 'black)) (draw-a-circle cross11) (draw-a-circle cross21) (sleep-for-a-while 1) (clear-a-circle cross11) (clear-a-circle cross21) (draw-a-circle Evil) (draw-a-rect mouth) (define cross12 (make-circle 130 100 20 'black)) (define cross22 (make-circle 170 100 20 'black)) (draw-a-circle cross12) (draw-a-circle cross22) (sleep-for-a-while 1) ;; now he turns into a cyclops (clear-a-circle cross12) (clear-a-circle cross22) (draw-a-circle Evil) (draw-a-rect mouth) (define bigeye (make-circle 150 100 30 'black)) (draw-a-circle bigeye) (sleep-for-a-while 1) ; Lets put a smile on that face of yours (define smile1 (make-rectangle 105 165 15 15 'black)) (define smile2 (make-rectangle 185 165 15 15 'black)) (draw-a-rect smile1) (draw-a-rect smile2) (sleep-for-a-while 1) ;Ima firin ma lazer! Shoop de woop! (now the face is shooting a laser out of its eye.) (define blue-laser (make-rectangle 125 100 50 400 'blue)) (define yellow-laser (make-rectangle 125 100 50 400 'yellow)) (draw-a-rect blue-laser) (sleep-for-a-while .2) ;; the laser is changing color (clear-a-rect blue-laser) (draw-a-rect yellow-laser) (sleep-for-a-while .2) (clear-a-rect yellow-laser) (draw-a-rect blue-laser) (sleep-for-a-while .2) (clear-a-rect blue-laser) (draw-a-rect yellow-laser) (sleep-for-a-while .2) ;; Laser ends and returns to just the face (clear-a-rect yellow-laser) (draw-a-circle Evil) (draw-a-rect mouth) (draw-a-circle bigeye) (draw-a-rect smile1) (draw-a-rect smile2)