import numpy as np
import matplotlib.pyplot as plt

def tree(ax,x,y):
    # Initialisieren tree_color mit der Farbe grün für die Farbe der Tanne
    tree_color = "green"
    
    # Zeichnet das untere Dreiecksstück der Tanne
    bottom_triangle = plt.Polygon([[x+5, y+8], [x+4.25, y+6.75], [x+5.75, y+6.75]], closed=True, facecolor=tree_color, edgecolor="black")
    ax.add_patch(bottom_triangle)
    
    # Zeichnet das mittlere Dreiecksstück der Tanne (überlappt sich leicht mit dem unteren Dreiecksstück)
    middle_triangle = plt.Polygon([[x+5, y+8.25], [x+4.4, y+7.25], [x+5.6, y+7.25]], closed=True, facecolor=tree_color, edgecolor="black")
    ax.add_patch(middle_triangle)
    
    # Zeichnet das obere Dreiecksstück der Tanne (überlappt sich leicht mit dem mittleren Dreiecksstück)
    top_triangle = plt.Polygon([[x+5, y+8.5], [x+4.6, y+7.75], [x+5.4, y+7.75]], closed=True, facecolor=tree_color, edgecolor="black")
    ax.add_patch(top_triangle)
    
    # Zeichnet den Stamm der Tanne
    trunk = plt.Rectangle((x+4.75, y+6.25), 0.5, 0.5, facecolor=tree_color, edgecolor="black")
    ax.add_patch(trunk)

def body(ax):
    main_body1 = plt.Rectangle((0.7, 0.1), 8, 8, linewidth=2, edgecolor="black", facecolor="yellow")
    ax.add_patch(main_body1)
    
    main_body2 = plt.Rectangle((0.2, 7.5), 9, 1.5, linewidth=2, edgecolor="black", facecolor="yellow")
    ax.add_patch(main_body2)

def mouth(ax):
    # Zeichnet die "Wange" der Spielzeug-Maschine in orange
    cheek = plt.Rectangle((2.5, 0.1), 4.4, 6.5, linewidth=2, edgecolor="black", facecolor='orange')
    ax.add_patch(cheek)

    # Zeichnet den "Rachen" der Spielzeug-Maschine in blau
    background = plt.Rectangle((2.9, 1.3), 3.6, 5, linewidth=2, edgecolor="black")
    ax.add_patch(background)

    # Zeichnet das "Kinn" der Spielzeug-Maschine in gelb
    chin = plt.Rectangle((2.7, 0.1), 4, 1.2, linewidth=2, edgecolor="black", facecolor="yellow")
    ax.add_patch(chin)

def eyes(ax):
    rec1 = plt.Rectangle((2.7, 7.78), 4, 1.2, linewidth=2, facecolor="yellow")
    rec2 = plt.Rectangle((4.35, 7.9647), 1, 1.5, linewidth=2, facecolor="yellow")
    
    eye1 = plt.Circle((3.9, 8.95), 1, facecolor="yellow", edgecolor="black", linewidth=1.5)
    eye2 = plt.Circle((5.6, 8.95), 1, facecolor="yellow", edgecolor="black", linewidth=1.5)
    
    iris1 = plt.Circle((3.9,8.8),0.6, facecolor='orange', edgecolor='black', linewidth=1.5)
    iris2 = plt.Circle((5.6,8.8),0.6, facecolor='orange', edgecolor='black', linewidth=1.5)
    
    blue_eye1 = plt.Circle((3.9, 8.8), 0.5, facecolor="skyblue", edgecolor="black", linewidth=1.5)
    blue_eye2 = plt.Circle((5.6, 8.8), 0.5, facecolor="skyblue", edgecolor="black", linewidth=1.5)
    
    pupille1 = plt.Circle((4.07, 8.67), 0.22, facecolor="white", edgecolor="black", linewidth=1.5)
    pupille2 = plt.Circle((5.43, 8.67), 0.22, facecolor="white", edgecolor="black", linewidth=1.5)
    
    inner_pupille1 = plt.Circle((4.09, 8.77), 0.125, facecolor="black", edgecolor="black", linewidth=1.5)
    inner_pupille2 = plt.Circle((5.41, 8.77), 0.125, facecolor="black", edgecolor="black", linewidth=1.5)

    ax.add_patch(eye1)
    ax.add_patch(eye2)
    
    ax.add_patch(rec1)
    ax.add_patch(rec2)
    
    ax.add_patch(iris1)
    ax.add_patch(iris2)
    
    ax.add_patch(blue_eye1)
    ax.add_patch(blue_eye2)
    
    ax.add_patch(pupille1)
    ax.add_patch(pupille2)
    
    ax.add_patch(inner_pupille1)
    ax.add_patch(inner_pupille2)

# Zeichnet den Hebel der Spielzeug-Maschine entsprechend seines übergebenen Zustandes
def lever(ax, state='off'):
    slot = plt.Rectangle((1.43, 4.5), 0.15, 0.5, linewidth=1.5, edgecolor="black", facecolor="black")
    box = plt.Rectangle((1.28, 4.3), 0.45, 0.9, linewidth=1.5, edgecolor="black")

    # Dem Zustand entspr. wird der Hebel gezeichnet: bei 'on' unten und bei 'off' oben
    if state == 'off':
        lever_pole = plt.Rectangle((1.445, 4.8), 0.12, 0.7, linewidth=1.5, edgecolor="black", facecolor="red")
        red_light = plt.Circle((1.5, 5.5), 0.19, facecolor="red", edgecolor="black", linewidth=1.5)
    elif state == 'on':
        lever_pole = plt.Rectangle((1.445, 4.1), 0.12, 0.7, linewidth=1.5, edgecolor="black", facecolor="red")
        red_light = plt.Circle((1.5, 4.2), 0.19, facecolor="red", edgecolor="black", linewidth=1.5)
        
    ax.add_patch(box)
    
    ax.add_patch(slot)
    ax.add_patch(lever_pole)
    ax.add_patch(red_light)