Python es uno de los lenguajes de programación más populares y versátiles en la actualidad. Su éxito radica en su simplicidad y legibilidad, convirtiéndolo en una opción ideal para aquellos que se inician en la programación. A pesar de la diversidad de plataformas y herramientas disponibles, es esencial tener un sólido entendimiento de los conceptos fundamentales de Python. Además, Python es un lenguaje de programación multiparadigma, lo que significa que puedes utilizar diferentes estilos de programación para resolver problemas, lo que añade a su flexibilidad y poder. El objetivo de este proyecto es presentarte el mundo de Python mediante un juego sencillo y entretenido.
- Duración del proyecto: Se estima que este proyecto tomará de 1 a 2 sprints.
- Debe implementarse en Python. Las únicas dependencias externas que se pueden utilizar son pytest para pruebas unitarias.
- El juego se llevará a cabo en el terminal. Las pruebas se pueden ejecutar en el terminal o en su IDE (VSCode es más que adecuada).
- Se utilizará un número aleatorio entre 1 y 100 como número secreto.
- La jugadora y el ordenador se turnarán para adivinar el número.
- Después de cada turno, se mostrarán información sobre la suposición realizada.
- El juego terminará cuando se adivine el número. Se mostrará una lista de todas las tentativas de la jugadora ganadora.
El juego se llevará a cabo en la terminal usando Python. La lógica del juego se basará en estructuras de control, incluyendo bucles, condicionales y colecciones. Es necesario dividir el código y mejorar su legibilidad y mantenimiento. Se debe utilizar una funcionalidad de la biblioteca de utilidades de Python para la generación de números aleatorios. Se deben realizar pruebas unitarias para sus clases y métodos utilizando PyTest y simulación de generación de números aleatorios con unittest.mock.
A continuación, te dejamos algunos hitos como sugerencia para que construyas tu proyecto.
El primer paso es configurar tu entorno de desarrollo. Para este proyecto, necesitarás Python 3 y un editor de texto o un entorno de desarrollo integrado (IDE).
-
Instala Python 3 si aún no lo tienes. Puedes descargarlo desde el sitio oficial de Python.
-
Elige un editor de texto o un IDE. Algunas opciones populares son PyCharm, Visual Studio Code, o Sublime Text.
-
Configura tu editor o IDE para usar Python 3.
A continuación, crearás un script de Python simple para asegurarte de que tu configuración funciona correctamente.
- Crea un nuevo archivo llamado
main.py
. - Ejecuta
main.py
.
Ahora que tienes un entorno de desarrollo de Python funcionando, puedes empezar a implementar el juego.
-
Genera un número aleatorio entre 1 y 100. Puedes usar la función
randint
en el módulorandom
para hacer esto. -
Implementa un bucle que solicite a la jugadora que adivine el número. Usa la función
input
para obtener la entrada de la jugadora. -
Compara la entrada de la jugadora con el número secreto. Si la jugadora adivina correctamente, termina el juego. Si la jugadora adivina incorrectamente, proporciona una pista sobre si el número secreto es mayor o menor que la entrada de la jugadora.
-
Implementa la lógica para el turno del ordenador. El ordenador puede hacer una suposición aleatoria, o puedes implementar alguna estrategia para que sus suposiciones sean más inteligentes.
-
Continúa el juego hasta que la jugadora o el ordenador adivinen correctamente el número.
-
Añade pruebas unitarias para tu código. Python tiene un módulo incorporado llamado
unittest
que puedes usar para esto.
- Generación de números aleatorios en Python
- Bucles en Python
- La función input en Python
- Comparaciones en Python
- Pruebas unitarias en Python con unittest
Una vez que tengas una versión básica del juego funcionando, puedes hacer mejoras.
-
Lleva un registro de las suposiciones de la jugadora y del ordenador. Cuando el juego termine, muestra todas las suposiciones que hizo la jugadora ganadora.
-
Añade una opción para jugar de nuevo. Cuando el juego termine, pregunta a la jugadora si quiere jugar de nuevo.
-
Añade comentarios a tu código para explicar qué hace cada parte. Esto hará que tu código sea más fácil de entender y mantener.
Una vez que hayas implementado el juego básico y hecho algunas mejoras, puedes llevar las cosas al siguiente nivel creando una "inteligencia" para jugar contra la computadora. Esta "inteligencia" podría ser simplemente otra implementación del juego que utiliza una estrategia diferente, o podría ser un algoritmo de aprendizaje automático que mejora con cada juego que juega.
-
Implementa una nueva versión del juego que utiliza una estrategia diferente. Por ejemplo, en lugar de adivinar al azar, esta versión podría intentar adivinar el número más probable basándose en las suposiciones anteriores.
-
Prueba tu nueva "inteligencia" jugando contra la computadora. ¿Puedes ganarle a la computadora con tu nueva estrategia?
-
Si te sientes ambicioso, podrías intentar implementar un algoritmo de aprendizaje automático. Este algoritmo podría aprender de cada juego que juega, mejorando sus suposiciones con cada juego. Podrías usar una biblioteca de aprendizaje automático como scikit-learn para hacer esto.
-
Asegúrate de añadir pruebas unitarias para tu nueva "inteligencia". También podrías querer añadir algunas métricas para rastrear cómo mejora tu algoritmo con cada juego que juega.
Una vez que hayas implementado y perfeccionado la versión base del juego, es posible que desees considerar la posibilidad de reescribirlo utilizando el paradigma de la Programación Orientada a Objetos (OOP). Esta sería una ampliación (no un requisito) que te permitiría familiarizarte con los objetivos de aprendizaje de la programación orientada a objetos. Quizás te resulte útil si tus futuros proyectos en Python involucran el uso de frameworks que se basan en este paradigma. Por ejemplo, algunas herramientas como los ORM (mapeadores objeto-relacional) que se encuentran en el mundo de Python están diseñadas para funcionar con la programación orientada a objetos.
-
Crea una clase
Game
que represente una instancia del juego. Esta clase puede tener métodos comostart
,play_turn
,check_guess
, yend_game
. -
Crea una clase
Player
que represente a una jugadora. Esta clase puede tener atributos comoname
yguesses
, y métodos comomake_guess
. -
Crea una subclase
ComputerPlayer
que herede de la clasePlayer
. Esta clase puede sobrescribir el métodomake_guess
para implementar la lógica de adivinación del ordenador. -
En la clase
Game
, usa instancias de las clasesPlayer
yComputerPlayer
para representar a la jugadora y al ordenador. -
Añade pruebas unitarias para tus clases y métodos. Python tiene un módulo incorporado llamado
unittest
que puedes usar para esto.