(define fill-color (list color.grey color.red color.blue color.purple color.yellow color.orange color.green color.midnight-blue color.steel-blue color.green-yellow)) (define eye-color (list color.lime-green color.spicy-pink color.plum-pink color.pink color.pale-pink color.neon-pink color.hot-pink color.blah-grey color.parrot-green color.dark-forest-green)) (define create-drawing (lambda (filename val1 val2 val3) (let ((outport (open-output-file filename))) (if (not (output-port? outport)) (throw "create drawing: Could not open output file" filename)) ;Body (write "filled rectangle" outport) (display " " outport) (write (rgb->cname (list-ref fill-color val2)) outport) (display " " outport) (write 50 outport) (display " " outport) (write 50 outport) (display " " outport) (write (* (+ val1 1) 10) outport) (display " " outport) (write 149 outport) (newline outport) ;Head (write "filled rectangle" outport) (display " " outport) (write (rgb->cname (list-ref fill-color val2)) outport) (display " " outport) (write (+ (* (/ 1 4) (+ val1 1) 10) 50) outport) (display " " outport) (write 25 outport) (display " " outport) (write (* (+ val1 1) 5) outport) (display " " outport) (write 25 outport) (newline outport) ;Gap to make legs! (write "filled rectangle" outport) (display " " outport) (write "white" outport) (display " " outport) (write (+ (* (/ 1 4) (+ val1 1) 10) 50) outport) (display " " outport) (write 150 outport) (display " " outport) (write (* (+ val1 1) 5) outport) (display " " outport) (write 49 outport) (newline outport) ;Left Arm (write "filled rectangle" outport) (display " " outport) (write (rgb->cname (list-ref fill-color val2)) outport) (display " " outport) (write 25 outport) (display " " outport) (write 60 outport) (display " " outport) (write 25 outport) (display " " outport) (write 100 outport) (newline outport) ;Left Arm Border (write "line" outport) (display " " outport) (write "white" outport) (display " " outport) (write "Circle (05)" outport) (display " " outport) (write 49 outport) (display " " outport) (write 70 outport) (display " " outport) (write 49 outport) (display " " outport) (write 160 outport) (newline outport) ;Right Arm (write "filled rectangle" outport) (display " " outport) (write (rgb->cname (list-ref fill-color val2)) outport) (display " " outport) (write (+ (* (+ val1 1) 10) 50) outport) (display " " outport) (write 60 outport) (display " " outport) (write 25 outport) (display " " outport) (write 100 outport) (newline outport) ;Right Arm Border (write "line" outport) (display " " outport) (write "white" outport) (display " " outport) (write "Circle (05)" outport) (display " " outport) (write (+ (* (+ val1 1) 10) 51) outport) (display " " outport) (write 70 outport) (display " " outport) (write (+ (* (+ val1 1) 10) 51) outport) (display " " outport) (write 160 outport) (newline outport) ;Left Eye (write "filled rectangle" outport) (display " " outport) (write (rgb->cname (list-ref eye-color val3)) outport) (display " " outport) (write (+ (* (/ 1 4) (+ val1 1) 10) 50 (* (/ 1 4) (+ val1 1) 5)) outport) (display " " outport) (write 30 outport) (display " " outport) (write (+ val1 1) outport) (display " " outport) (write 7 outport) (newline outport) ;Right Eye (write "filled circle" outport) (display " " outport) (write (rgb->cname (list-ref eye-color val3)) outport) (display " " outport) (write (+ (* (/ 1 4) (+ val1 1) 10) 50 (* (/ 3 4) (+ val1 1) 5)) outport) (display " " outport) (write 30 outport) (display " " outport) (write (+ val1 1) outport) (newline outport) (close-output-port outport))))