;; function draw-house consumes a posn struct, and two symbols
;; the house will be drawn with the top left corner at location pos
;; its walls will be colored house-color, while the door will be door-color
;;
;; example: (draw-house (make-posn 50 50) 'red 'brown)
;;
;; note: in order for the entire house to be drawn, it must have a y position value >= 30
(define (draw-house pos house-color door-color)
  (and (draw-front pos house-color door-color)
       (draw-side pos house-color)))

;; function draw-front consumes a posn struct, and two symbols
;; it draws the "front" of a house, with two white windows, and a door using door-color
(define (draw-front pos house-color door-color)
  (and (draw-solid-rect pos 100 50 house-color)
       (draw-solid-line pos (make-posn (+ (posn-x pos) 50) (- (posn-y pos) 30)) house-color)
       (draw-solid-line (make-posn (+ (posn-x pos) 50) (- (posn-y pos) 30))
                        (make-posn (+ (posn-x pos) 100) (posn-y pos)) house-color)
       (draw-solid-rect (make-posn (+ (posn-x pos) 45) (+ (posn-y pos) 30)) 
                        10 20 door-color)
       (draw-solid-rect (make-posn (+ (posn-x pos) 20) (+ (posn-y pos) 15))
                        10 10 'white)
       (draw-solid-rect (make-posn (+ (posn-x pos) 70) (+ (posn-y pos) 15))
                        10 10 'white)))

;; function draw-size consumes a posn struct, and one symbol
;; it draws a wire frame of the "side" of a house of color house-color, in order to provide the illusion of 3D
(define (draw-side pos house-color)
  (and (draw-solid-line (make-posn (+ (posn-x pos) 50) (- (posn-y pos) 30))
                        (make-posn (+ (posn-x pos) 100) (- (posn-y pos) 50)) house-color)
       (draw-solid-line (make-posn (+ (posn-x pos) 100) (posn-y pos))
                        (make-posn (+ (posn-x pos) 150) (- (posn-y pos) 20)) house-color)
       (draw-solid-line (make-posn (+ (posn-x pos) 100) (- (posn-y pos) 50))
                        (make-posn (+ (posn-x pos) 150) (- (posn-y pos) 20)) house-color)
       (draw-solid-line (make-posn (+ (posn-x pos) 100) (+ (posn-y pos) 50))
                        (make-posn (+ (posn-x pos) 150) (+ (posn-y pos) 30)) house-color)
       (draw-solid-line (make-posn (+ (posn-x pos) 150) (+ (posn-y pos) 30))
                        (make-posn (+ (posn-x pos) 150) (- (posn-y pos) 20)) house-color)))


;(start 300 300)
;(draw-house (make-posn 50 100) 'red 'brown)