import turtle
import math

# 配置画笔
t = turtle.Turtle()
t.speed(0)
t.hideturtle()
screen = turtle.Screen()
screen.setup(800, 600)

# 公式数据库
FORMULAS = [
    {
        "name": "圆的面积与周长",
        "formula": "面积 S = πr² \n周长 C = 2πr",
        "desc": "r 是半径，π ≈ 3.14159",
        "draw": "circle"
    },
    {
        "name": "勾股定理",
        "formula": "a² + b² = c²",
        "desc": "直角三角形中，两直角边的平方和等于斜边的平方。",
        "draw": "triangle"
    },
    {
        "name": "正方形面积",
        "formula": "S = a²",
        "desc": "a 是正方形的边长。",
        "draw": "square"
    },
    {
        "name": "矩形面积",
        "formula": "S = width × height",
        "desc": "长乘以宽等于面积。",
        "draw": "rect"
    }
]

current_idx = 0

def draw_shape(shape):
    """根据公式类型绘制图形"""
    t.clear()
    t.penup()
    t.goto(-200, 50)
    t.pensize(3)
    t.color("#2c3e50")
    t.pendown()
    
    if shape == "circle":
        t.penup(); t.goto(-200, -50); t.pendown()
        t.circle(80)
        t.penup(); t.goto(-200, 30); t.pendown(); t.goto(-120, 30) # 画半径
        t.write(" r", font=("Arial", 14))
        
    elif shape == "triangle":
        t.goto(-200, -100); t.goto(-50, -100); t.goto(-200, 50); t.goto(-200, -100)
        t.penup(); t.goto(-220, -30); t.write("a"); t.goto(-130, -120); t.write("b"); t.goto(-110, -20); t.write("c")
        
    elif shape == "square":
        for _ in range(4):
            t.forward(120); t.left(90)
        t.penup(); t.goto(-140, -30); t.write("a")
        
    elif shape == "rect":
        for _ in range(2):
            t.forward(160); t.left(90); t.forward(100); t.left(90)
        t.penup(); t.goto(-120, -30); t.write("width"); t.goto(-240, 0); t.write("height")

def show_info():
    """显示文字信息"""
    data = FORMULAS[current_idx]
    
    # 画图形
    draw_shape(data["draw"])
    
    # 写标题
    t.penup()
    t.color("#e74c3c")
    t.goto(50, 150)
    t.write(data["name"], font=("微软雅黑", 24, "bold"))
    
    # 写公式
    t.color("#2980b9")
    t.goto(50, 60)
    t.write(data["formula"], font=("Consolas", 20, "bold"))
    
    # 写描述
    t.color("#34495e")
    t.goto(50, -20)
    t.write(data["desc"], font=("微软雅黑", 14))
    
    # 操作提示
    t.goto(0, -250)
    t.color("gray")
    t.write(f"第 {current_idx+1}/{len(FORMULAS)} 页 - 点击屏幕切换下一条", align="center", font=("微软雅黑", 12))

def next_page(x, y):
    global current_idx
    current_idx = (current_idx + 1) % len(FORMULAS)
    show_info()

# 初始化显示
show_info()

# 绑定点击事件
screen.onclick(next_page)
turtle.done()