
Mascota virtual
- AGR
- Electrónica , Programación
- 01 Jun, 2025
🐾 Proyecto: Mascota Virtual en Escritorio con Python
Este proyecto te guiará paso a paso para crear una mascota virtual que se mueva por tu pantalla de Windows y muestre mensajes motivadores como una nube de diálogo. ¡Ideal para programadores que quieren compañía en el escritorio!
🧰 Requisitos
🖥️ Software necesario
- Python 3.10 o superior (descárgalo desde: https://www.python.org/downloads/)
- Sistema operativo Windows
📦 Instalación de librerías
Abre una terminal o CMD en Windows y ejecuta:
pip install pillow pywin32
📁 Estructura del Proyecto
Organiza tus archivos de la siguiente manera:
virtual_pet/
│
├── pet.py # Código principal de la mascota
├── assets/
│ └── mascota.png # Imagen de tu mascota (PNG con fondo transparente)
Asegúrate de que mascota.png tenga fondo transparente y esté en la carpeta assets/.
Usa una imagen de tamaño entre 100x100px y 200x200px para un mejor resultado.
🧠 Código principal (pet.py)
import tkinter as tk
from PIL import Image, ImageTk
import random
# Crear ventana sin bordes
root = tk.Tk()
root.overrideredirect(True)
root.attributes("-topmost", True) # Siempre encima
root.wm_attributes("-transparentcolor", "white") # Hace blanco completamente transparente
# Cargar imagen de mascota
img = Image.open("assets/mascota.png").resize((150, 150))
mascota = ImageTk.PhotoImage(img)
# Crear canvas con fondo blanco (será transparente)
canvas = tk.Canvas(root, width=150, height=150, bg='white', highlightthickness=0)
canvas.pack()
canvas.create_image(0, 0, anchor='nw', image=mascota)
# Posición inicial de la mascota
x, y = 100, 100
root.geometry(f"+{x}+{y}")
# Función para mover la mascota aleatoriamente
def mover_mascota():
global x, y
dx = random.choice([-10, 0, 10])
dy = random.choice([-10, 0, 10])
x = max(0, min(root.winfo_screenwidth() - 150, x + dx))
y = max(0, min(root.winfo_screenheight() - 150, y + dy))
root.geometry(f"+{x}+{y}")
root.after(1000, mover_mascota)
# Mostrar mensaje como bocadillo
def mostrar_mensaje(mensaje):
msg = tk.Toplevel()
msg.overrideredirect(True)
msg.attributes("-topmost", True)
msg.configure(bg="white")
label = tk.Label(msg, text=mensaje, bg="white", fg="black", font=("Arial", 10), padx=10, pady=5)
label.pack()
msg.geometry(f"+{x + 160}+{y + 20}")
msg.after(3000, msg.destroy)
# Mensajes motivacionales periódicos
def mostrar_mensajes_periodicamente():
frases = ["¡Vamos!", "No olvides tomar agua 💧", "Sigue adelante 💪", "¡Estás haciendo un gran trabajo!"]
mostrar_mensaje(random.choice(frases))
root.after(10000, mostrar_mensajes_periodicamente)
# Iniciar funciones
mover_mascota()
mostrar_mensajes_periodicamente()
# Ejecutar
root.mainloop()
▶️ Ejecutar el proyecto
Abre una terminal dentro de la carpeta virtual_pet y escribe:
python pet.py