import tkinter as tk
import math
import random

root = tk.Tk()
root.title("🎡 离谱大转盘")
root.geometry("420x480")
root.resizable(False, False)

# ========== 脑洞奖品 ==========
prizes = [
    "数学作业免写券📝",
    "老师喊你一声宝贝😘",
    "同桌请你喝奶茶🧋",
    "全班一起唱儿歌🎤",
    "获得隐身斗篷一天🧥",
    "班主任微笑点头卡😊",
    "放学提前五分钟⏰",
    "随机抽一位同学替你跑操🏃"
]

colors = [
    "#FF6B6B", "#FFD93D", "#6BCB77",
    "#4D96FF", "#FF9A3C", "#C780FA",
    "#36D1DC", "#F368E0"
]

angle_per_item = 360 / len(prizes)
is_spinning = False
current_angle = 0
speed = 0

canvas_size = 340
center = canvas_size // 2
radius = 150

# ========== 画转盘 ==========
canvas = tk.Canvas(root, width=canvas_size, height=canvas_size, bg="#f5f5f5", highlightthickness=0)
canvas.pack(pady=10)


def draw_wheel(angle_offset=0):
    canvas.delete("wheel")
    for i, prize in enumerate(prizes):
        start = angle_offset + i * angle_per_item
        extent = angle_per_item
        canvas.create_arc(
            20, 20, canvas_size - 20, canvas_size - 20,
            start=start, extent=extent,
            fill=colors[i], outline="white", width=2,
            tags="wheel"
        )
        # 文字（自动换行）
        text_angle = math.radians(start + extent / 2)
        tx = center + (radius - 50) * math.cos(text_angle)
        ty = center - (radius - 50) * math.sin(text_angle)

        # 简单换行
        if len(prize) > 7:
            parts = [prize[:7], prize[7:]]
        else:
            parts = [prize]

        for j, part in enumerate(parts):
            canvas.create_text(
                tx, ty + j * 16,
                text=part,
                font=("Microsoft YaHei", 9, "bold"),
                fill="white",
                tags="wheel"
            )

    # 中心圆
    canvas.create_oval(
        center - 20, center - 20,
        center + 20, center + 20,
        fill="#333", outline="#222", width=3,
        tags="wheel"
    )
    # 指针
    canvas.create_polygon(
        center, 25,
        center - 12, 55,
        center + 12, 55,
        fill="#FF4757", outline="#B33939", width=2,
        tags="wheel"
    )


draw_wheel()

# ========== 结果 ==========
result_var = tk.StringVar(value="点击「开始抽奖」，看看今天欧气如何！")
tk.Label(root, textvariable=result_var, font=("Microsoft YaHei", 12, "bold"), fg="#d32f2f", wraplength=360).pack(pady=5)


# ========== 旋转逻辑 ==========
def spin():
    global is_spinning, speed, current_angle
    if is_spinning:
        return
    is_spinning = True
    result_var.set("转盘转动中...")
    speed = random.uniform(25, 35)

    def animate():
        global current_angle, speed, is_spinning
        if speed > 0.2:
            speed *= 0.97
            current_angle = (current_angle + speed) % 360
            draw_wheel(current_angle)
            root.after(20, animate)
        else:
            is_spinning = False
            pointer_angle = (360 - current_angle + 90) % 360
            idx = int(pointer_angle // angle_per_item)
            prize = prizes[idx]
            result_var.set(f"🎉 恭喜你抽中：{prize}")

    animate()


# ========== 按钮 ==========
btn_frame = tk.Frame(root)
btn_frame.pack(pady=10)
tk.Button(
    btn_frame, text="🎰 开始抽奖",
    font=("Microsoft YaHei", 12, "bold"),
    bg="#FF6B6B", fg="white",
    width=12, height=2,
    cursor="hand2",
    command=spin
).pack()

tk.Label(
    root, text="指针指到的位置即为中奖结果",
    font=("Microsoft YaHei", 9), fg="#888"
).pack(pady=5)

root.mainloop()