DALL·E 2025-03-01 20.11.37 - A colorful and dynamic banner image in a retro pixel-art style inspired by classic RPG games. The image features a vibrant blue and yellow gradient ba

Haz un Juego de Pokemon con Python, Google Colab y IA, paso a paso

He creado un minijuego interactivo llamado Pokémon Quiz. La idea surge para combinar mi afición por los clásicos Pokémon con un poco de programación en Python, y lo he hecho todo en Google Colab. No es nada del otro mundo, pero es una excelente oportunidad para experimentar y aprender. Además, contar con la ayuda de ChatGPT facilita la organización de ideas y la estructuración del código, permitiéndome concentrarme en lo divertido.

🔧 Herramientas Utilizadas

Para armar Pokémon Quiz, me apoyé en varias herramientas y bibliotecas que me ayudaron a que todo funcionara:

  • Python🐍: El lenguaje de programación que utilicé para escribir el código del juego.
  • Google Colab💻: El entorno en línea donde probé y compartí mi cuaderno interactivo.
  • ipywidgets🎛️: Estos widgets hicieron posible crear una interfaz gráfica sencilla y divertida.
  • Matplotlib📊: Me permitió mostrar imágenes y gráficos, como la silueta de los Pokémon.
  • Pillow (PIL)🖼️: Con esta biblioteca, pude procesar las imágenes, descargarlas y generar las famosas siluetas.
  • PokeAPI🔗: La fuente de los sprites oficiales de Pokémon, para que el juego tuviera ese toque auténtico.

🎨Diseño y Estilo visual

Quería que el juego no solo funcionara bien, sino que también se sintiera auténtico y evocador de esos viejos tiempos. Por eso, me decidí por:

  • Tipografía Retro: Usé la fuente «Press Start 2P« de Google Fonts, perfecta para darle ese aire clásico.
  • Fondos y Colores: Elegí un fondo degradado en tonos amarillos y azules, muy en la onda de Pokémon, y añadí contenedores semitransparentes para que los elementos destacaran.
  • Interfaz Amigable: Desde la pantalla de inicio con el botón “PLAY” hasta la selección de la generación de Pokémon, cada parte fue diseñada para que el usuario se sienta cómodo y, sobre todo, se divierta.

🏗️ ¿Cómo Lo Hice?

El proceso de desarrollo se fue armando paso a paso, y aquí te lo cuento de forma sencilla:

  1. Organización del Proyecto: Empecé creando un cuaderno en Google Colab, donde separé el código en secciones: una para importar las bibliotecas, otra para definir los estilos CSS, y otras para las funciones y la lógica principal del juego. Esto me ayudó a mantener todo ordenado.
  2. Preparación de Funciones y Datos: Desarrollé funciones para descargar imágenes, convertirlas al formato adecuado para los widgets y generar las siluetas de los Pokémon. También definí diccionarios con las URLs de sprites de las diferentes generaciones (Gen 1 a Gen 5), lo que hizo que agregar nuevos Pokémon fuera muy sencillo.
  3. Creación de la Interfaz: Utilicé ipywidgets para montar cada pantalla del juego:
    • Una pantalla splash con el título y un botón “PLAY”.
    • Una pantalla de selección de generación para elegir el grupo de Pokémon.
    • La pantalla del juego, donde se muestra la silueta y se ofrecen opciones de respuesta.
    • Y una pantalla de resumen que muestra tu puntaje y detalles de cada ronda.
  4. Ajustes y Pruebas: No todo salió perfecto a la primera. Hubo momentos en que los botones no se comportaban como esperaba o las opciones no se actualizaban bien. Con varias pruebas en Colab y algunos consejos de ChatGPT, fui afinando cada detalle para que la experiencia fuera lo más fluida posible.

    💡Ejemplo de Prompt a ChatGPT:
    "El juego ya funciona, pero necesito un último ajuste: que toda la experiencia mantenga un estilo visual unificado con una estética inspirada en Pokémon. Quiero que se sienta como un videojuego, por lo que al iniciar, aparezca una pantalla con un botón 'PLAY' y, al hacer clic en él, comience el juego. ¿Puedes implementar estos cambios para lograr esa coherencia desde el inicio hasta el final?"
  5. Como resultado, ChatGPT me devolvió este código donde se crean para que el juego se vea como se muestran en las capturas anteriores asegurando un estilo coherente y atractivo:
<!-- Inyectamos CSS personalizado para lograr una estética inspirada en Pokémon -->
display(HTML('''
<style>
@import url('https://fonts.googleapis.com/css2?family=Press+Start+2P&display=swap');

body {
  background: linear-gradient(135deg, #FFCB05, #3D7DCA);
  font-family: 'Press Start 2P', cursive;
  color: #FFF;
  margin: 0;
  padding: 0;
  min-height: 100vh; /* Asegura que el cuerpo ocupe toda la altura de la ventana */
}
.main-container {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  width: 100%;
  min-height: 100vh;
  padding: 20px;
}
/* Estilo para el splash con fondo y bordes */
.splash {
  border: 5px solid #3D7DCA;
  border-radius: 20px;
  background-color: rgba(255,203,5,0.8);
  width: 600px;
  height: 400px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
}

/* Clase para el título Pokémon Quiz */
.pokemon-quiz-title {
  font-family: 'Press Start 2P', cursive;
  font-size: 36px;
  color: #3D7DCA;
  text-shadow: 2px 2px #FFCB05;
}

/* Clase para el botón PLAY con tipografía retro */
.play-button {
  background-color: #3D7DCA;
  border: none;
  border-radius: 10px;
  width: 150px;
  height: 60px;
  color: #FFCB05;
  font-family: 'Press Start 2P', cursive;
  font-size: 20px;
  cursor: pointer;
}

/* Clase para la sección de selección de generación */
.gen-selection-container {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 100%; /* Ocupa todo el ancho de la pantalla */
  margin: 20px 0; /* Añade un margen arriba y abajo */
}

/* Estilos para el dropdown de generaciones */
.widget-dropdown select {
  font-family: 'Press Start 2P', cursive !important;
  font-size: 16px !important; /* Aumenta el tamaño de la fuente */
  background-color: #3D7DCA !important; /* Fondo azul */
  color: #FFCB05 !important; /* Texto amarillo */
  border: 2px solid #FFCB05 !important; /* Borde amarillo */
  border-radius: 10px !important; /* Bordes redondeados */
  padding: 5px !important; /* Relleno interno */
  width: auto !important;
  appearance: none; /* Elimina el estilo por defecto del dropdown */
  -webkit-appearance: none; /* Safari y Chrome */
  -moz-appearance: none; /* Firefox */
  cursor: pointer; /* Cambia el cursor a "pointer" */
}

/* Estilos para el botón "Iniciar Juego" */
.start-button-style{
    background-color: #3D7DCA;
    border: none;
    border-radius: 10px;
    width: 150px;
    height: 40px;
    color: #FFCB05;
    font-family: 'Press Start 2P', cursive;
    font-size: 14px;
    cursor: pointer;
}

/* Se asegura que todos los demás botones utilicen la tipografía retro */
.widget-button {
  font-family: 'Press Start 2P', cursive !important;
  font-size: 14px !important;
}

/* Estilo para imágenes decorativas si se necesitan */
.decor-image {
  width: 100px;
  height: auto;
  margin: 0 20px;
}

/* Ajustes para los dropdown*/
.widget-dropdown .dropdown-label {
    font-family: 'Press Start 2P', cursive;
}
.widget-dropdown .dropdown-options {
    font-family: 'Press Start 2P', cursive;
}
/* Estilos para las opciones del dropdown */
.widget-dropdown select option {
  background-color: #3D7DCA !important; /* Fondo azul */
  color: #FFCB05 !important; /* Texto amarillo */
  font-family: 'Press Start 2P', cursive !important; /* Tipografía retro */
  font-size: 14px !important; /* Tamaño de fuente */
  border: 2px solid #FFCB05 !important; /* Borde amarillo */
  border-radius: 10px !important;
}
</style>
<script>
  // Este script de JavaScript es para intentar modificar el comportamiento del dropdown
  // Esto es necesario porque no podemos acceder a todos los elementos del dropdown con CSS
  // y tenemos que usar JavaScript para cambiar su comportamiento.
  // Se inyecta JavaScript para que se ejecute en el navegador del cliente.

  // Esperar a que el DOM (Document Object Model) esté completamente cargado
  window.addEventListener('DOMContentLoaded', (event) => {
    // Buscar todos los elementos <select> (dropdowns) en la página
    document.querySelectorAll('select').forEach(select => {
      // Añadir un event listener para el evento 'focus' (cuando el dropdown se abre)
      select.addEventListener('focus', () => {
        // Aumentar el z-index (capa) del dropdown para que se muestre encima de otros elementos
        select.style.zIndex = '100'; // Ajusta este valor si tienes otros elementos con z-index alto
      });

      // Añadir un event listener para el evento 'blur' (cuando el dropdown se cierra)
      select.addEventListener('blur', () => {
        // Restaurar el z-index del dropdown a su valor normal
        select.style.zIndex = 'auto';
      });
    });
  });
</script>
'''))
  

🎯 Conclusión

Pokémon Quiz es el resultado de poner en práctica ideas y herramientas que, aunque sencillas, se combinaron para crear algo entretenido y nostálgico. No se trata solo de código, sino de disfrutar el proceso, aprender de los errores y experimentar con la creatividad.

Si te animas a darle un vistazo o incluso a probar y modificar el código, ¡adelante! Cada cambio es una oportunidad para aprender y divertirse.

🚀¡Pruébalo tú mismo!

¿Te gustaría experimentar con el código?

👉Haz clic aquí para abrir el cuaderno en Google Colab y probar el juego Pokémon Quiz.

Chatgpt o1 vs DeepSeek R1 para Estudiantes batalla

⚔️ Deepseek R1 vs ChatGPT O1 para Estudiantes

En el mundo de la inteligencia artificial aplicada a la educación, dos nombres destacan por su capacidad para ayudar a los estudiantes: DeepSeek-R1 y ChatGPT-o1. En esta comparativa, exploramos sus fortalezas y debilidades para que puedas elegir la herramienta que mejor se adapte a tus necesidades académicas, ya sea para resolver problemas matemáticos, redactar ensayos o aprender algo nuevo.

DeepSeek-R1 se presenta como una opción práctica para estudiantes, ofreciendo precisión y velocidad en respuestas técnicas, ideales para materias como matemáticas, física y programación. Además, es 100% gratuito, lo que lo convierte en una opción accesible.

Por otro lado, ChatGPT-o1, desarrollado por OpenAI, es reconocido por su versatilidad y creatividad, integrando servicios adicionales como DALL-E para generar imágenes. Aunque sus respuestas pueden ser más detalladas, su versión de pago puede ser un obstáculo para algunos estudiantes.

1. Precisión y Velocidad

DeepSeek-R1

  • 📌Precisión: Diseñado para ofrecer respuestas técnicas precisas, ideal para materias como matemáticas, física y programación.
  • ⚡Velocidad: Respuestas casi instantáneas, aunque en ocasiones el servidor puede mostrar el mensaje: «The server is busy. Please try again later.»
  • Ejemplo: Para resolver una integral compleja, DeepSeek-R1 te ofrece la respuesta correcta en segundos y sin rodeos.

ChatGPT-o1

  • 📌Precisión: Ofrece respuestas detalladas, superando en algunos casos a DeepSeek-R1 en programación y explicaciones técnicas.
  • ⚡Velocidad: Rápido, aunque su desempeño puede variar según la carga del servidor.
  • Ejemplo: Para la misma integral, ChatGPT-01 brinda una explicación detallada, con pasos adicionales y ejemplos.

2. Facilidad y Ejemplo de Uso

DeepSeek-R1

  • Interfaz: Simple y directa, perfecta para respuestas rápidas.
Interfaz DeepSeek

Ejemplo

  • 💡Prompt: «Vale, necesito crear un formulario para añadir vehículos que recoja la matrícula, la marca y el modelo de cada vehículo.»
Ejemplo DeepSeek
Paso1
Paso 2 y 3
Paso 4
Información de la lógica
Resultado
Formulario Vehiculo

ChatGPT-o1

  • Interfaz: Intuitiva y fácil de usar, aunque con más opciones disponibles.
Interfaz ChatGPT

Ejemplo

  • 💡Prompt: «Ahora quiero que cuando le de a desaparcar se me abra un pequeño formulario simulando el metodo de pago basandote en la tarifa del parking «
Promt ChatGPT
Paso 2
Paso 3
Paso 4
Resultado
Resultado Pago Targeta

3. Costo y Accesibilidad

DeepSeek-R1

  • 💲Costo: Completamente gratuito, ideal para estudiantes.
  • ✅Accesibilidad: Sin necesidad de suscripción o configuraciones adicionales.

ChatGPT-o1

  • 💲Costo: Requiere una suscripción (ChatGPT Plus) para acceder a todas las funciones.
  • ✅Accesibilidad: La versión gratuita es limitada en comparación con la de pago.
Plan ChatGPT Plus

4. Servicios Adicionales

DeepSeek-R1

  • Enfoque: Centrado exclusivamente en el chat, lo que lo hace sencillo y directo.
  • Ventaja: Perfecto para estudiantes que solo necesitan respuestas textuales sin funciones adicionales.

ChatGPT-o1

  • Enfoque: Multifuncional, integrando servicios como DALL-E, Sora, opciones de audio y múltiples plugins.
  • Ventaja: Ideal para quienes buscan generar contenido visual, trabajar con audio o integrar herramientas adicionales.
Dall-E

5. Comparación de Uso

A continuación, se muestra el prompt exacto utilizado en ambas IAs y un breve video demostrativo:

💡Prompt Utilizado:

“Necesito que diseñes un diagrama UML de clases completo, utilizando notación UML estándar, basado en el contenido del siguiente enunciado del proyecto. El proyecto consiste en desarrollar una aplicación web para gestionar la bolsa de trabajo del instituto (CFGS DAW 2024-2025).

Requisitos y detalles a tener en cuenta:

  • Gestión de la bolsa de trabajo con actores: empresas y estudiantes.
  • Funcionalidades para el registro y gestión de empresas, ofertas de empleo, candidaturas, incidencias, noticias y ofertas externas.
  • Operaciones administrativas y de mantenimiento, incluyendo control de incidencias y notificaciones vía email.
  • Base de datos no relacional (MongoDB) con esquemas/documentos representativos.
  • El diagrama debe incluir clases, atributos, métodos y relaciones (herencia, asociación, composición).

Propósito: Base para la implementación del proyecto.”

Video Demostrativo

Conclusión Final: ¿Quién Gana?

🏆 DeepSeek-R1 

Es la mejor opción para estudiantes por dos razones clave:

  • Es 100% gratis, algo crítico para un público joven que no siempre puede pagar suscripciones.
  • Ofrece la misma calidad en respuestas académicas que ChatGPT-01 (matemáticas, física, programación, etc.).

ChatGPT-o1

Vale la pena si:

  • Necesitas funciones premium (DALL-E, plugins, audio).
  • Tienes presupuesto para pagar una suscripción mensual.
UKRAINE - 2021/04/27: In this photo illustration, silhouette of hands in medical gloves hold a medical syringe and a vial in front of Pfizer,Biontech,AstraZeneca,Moderna,Johnson & johnson,Novavax,Merck and Janssen logos. (Photo Illustration by Pavlo Gonchar/SOPA Images/LightRocket via Getty Images)

El Secreto Mejor Guardado de Big Pharma: ¿Cómo la IA Está Revolucionando la Industria Farmacéutica?

La Inteligencia Artificial está transformando la industria farmacéutica, acelerando el descubrimiento de medicamentos, personalizando tratamientos y optimizando procesos. En este artículo exploramos cómo gigantes como AstraZeneca, Pfizer y Johnson & Johnson están liderando esta revolución tecnológica que promete cambiar para siempre la forma en que tratamos las enfermedades. ¡Descubre el futuro de la medicina impulsado por IA!

descargar

ChatGPT: Tu Compañero en Bachillerato

¿Sabías que una herramienta como ChatGPT puede facilitarte la vida académica en el bachillerato? Desde crear ejercicios personalizados y resolver problemas paso a paso, hasta ayudarte con ensayos, idiomas y planificación de estudios. En este artículo, te contamos cómo aprovechar al máximo sus funciones para destacar y reducir el estrés.

image1

Comparativa de Bolt y Lovable: ¿Cuál es la mejor herramienta de IA para desarrollar aplicaciones en poco tiempo?

Desarrollar una aplicación web funcional y atractiva en un solo día es un desafío significativo, especialmente para satisfacer las expectativas de los usuarios. En este caso, el objetivo era crear una app que permitiera a los fanáticos de Pokémon demostrar sus habilidades nombrando la mayor cantidad de Pokémon posible. Para acelerar el proceso de desarrollo, se recurrió a dos herramientas prometedoras que trabajan con inteligencia artificial: Bolt y Lovable. Ante la dificultad de elegir entre ambas, se optó por desarrollar la misma aplicación en las dos plataformas para compararlas en términos de eficiencia, funcionalidad, y experiencia de usuario. Este análisis explora las ventajas, limitaciones y diferencias entre ambas herramientas, evaluando su desempeño en la creación de un proyecto completo en poco tiempo.

Explorando Bolt: Potencia y flexibilidad para el desarrollo ágil

La experiencia con Bolt resultó sorprendente desde el principio. Con un solo prompt, la herramienta fue capaz de crear la estructura completa del proyecto y generar una aplicación inicial que cumplía con la mayoría de las características indicadas, todo en cuestión de segundos. Además, ofreció una previsualización funcional del sistema, lo que permitió evaluar el resultado de inmediato. Para realizar cambios, solo era necesario describirlos en un nuevo prompt, y Bolt se encargaba de modificar o crear los archivos necesarios para implementarlos. Aunque la versión inicial no fue perfecta, superó ampliamente las expectativas, y las opciones para realizar cambios masivos, revertir modificaciones y editar manualmente el código brindaron una flexibilidad destacable.

Entre las desventajas observadas, Bolt reescribía los archivos completos al realizar cambios, lo que dificultaba identificar qué partes habían sido modificadas. En algunas ocasiones, no lograba resolver problemas específicos sin afectar otras partes del sistema, lo que requirió intervención manual en un par de ocasiones. Durante la integración con una base de datos en Supabase, Bolt gestionó la conexión de manera rápida y eficiente, pero al agregar funciones de inicio de sesión, reescribió el archivo principal sin conservar su funcionalidad previa, lo que complicó su uso inicial. Sin embargo, tras ajustar varios prompts, se logró que Bolt mantuviera el código existente al implementar nuevas funcionalidades. Finalmente, el despliegue de la aplicación fue rápido y sencillo, con un sistema configurado en cuestión de segundos por el propio sistema de Bolt.

Desarrollo con Bolt

Lovable: Intuición y precisión en la creación de proyectos

La experiencia con Lovable fue igualmente sorprendente desde el inicio. Con un solo prompt, la herramienta generó un proyecto completo y funcional en menos de un minuto, lo que permitió visualizar de inmediato el progreso del desarrollo. Una de las características más destacadas de Lovable es su capacidad para mostrar los cambios específicos realizados en cada archivo, haciendo evidente qué partes del código se modifican. Sin embargo, esta herramienta no permite editar el código directamente, ya que cualquier modificación manual debe realizarse conectando el proyecto a GitHub. A pesar de esta limitación, Lovable ofrece flexibilidad al implementar cambios masivos, creando y editando múltiples archivos según las funcionalidades requeridas. Además, la opción de revertir cambios está presente y organizada en una pestaña de historial, lo que facilita la gestión del proyecto.

En cuanto a la integración con bases de datos, Lovable también logró conectar el proyecto a Supabase de manera automática y rápida, aunque fue necesario ingresar manualmente a Supabase para crear la base de datos requerida. Al implementar un sistema de inicio de sesión, Lovable adaptó el código satisfactoriamente y, a pesar de que al principio surgieron problemas relacionados con la creación de usuarios, la IA detectó los errores y los resolvió de forma autónoma. Una vez completado el desarrollo, Lovable desplegó la aplicación sin mayores inconvenientes y de forma rápida.

Desarrollo con Lovable

Comparando Bolt y Lovable: Dos enfoques para un mismo desafío

Ambas herramientas, Bolt y Lovable, comparten una interfaz y funcionalidad muy similares, destacándose por su capacidad de generar proyectos completos y manipular archivos con rapidez y coherencia. Ambas integran de manera nativa los servicios de Supabase, permitiendo establecer conexiones con bases de datos en cuestión de segundos, y ofrecen la posibilidad de desplegar proyectos desarrollados casi instantáneamente. Estas características hacen que ambas sean opciones destacadas para desarrolladores que buscan soluciones eficientes y automáticas en la creación de aplicaciones.

Sin embargo, existen diferencias clave en cómo manejan y presentan la información al usuario. El proyecto inicial generado por ambas a partir del mismo prompt fue casi idéntico en características y funcionalidades, aunque Lovable mostró un diseño distintivo en la apariencia de la aplicación, mientras que Bolt optó por un diseño minimalista pero igualmente efectivo. En cuanto al manejo del código, Lovable edita y destaca únicamente las secciones que modifica, facilitando el seguimiento de los cambios, mientras que Bolt reescribe por completo los archivos, dificultando este proceso. No obstante, Bolt permite la edición manual del código directamente desde la herramienta, una opción que Lovable no ofrece y que reduce la facilidad de personalización por parte del desarrollador. Respecto a la reversión de cambios, Lovable organiza esta funcionalidad en una pestaña de historial dedicada, ofreciendo mayor claridad, mientras que Bolt permite revertir cambios directamente desde los prompts ejecutados, priorizando la agilidad en la ejecución de estas acciones.

Comparativa inicio de la aplicación
Comparativa uso de la aplicación

El futuro del desarrollo: IA al servicio de la programación

En conclusión, herramientas como Bolt y Lovable representan un avance significativo en el mundo del desarrollo de software, democratizando el acceso a la creación de aplicaciones funcionales mediante el uso de inteligencia artificial. Su capacidad para generar proyectos completos, realizar cambios masivos en el código y desplegar aplicaciones en cuestión de segundos redefine la eficiencia y accesibilidad en el desarrollo. A medida que estas tecnologías siguen evolucionando, es previsible que integren una comprensión aún más precisa de los requerimientos del usuario, capacidades de personalización más avanzadas y una colaboración más fluida con otras plataformas. Esto no solo acelerará los tiempos de desarrollo, sino que también permitirá a desarrolladores y equipos enfocarse en la creatividad y resolución de problemas complejos, dejando las tareas repetitivas y técnicas en manos de sistemas cada vez más inteligentes y autónomos.

¡Prueba la aplicación!

Pokémon Guesser en Bolt: https://cheerful-pastelito-e134dc.netlify.app/

Usuario de prueba: demo_user

Contraseña de prueba: password123

Pokémon Guesser en Lovable: https://guess-the-pok.lovable.app/

Correo de prueba: demo.user@gmail.com

Contraseña de prueba: password123

¡También puedes crear tu propio usuario en ambas plataformas!


Autor: Paul Paredes Pincay