import tkinter as tk #gui模块 主要共功能是创建窗口
from tkinter import messagebox
from PIL import Image, ImageTk
import os
import random
import pygame

# 初始化 pygame 播放器
pygame.mixer.init()

# 宠物信息（名字 + 描述 + 图像路径 + 声音路径）
pets = {
    "fire": {
        "name": "小火星",
        "desc": "热情似火的小精灵，像火焰一样跳跃，能照亮黑暗的角落！",
        "image": "./images/fire_pet.png",
        "sound": "./sounds/fire.mp3"
    },
    "water": {
        "name": "小水灵",
        "desc": "爱在水中嬉戏的小可爱，总能带来清凉和欢乐的气息！",
        "image": "./images/water_pet.png",
        "sound": "./sounds/water.mp3"
    },
    "thunder": {
        "name": "小电闪",
        "desc": "全身带电的小家伙，跑得飞快，一不小心就“嗞啦”一下！",
        "image": "./images/thunder_pet.png",
        "sound": "./sounds/thunder.mp3"
    },
    "wind": {
        "name": "小风灵",
        "desc": "像风一样自由自在，轻盈地守护着大家，还会吹走烦恼哦！",
        "image": "./images/wind_pet.png",
        "sound": "./sounds/wind.mp3"
    },
    "earth": {
        "name": "小土地",
        "desc": "稳重又强壮的大地守护者，是伙伴们最坚实的后盾！",
        "image": "./images/earth_pet.png",
        "sound": "./sounds/earth.mp3"
    },
    "dark": {
        "name": "小黑星",
        "desc": "神秘的黑夜精灵，能在安静中保护大家不受惊吓！",
        "image": "./images/dark_pet.png",
        "sound": "./sounds/dark.mp3"
    },
    "light": {
        "name": "小光星",
        "desc": "闪闪发光的光明使者，总能把温暖和希望带给大家！",
        "image": "./images/light_pet.png",
        "sound": "./sounds/light.mp3"
    },
}


# 创建主窗口
root = tk.Tk()
root.title("魔法宠物生成器")
root.geometry("400x500")
root.config(bg="lightyellow")

# 标题标签
title_label = tk.Label(root, text="🎉 你的魔法宠物诞生啦！", font=("Arial", 16, "bold"), bg="lightyellow")
title_label.pack(pady=10)

# 图像显示标签
image_label = tk.Label(root, bg="lightyellow")
image_label.pack(pady=10)

# 宠物介绍标签
info_label = tk.Label(root, text="", font=("Arial", 12), wraplength=300, justify="center", bg="lightyellow")
info_label.pack(pady=10)

# 保存照片引用（避免垃圾回收）
current_photo = None

# 生成宠物的函数
def generate_pet():
    global current_photo
    pet_type = random.choice(list(pets.keys()))
    pet = pets[pet_type]

    # 显示宠物描述
    info_label.config(text=f"名字：{pet['name']}\n\n介绍：{pet['desc']}")

    # 加载并显示图像（使用 Pillow）
    img_path = pet['image']
    if os.path.exists(img_path):
        img = Image.open(img_path).convert("RGB")
        img = img.resize((200, 200))
        photo = ImageTk.PhotoImage(img)
        image_label.config(image=photo)
        current_photo = photo  # 避免图像被回收
    else:
        image_label.config(image='')

    # 播放声音
    sound_path = pet['sound']
    if os.path.exists(sound_path):
        pygame.mixer.music.load(sound_path)
        pygame.mixer.music.play()

# 按钮
generate_button = tk.Button(root, text="🎲 生成魔法宠物", font=("Arial", 14), command=generate_pet, bg="skyblue")
generate_button.pack(pady=20)

# 启动主循环
root.mainloop()
