;;; Scheme Recursive Art Contest Entry ;;; ;;; Please do not include your name or personal info in this file. ;;; ;;; Title: ;;; ;;; Description: ;;; (define (draw) ; YOUR CODE HERE (speed 0) (define c1 '"#66ccff") (define c2 '"#99ccff") (define c3 '"#cc99ff") (define c4 '"#ff99ff") (define c5 '"#ccffff") (define c6 '"#ccccff") (define c7 '"#ffccff") (define c8 '"#003399") (define med-colors (list c1 c2 c3 c4)) (define light-colors (list c5 c6 c7)) (define (cadr lst) (car (cdr lst))) (define (caddr lst) (cadr (cdr lst))) (define (cadddr lst) (caddr (cdr lst))) ;;Note components (define (note-head size fill) (if (= fill 1) (begin_fill) #f) (circle size) (if (= fill 1) (end_fill) #f) ) (define (stem size face flag?) (cond ((= face 0) (circle size 90)) (else (circle size -90)) ) (forward (* size 5)) (if (> flag? 0) (flag size face) #f) (if (> flag? 1) (begin (forward size) (flag size face) (backward size)) #f ) (backward (* size 5)) (cond ((= face 0) (circle size -90)) (else (circle size 90)) ) ) (define (flag size face) (cond ((= face 1) (define deg 180) ) (else (define deg 225) )) (right deg) (circle (* size 4) 45) (circle (* size 4) -45) (left deg) ) ;;Note values (define (note value size face) (if (> value 1) (begin (define c c1) (define fill 0) (define flag? 0))) (if (> value 2) (begin (define c c2) (define fill 1))) (if (> value 4) (begin (define c c3) (define flag? 1))) (if (> value 8) (begin (define c c4) (define flag? 2))) (color c) (note-head size fill) (stem size face flag?) ) ;;Spiral components (define (make-spiral action sizes) (if (null? sizes) #f (begin (if (equal? action 0) (circle (car sizes) -180) #f ) (make-spiral action (cdr sizes)) ) ) ) (define (color-slice c size extent action a1 a2 a3) (color c) (circle size (- extent)) (action a1 a2 a3) ) (define (notes values face colors size) (define v1 (car values)) (define v2 (cadr values)) (define v3 (caddr values)) (define v4 (cadddr values)) (color-slice c1 size 45 note v1 (/ size 35) face) (color-slice c2 size 45 note v2 (/ size 35) face) (color-slice c3 size 45 note v3 (/ size 35) face) (color-slice c4 size 45 note v4 (/ size 35) face) ) (define (draw-notes d values-list face) (define v1 (car values-list)) (define v2 (cadr values-list)) (define v3 (caddr values-list)) (define v4 (cadddr values-list)) (setposition 0 0) (setheading d) (pendown) (notes v1 face med-colors 1) (notes v2 face med-colors 2) (notes v3 face med-colors 4) (notes v4 face med-colors 8) (notes v1 face med-colors 16) (notes v2 face med-colors 32) (notes v3 face med-colors 64) (notes v4 face med-colors 128) (notes v1 face med-colors 256) (notes v2 face med-colors 512) (penup) ) (define (spiral-staff) (define v1 (list 2 4 8 16)) (define v2 (list 8 16 16 4)) (define v3 (list 4 8 4 8)) (define v4 (list 16 2 2 4)) (draw-notes 0 (list v1 v2 v3 v4) 0) (draw-notes 10 (list v2 v1 v4 v3) 0) (draw-notes 20 (list v3 v4 v2 v1) 0) (draw-notes 30 (list v4 v3 v1 v2) 1) (draw-notes 40 (list v1 v2 v4 v3) 1) (draw-notes 120 (list v3 v2 v1 v4) 0) (draw-notes 130 (list v2 v3 v4 v1) 0) (draw-notes 140 (list v1 v4 v2 v3) 0) (draw-notes 150 (list v4 v1 v3 v2) 1) (draw-notes 160 (list v2 v4 v1 v3) 1) (draw-notes 240 (list v2 v3 v1 v4) 0) (draw-notes 250 (list v3 v2 v4 v1) 0) (draw-notes 260 (list v4 v1 v2 v3) 0) (draw-notes 270 (list v1 v4 v3 v2) 1) (draw-notes 280 (list v2 v1 v3 v4) 1) ) (define (treble c a2 a3) (color c) (pendown) (make-spiral 0 '(2 4 6)) (right 180) (circle 3 90) (circle 1.5 180) (forward 20) (right 180) (circle 1) (left 180) (backward 20) (right 270) (penup) ) (define (clefs size c n1 n2) (cond ((> n2 0) (color-slice c size (/ 180 n1) treble c 0 0) (clefs size c n1 (- n2 1)))) ) (define (draw-clefs d c a3) (setposition 0 0) (setheading d) (make-spiral 0 '(1 2 4 8 16 32))(clefs 64 c8 4 4) (clefs 128 c 8 8) (clefs 256 c 16 16) (clefs 512 c 32 32) ) (define (spiral-clef) (draw-clefs 90 c5 0) (draw-clefs 210 c6 0) (draw-clefs 330 c7 0) ) (penup) (bgcolor '"#003366") (spiral-clef) (spiral-staff) (exitonclick)) ; Please leave this last line alone. You may add additional procedures above ; this line. (draw)