import tkinter as tk
import random
import math

# 主窗口
root = tk.Tk()
root.title("🎡 终极豪华转盘抽奖")
root.geometry("550x620")
root.resizable(False, False)
root.configure(bg="#0F172A")

# 奖品列表 + 对应概率（数值越小越难中）
prizes = [
    "一等奖",
    "二等奖",
    "三等奖",
    "幸运红包",
    "精美礼品",
    "再来一次",
    "优惠券",
    "谢谢参与"
]
# 概率权重
weights = [2, 5, 8, 15, 20, 20, 20, 30]

color_list = [
    "#D32F2F", "#388E3C", "#1976D2",
    "#8E24AA", "#F57C00", "#0097A7",
    "#689F38", "#757575"
]

# 转盘中心、半径
cx = 275
cy = 250
r = 190

angle = 0
speed = 0
running = False
can_click = True

# 画布
cv = tk.Canvas(root, width=550, height=500, bg="#0F172A", highlightthickness=0)
cv.pack()

# 画豪华金色围墙
def draw_wall():
    # 最外层金边
    cv.create_oval(cx-r-35, cy-r-35, cx+r+35, cy+r+35,
                   fill="#B8860B", outline="#FFD700", width=8)
    # 内层围墙阴影
    cv.create_oval(cx-r-22, cy-r-22, cx+r+22, cy+r+22,
                   fill="#1E293B", outline="#B8860B", width=4)

# 绘制转盘
def draw_wheel():
    cv.delete("wheel")
    n = len(prizes)
    per_angle = 360 / n

    for i in range(n):
        start = i * per_angle + angle
        end = start + per_angle
        # 扇形区块
        cv.create_arc(cx-r, cy-r, cx+r, cy+r,
                     start=start, extent=per_angle,
                     fill=color_list[i], outline="#FFFFFF", width=2, tags="wheel")
        # 奖品文字
        rad = math.radians(start + per_angle / 2)
        tx = cx + r * 0.62 * math.cos(rad)
        ty = cy + r * 0.62 * math.sin(rad)
        cv.create_text(tx, ty, text=prizes[i],
                       font=("微软雅黑", 11, "bold"), fill="white", tags="wheel")
    # 内环金色装饰
    cv.create_oval(cx-45, cy-45, cx+45, cy+45,
                   fill="#FFD700", outline="#B8860B", width=3, tags="wheel")
    # 中心水晶圆钮
    cv.create_oval(cx-22, cy-22, cx+22, cy+22,
                   fill="#F5F5F5", outline="#999999", width=4, tags="wheel")
    # 固定红色指针
    cv.create_polygon(cx, cy-r-20, cx-20, cy-r+15, cx+20, cy-r+15,
                      fill="#E53935", outline="#FFEB3B", width=2)

# 旋转动画 + 阻尼减速
def rotate_loop():
    global angle, speed, running
    if not running:
        return
    # 持续加角度
    angle += speed
    # 阻尼减速
    speed *= 0.97
    if speed < 0.3:
        speed = 0.3
    # 重绘
    cv.delete("all")
    draw_wall()
    draw_wheel()
    root.after(20, rotate_loop)

# 按概率随机选奖品
def rand_prize():
    return random.choices(prizes, weights=weights)[0]

# 开始抽奖
def start_lottery():
    global running, can_click, speed
    if running or not can_click:
        return
    can_click = False
    running = True
    speed = 12   # 初始转速
    result_label.config(text="🎰 抽奖进行中...", fg="#FFD700")
    rotate_loop()
    # 3.5秒后停止
    root.after(3500, stop_lottery)

# 停止并开奖
def stop_lottery():
    global running, can_click
    running = False
    prize = rand_prize()
    result_label.config(text=f"🎉 恭喜幸运抽中：{prize}", fg="#4ADE80")
    can_click = True

# 初始绘制界面
draw_wall()
draw_wheel()

# 开始按钮
btn = tk.Button(root, text="🎯 立即抽奖",
                font=("微软雅黑", 17, "bold"),
                width=20, height=2,
                bg="#E53935", fg="white",
                relief=tk.RIDGE, bd=3,
                command=start_lottery)
btn.pack(pady=20)

# 中奖结果文字
result_label = tk.Label(root, text="",
                        font=("微软雅黑", 22, "bold"),
                        bg="#0F172A")
result_label.pack(pady=10)

root.mainloop()