;;; Scheme Recursive Art Contest Entry ;;; ;;; Please do not include your name or personal info in this file. ;;; ;;; Title: ;;; ;;; Description: ;;; (define (background) (define (rectangle width height c) (color c) (begin_fill) (forward height) (right 90) (forward width) (right 90) (forward height) (right 90) (forward width) (right 90) (forward height) (end_fill) (penup)) (setposition -500 -500) (rectangle 1000 440 "#303030") ;table (define (condense lst table-height) (let ((height (/ (- 1000 table-height) 12))) (if (null? (cdr lst)) (begin (rectangle 1000 height (car lst)) (hideturtle)) (begin (rectangle 1000 height (car lst)) (condense (cdr lst) table-height))))) (define background-colors (list "#FFD780" "#FFBB80" "#FF9D80" "#FF8C80" "#FF80A6" "#FC92CE" "#EA92FC" "#E286FE" "#C792FC" "#9EB8FF" "#80CCFF" "#9ED8FF")) (condense background-colors 440)) (define (cat) (define (one-row x y goalx start-c fil-c end-c) (define (row x y goalx fil-c end-c) (if (>= x goalx) (pixel goalx y end-c) (begin (pixel x y fil-c) (row (+ x 1) y goalx fil-c end-c)))) (pixelsize 20) (pixel x y start-c) (row (+ x 1) y goalx fil-c end-c)) (define (one-col x y goaly start-c fil-c end-c) (define (row x y goaly fil-c end-c) (if (>= y goaly) (pixel x goaly end-c) (begin (pixel x y fil-c) (row x (+ y 1) goaly fil-c end-c)))) (pixel x y start-c) (row x (+ y 1) goaly fil-c end-c)) (define rand (list 1 4 1 1 1 3 1 1 3 1 3 1 1 1)) (define (stack x goalx y goaly rand) (cond ((>= y goaly) (one-row x goaly goalx "black" "white" "black")) ((= (car rand) 4) (stack (- x 1) (+ 1 goalx) y goaly (cdr rand))) ((= (car rand) 3) (stack (- x 0.5) (+ 0.5 goalx) y goaly (cdr rand))) (else (begin (one-row x y goalx "black" "white" "black") (stack (+ x 0.5) (- goalx 0.5) (+ 1 y) goaly (cdr rand))))) ) (define (slant leng x y x-shift y-shift c) (define (helper curr-len x y) (if (= leng curr-len) (pixel x y c) (begin (pixel x y c) (helper (+ 1 curr-len) (+ x x-shift) (+ y y-shift))) )) (helper 1 x y)) (define (body) (stack -15 7 -3 7 rand) (one-row -8 8 2 "white" "white" "white") (one-row -8 9 2 "black" "white" "black") (one-row -7 9.4 1 "black" "white" "black") (one-row -6 9.8 0 "black" "black" "black") (pixel -2 9.2 "white") (pixel -2 10.2 "black") (pixel -5 9.3 "white") (pixel -5 10.3 "black")) (define (ears) (one-row -13 8 -7 "black" "white" "white") ;left ear (one-row -13.2 9 -8 "black" "white" "black") (one-row -13.4 10 -9 "black" "white" "black") (one-row -13.5 11 -10 "black" "white" "black") (one-row -13.6 12 -11 "black" "white" "black") (one-row -13.8 13 -12 "black" "white" "black") (one-row -14 14 -13 "black" "white" "black") (one-row -14 15 -14 "black" "white" "black") (one-row 1 7 5 "white" "white" "black") (slant 4 -10 8.8 -0.9 0.9 "#F3B4D5") (slant 3 -10.8 8.8 -0.9 0.9 "#F3B4D5") (slant 3 -10.8 7.9 -0.9 0.9 "#F3B4D5") (one-row -1 6 5.9 "white" "white" "black") ;right ear (one-row 0 7 6.2 "white" "white" "black") (one-row 1 8 6.5 "white" "white" "black") (one-row 2 9 6.8 "black" "white" "black") (one-row 3 10 7.1 "black" "white" "black") (one-row 4 11 7.4 "black" "white" "black") (one-row 5 12 7.7 "black" "white" "black") (one-row 6 13 8.0 "black" "white" "black") (one-row 7 14 8.3 "black" "white" "black") (one-row 8 15 8.3 "black" "white" "black") (slant 4 4 9 0.9 0.9 "#F3B4D5") (slant 4 4 8.1 0.9 0.9 "#F3B4D5") (slant 3 4.9 9.1 0.9 0.9 "#F3B4D5") (slant 2 4.9 8.1 0.9 0.9 "#F3B4D5")) (define (face) (pixel -7 1.3 "#F3B4D5") ;nose (pixel -8 1.3 "#F3B4D5") (pixel -7.5 0.7 "#F3B4D5") (setposition -40 45) (pixel -10 3.5 "black");left eye (pixel -10.55 3.48 "black") (pixel -9.5 3.3 "black") (pixel -9.8 3.1 "black") (pixel -10.3 3.2 "black") (pixel -10.5 3.6 "black") (pixel -10.8 3.7 "black") (pixelsize 7) (pixel -27 11 "white") (pixel -26.3 10.8 "white") (pixel -31.3 11.3 "black") (pixel -31.5 11.8 "black") (pixel -31.55 12.2 "black") (pixelsize 20) (pixel -3 3.38 "black") ;right eye (pixel -3.25 3.25 "black") (pixel -3 2.9 "black") (pixel -3.3 3 "black") (pixel -2.5 3.55 "black") (pixel -2.5 2.9 "black") (pixel -2 3.4 "black") (pixel -2 3.2 "black") (pixel -1.7 3.4 "black") (pixel -1.7 3.5 "black") (pixel -1.6 3.45 "black") (pixelsize 7) (pixel -10 9 "black") (pixel -10 10 "black") (pixel -10.5 9.5 "black") (pixel -2 10.5 "black") (pixel -2 11.5 "black") (pixel -2 11.7 "black") (pixel -1.4 11.4 "black") (pixel -4 11.3 "white") (pixel -4.5 11.5 "white") (slant 8 -24 -8 1 0 "black") ;mouth (one-col -21 -8 0 "black" "#F3B4D5" "black") (one-col -22 -8 -1 "black" "#F3B4D5" "black") (one-col -23 -8 -2 "black" "#F3B4D5" "black") (one-col -24 -8 -2.5 "black" "#F3B4D5" "black") (one-col -27 -5 -2 "black" "black" "black") (one-col -27.5 -3 -1.5 "black" "black" "black") (one-col -21 -8 -5 "black" "white" "black") (one-col -22 -8 -5 "black" "white" "black") (one-col -23 -8 -4 "black" "white" "black") (one-col -24 -8 -3 "black" "white" "black") (one-col -25 -7 -2.5 "black" "white" "black") (one-col -26 -6 -2.5 "black" "white" "black") (one-col -20 -8 -1 "black" "#F3B4D5" "black") (one-col -19 -8 -2 "black" "#F3B4D5" "black") (one-col -18 -8 -2.5 "black" "#F3B4D5" "black") (one-col -17 -7 -3 "black" "#F3B4D5" "black") (one-col -13 -5 -3 "white" "white" "black") (one-col -12 -4 -3 "white" "white" "black") (slant 2 -12.3 -3.5 1 1 "black") (one-col -20 -8 -5 "black" "white" "black") (one-col -19 -8 -5 "black" "white" "black") (one-col -18 -8 -4 "black" "white" "black") (one-col -17 -8 -3 "black" "white" "black") (one-col -16 -7.5 -3.5 "black" "white" "black") (one-col -15 -7 -3.5 "black" "white" "black") (one-col -14 -6 -3.5 "white" "white" "black") (slant 3 9 5 1 -0.8 "black") ;fur (slant 3 9 2.6 1 0.4 "black") (slant 3 11 -3 0.7 -1 "black") (slant 3 10.5 -6.2 1 0.3 "black") (slant 3 -37 -4 1 0.6 "black") (slant 4 -37.5 -4.5 0.8 -0.4 "black")) (body) (ears) (face)) (define (draw-curve sides len deg) (if (> sides 0) (begin (forward len) (rt deg) (draw-curve (- sides 1) len deg)))) (define (plate) (setposition -200 -110) ;outer plate (begin_fill) (color "#FCFBF8") (pd) (rt 90) (forward 430) (draw-curve 4 15 15) (rt 5) (forward 100) (rt 10) (draw-curve 6 25 18) (lt 3) (forward 450) (draw-curve 6 25 18) (rt 5) (forward 100) (draw-curve 4 15 15) (end_fill) (pu) (setposition -120 -170) ;inner divot (begin_fill) (color "#E3E3E3") (pd) (rt 7) (forward 260) (draw-curve 4 16 18) (forward 20) (draw-curve 5 10 18) (rt 18) (forward 300) (draw-curve 5 10 18) (rt 10) (forward 30) (draw-curve 5 11 18) (end_fill) (pu)) (define (asparagus) (setposition 110 -185) ;stalk (color "#54A805") (begin_fill) (pd) (rt 60) (draw-curve 4 7 17) (draw-curve 3 2 10) (forward 20) (rt 7) (forward 130) (draw-curve 8 3 -17) (circle -6 180) (rt 20) (fd 10) (rt 20) (draw-curve 2 5 15) (fd 3) (draw-curve 3 6.6 17) (rt 14.5) (fd 140) (draw-curve 2 6 -15) (draw-curve 4 4 -23) (fd 3) (goto 98 -165) (goto 110 -185) (pu) (end_fill) (begin_fill) (setposition 76 -215) (pd) (goto -50 -185) (circle -6 170) (lt 30) (forward 150) (goto 76 -215) (pu) (end_fill) (pixelsize 7) (pixel 12.2 -29.1 "#E3E3E3") (pixel 12.8 -28.7 "#E3E3E3") (pixel 13.3 -28.4 "#E3E3E3") (define (triangle scale) (begin_fill) (pd) (fd (/ scale 2.6)) (lt 100) (fd scale) (lt 160) (fd scale) (lt 100) (pu) (end_fill)) (define (make-row base scale) (if (= base 1) (triangle scale) (begin (triangle scale) (fd 5) (make-row (- base 1) scale)))) (color "green") ;asparagus leaves (goto 96 -175) (lt 30) (make-row 2 5) (color "#7CD803") (goto 98 -180) (make-row 2 7) (color "green") (goto 96 -184) (make-row 3 9) (goto 50 -215) (rt 100) (triangle 10) (goto 13 -215) (lt 10) (triangle 10) (rt 10) (goto -20 -222) (rt 15) (triangle 10) (lt 15) (goto -10 -183) (triangle 10) (goto 25 -190) (triangle 10) (goto 50 -200) (triangle 10) (goto 65 -205) (triangle 10) (goto 80 -210) (rt 15) (triangle 10) (goto 100 -208) (triangle 10) (goto 105 -200) (lt 40) (triangle 10) (goto 106 -190) (lt 40) (triangle 10) (goto 100 -195) (lt 40) (triangle 10) (goto 90 -204) (rt 65) (triangle 10) ) (define (draw) (background) (cat) (plate) (asparagus) (exitonclick)) ; Please leave this last line alone. You may add additional procedures above ; this line. (draw)