import turtle

# ========== 窗口设置 ==========
screen = turtle.Screen()
screen.setup(820, 620)
screen.bgcolor("#F4F7FC")
screen.title("灯光与衣服颜色互动")
screen.tracer(0)

pen = turtle.Turtle()
pen.hideturtle()
pen.speed(0)
pen.penup()

# ========== 状态 ==========
current_light = "white"  # white / red / green

# ========== 工具函数 ==========
def draw_rect(x, y, w, h, fill_color):
    pen.goto(x, y)
    pen.color("black", fill_color)
    pen.begin_fill()
    pen.pendown()
    for _ in range(2):
        pen.forward(w)
        pen.right(90)
        pen.forward(h)
        pen.right(90)
    pen.end_fill()
    pen.penup()

def draw_circle(x, y, r, fill_color):
    pen.goto(x, y - r)
    pen.color("black", fill_color)
    pen.begin_fill()
    pen.pendown()
    pen.circle(r)
    pen.end_fill()
    pen.penup()

def write_text(x, y, text, color="black", size=18):
    pen.goto(x, y)
    pen.color(color)
    pen.write(text, align="center", font=("微软雅黑", size, "normal"))

# ========== 绘制灯 ==========
def draw_lamp(light_color):
    # 灯座
    draw_rect(-350, 100, 40, 60, "gray")

    # 灯泡
    draw_circle(-330, 160, 25, light_color)

    # 光线
    pen.color(light_color)
    pen.width(3)
    for dy in (-40, 0, 40):
        pen.goto(-305, 160 + dy)
        pen.pendown()
        pen.goto(-150, 160 + dy)
        pen.penup()

# ========== 绘制小人 ==========
def draw_person(light):
    # 头
    draw_circle(150, 120, 30, "#FFE0C0")

    # 上衣颜色
    if light == "white":
        shirt = "white"
    elif light == "red":
        shirt = "red"
    else:  # green
        shirt = "#00AA00"

    # 裙子颜色
    if light == "white":
        skirt = "green"
    elif light == "red":
        skirt = "black"
    else:  # green
        skirt = "green"

    # 上衣
    draw_rect(120, 80, 60, 50, shirt)

    # 裙子
    draw_rect(120, 20, 60, 60, skirt)

    # 手
    draw_rect(110, 60, 10, 40, "#FFE0C0")
    draw_rect(180, 60, 10, 40, "#FFE0C0")

    # 腿
    draw_rect(130, -40, 10, 40, "#FFE0C0")
    draw_rect(160, -40, 10, 40, "#FFE0C0")

# ========== 主绘制函数 ==========
def draw_scene():
    pen.clear()

    # 标题
    if current_light == "white":
        title = "现在的灯光：白光"
        light_color = "white"
    elif current_light == "red":
        title = "现在的灯光：红光"
        light_color = "red"
    else:
        title = "现在的灯光：绿光"
        light_color = "#00FF00"

    write_text(0, 260, title, "black", 20)

    draw_lamp(light_color)
    draw_person(current_light)

    screen.update()

# ========== 按键事件 ==========
def set_white():
    global current_light
    current_light = "white"
    draw_scene()

def set_red():
    global current_light
    current_light = "red"
    draw_scene()

def set_green():
    global current_light
    current_light = "green"
    draw_scene()

screen.listen()
screen.onkey(set_white, "1")
screen.onkey(set_red, "2")
screen.onkey(set_green, "3")

# ========== 初始画面 ==========
draw_scene()

turtle.done()