import tkinter as tk
from tkinter import ttk, colorchooser
import random

class DrawApp:
    def __init__(self, root):
        self.root = root
        self.root.title("多功能技能画图板")
        self.root.geometry("900x600")

        self.pen_color = "black"
        self.pen_size = 2
        self.bg_color = "white"
        self.last_x = None
        self.last_y = None

        # 顶部栏
        top = tk.Frame(root)
        top.pack(fill="x", padx=5, pady=5)

        # 模式选择
        self.mode = tk.StringVar(value="现代版")
        modes = ["科技版", "原始版", "现代版", "彩色版", "极简版", "免费版"]
        tk.OptionMenu(top, self.mode, *modes, command=self.switch_mode).pack(side="left", padx=5)

        # 技能按钮
        self.skill_btn = ttk.Button(top, text="释放技能", command=self.use_skill)
        self.skill_btn.pack(side="left", padx=5)

        ttk.Button(top, text="颜色", command=self.choose_color).pack(side="left", padx=3)
        ttk.Button(top, text="清除", command=self.clear).pack(side="left", padx=3)

        # 画布
        self.canvas = tk.Canvas(root, bg=self.bg_color, cursor="pencil")
        self.canvas.pack(fill="both", expand=True, padx=5, pady=5)

        # 鼠标事件
        self.canvas.bind("<B1-Motion>", self.draw)
        self.canvas.bind("<ButtonRelease-1>", self.reset)

        # 初始模式
        self.switch_mode("现代版")

    def draw(self, e):
        if self.last_x and self.last_y:
            self.canvas.create_line(
                self.last_x, self.last_y, e.x, e.y,
                fill=self.pen_color, width=self.pen_size, capstyle="round"
            )
        self.last_x = e.x
        self.last_y = e.y

    def reset(self, e):
        self.last_x = None
        self.last_y = None

    def choose_color(self):
        c = colorchooser.askcolor()[1]
        if c:
            self.pen_color = c

    def clear(self):
        self.canvas.delete("all")

    def switch_mode(self, m):
        self.mode.set(m)
        if m == "科技版":
            self.bg_color = "#0a1028"
            self.pen_color = "#00ffff"
            self.pen_size = 2
            self.canvas.config(bg=self.bg_color, cursor="cross")
            self.skill_btn.config(text="闪电连线")

        elif m == "原始版":
            self.bg_color = "#e9d8b8"
            self.pen_color = "#4b3621"
            self.pen_size = 5
            self.canvas.config(bg=self.bg_color, cursor="dot")
            self.skill_btn.config(text="岩石涂鸦")

        elif m == "现代版":
            self.bg_color = "#f7f7f7"
            self.pen_color = "#222222"
            self.pen_size = 2
            self.canvas.config(bg=self.bg_color, cursor="pencil")
            self.skill_btn.config(text="平滑线条")

        elif m == "彩色版":
            self.bg_color = "white"
            self.pen_color = "red"
            self.pen_size = 4
            self.canvas.config(bg=self.bg_color, cursor="pencil")
            self.skill_btn.config(text="随机彩虹")

        elif m == "极简版":
            self.bg_color = "white"
            self.pen_color = "black"
            self.pen_size = 1
            self.canvas.config(bg=self.bg_color, cursor="pencil")
            self.skill_btn.config(text="细线描边")

        elif m == "免费版":
            self.bg_color = "#f0f0f0"
            self.pen_color = "#666666"
            self.pen_size = 3
            self.canvas.config(bg=self.bg_color, cursor="pencil")
            self.skill_btn.config(text="随机点点")

    def use_skill(self):
        mode = self.mode.get()
        w = self.canvas.winfo_width()
        h = self.canvas.winfo_height()

        if mode == "科技版":
            # 闪电连线
            for i in range(10):
                x1 = random.randint(0, w)
                y1 = random.randint(0, h)
                x2 = random.randint(0, w)
                y2 = random.randint(0, h)
                self.canvas.create_line(x1, y1, x2, y2, fill="#00ffff", width=1)

        elif mode == "原始版":
            # 岩石涂鸦
            for i in range(50):
                x = random.randint(0, w)
                y = random.randint(0, h)
                r = random.randint(3, 12)
                self.canvas.create_oval(x-r, y-r, x+r, y+r, fill="#8b4513", outline="")

        elif mode == "现代版":
            # 平滑线条
            self.canvas.create_line(
                50, h//2, w-50, h//2,
                fill=self.pen_color, width=4, smooth=True
            )

        elif mode == "彩色版":
            # 随机彩虹
            colors = ["red","green","blue","yellow","purple","orange","pink"]
            for i in range(30):
                x = random.randint(0, w)
                y = random.randint(0, h)
                c = random.choice(colors)
                self.canvas.create_text(x, y, text="●", fill=c, font=("", 12))

        elif mode == "极简版":
            # 细线网格
            for i in range(0, w, 40):
                self.canvas.create_line(i, 0, i, h, fill="black", width=1)
            for i in range(0, h, 40):
                self.canvas.create_line(0, i, w, i, fill="black", width=1)

        elif mode == "免费版":
            # 随机点点
            for i in range(100):
                x = random.randint(0, w)
                y = random.randint(0, h)
                self.canvas.create_rectangle(x, y, x+3, y+3, fill="#666")

if __name__ == "__main__":
    root = tk.Tk()
    app = DrawApp(root)
    root.mainloop()