diff --git a/README.md b/README.md
index 91ab44d..a06dfc9 100644
--- a/README.md
+++ b/README.md
@@ -1,107 +1,50 @@
# Adivina el Número - Guess the Number
-## Índice
-
-- [1. Resumen del Proyecto](#1-resumen-del-proyecto)
-- [2. Consideraciones Generales](#2-consideraciones-generales)
-- [3. Objetivos de Aprendizaje](#3-objetivos-de-aprendizaje)
-
----
-
-![GUESS THE
-NUMBER](https://firebasestorage.googleapis.com/v0/b/laboratoria-945ea.appspot.com/o/guess-the-number.png?alt=media)
-
## 1. Resumen del Proyecto
_Guess The Number_ es un juego interactivo que se desarrolla en el terminal,
donde la jugadora y el ordenador se turnan para intentar adivinar un número
aleatorio entre 1 y 100. Deben tener en cuenta la tentativa anterior, si fue
"muy alta" o "muy baja".
-
![Demostración animada de sesión de juego](https://firebasestorage.googleapis.com/v0/b/laboratoria-945ea.appspot.com/o/guess-the-number-demo.gif?alt=media)
-## 2. Consideraciones Generales
-
-- Este proyecto debe desarrollarse de manera **individual**.
-- La estimación de tiempo para completar el proyecto es de 1 a 2 Sprints.
-- Concéntrate en adquirir conocimientos en lugar de simplemente "terminar" el
- proyecto.
-- Ten paciencia. No te preocupes demasiado por lo que aún no entiendes
- completamente.
-- Tu aprendizaje se desarrollará a medida que progreses.
-
-### **Criterios de Aceptación Mínimos del Proyecto**
-
-- La jugadora y el ordenador se turnarán en turnos para intentar adivinar el
- número.
-- Después de cada tentativa, se debe mostrar:
- * El nombre del jugador (persona o computadora).
- * La suposición realizada.
- * Un mensaje indicando si la suposición fue muy alta, muy baja o correcta.
-- El juego terminará tan pronto como la jugadora o el ordenador adivine el
- número secreto. Debe mostrarse un mensaje de fin de juego, así como una lista
- de todas las tentativas realizadas por la jugadora ganadora.
-
-**_¡Diviértete construyendo tu juego de adivinanza de números! 🎲🎮_**
-
-- [Versión en Python](./docs/README-python.md)
-- [Versión en Java](./docs/README-java.md)
-- [Versión en C#](./docs/README-csharp.md)
-
-## 3. Objetivos de Aprendizaje
-
-
-Reflexiona y luego marca los objetivos que has llegado a entender y aplicar en tu proyecto. Piensa en eso al decidir tu estrategia de trabajo.
-
-### Java
-
-- [ ] **Modificadores de acesso (public, private, protected)**
-
-- [ ] **Uso de condicionales**
-
-- [ ] **Uso de bucles (Loops)**
-
-#### Tipos de data
-
-- [ ] **Datos primitivos vs no primitivos**
-
-- [ ] **Cadenas**
-
-- [ ] **Arreglos**
-
-#### Colecciones
-
-- [ ] **ArrayList**
-
-#### Testing
-
-- [ ] **JUnit**
-
-- [ ] **Mockito**
-
-### Programación Orientada a Objetos (OOP)
-
-- [ ] **Clases**
-
-- [ ] **Objetos**
-
-- [ ] **Métodos**
-- [ ] **Atributos**
+**Elementos del juego**
-- [ ] **Constructores**
+- player 1
+- Computadora
+- Numero aleatorio con random
+- Random que virifca y guarda dos numeros para crear el limite de consulta segun el Rango que computadora indique
-- [ ] **Encapsulamiento**
+**En este proyecto trabaje todo desde una solo archivo Python ya que lo veo mas practico, la distribucion fue la siguiente:**
+- Main.py : en este archivo cree la importacion de dos librerias una llamada random y la otra llamada time (manejo y usos se los dejare abajo)
+- El objetivo principal era crear una variable Random que creara un numero aleatorio para que pueda ser adivinado.
+- Llegamos a la creacion de una funcion llamada **Comparation_result** con su argumento **consult**,
+este esta verifica si el numero que generamos en random es mayor o menor.
-- [ ] **Abstracción**
+**Ìngresamos al area del** **Ciclo o Bucle**
+ - En el bucle verificamos con un input el ingreso del valor de uno de los jugadores **player** una vez tengamos el numero de **player**
+ lo comparamos con :
+ - Numero correcto.
+ - Numero mernor.
+ - Numero mayor.
+ **Creamos una variable llamada **computadora_numero** donde con un random genera su numero para ser comparado y lograr la interaccion de player y "computadora"**
+ donde dicho numero es tambien verificado con:
+ - Numero correcto.
+ - Numero mernor.
+ - Numero mayor.
+ **En este while utilizamos la declaracion break para romper el ciclo y no crear ciclos infinitos o con errores que dificulten el proceso del while.**
-- [ ] **Composición**
+**Utilizo la funcion **time.sleep(1)** para pausar la ejecucion 1 segundo , esto lo hago para tener una mejor experiencia en el juego.**
-- [ ] **Interfaces**
+**Ingresando al modo Hacker**
+- en esta seccion transformamos la interaccion de **computadora_numero** con la creacion de un random.randint(MIN_NUM, MAX_NUM) que guarde el ultimo valor de dicha variable bien sea por arriba o por abajo del numero random principal, esto genera un nuevo rango con el cual aseguramos que **computadora_numero** tenga una "ventaja" y aseguremos menor rango de numeros repetidos.
-- [ ] **Herencia (super, extends, override)**
+ Links de Consulta
-- [ ] **Lenguaje de Modelado Unificado (UML, class diagrams)**
+ * [MSTest V2 - GitHub](https://github.com/microsoft/testfx?tab=readme-ov-file)
+ * [Prueba unitaria de C# con MSTest y .NET](https://learn.microsoft.com/es-es/dotnet/core/testing/unit-testing-with-mstest)
+
### Python
@@ -384,20 +327,4 @@ Reflexiona y luego marca los objetivos que has llegado a entender y aplicar en t
* [Prueba unitaria de C# con MSTest y .NET](https://learn.microsoft.com/es-es/dotnet/core/testing/unit-testing-with-mstest)
-### Control de Versiones (Git y GitHub)
-
-#### Git
-
-- [ ] **Git: Instalación y configuración**
-
-- [ ] **Git: Control de versiones con git (init, clone, add, commit, status, push, pull, remote)**
-
-- [ ] **Git: Integración de cambios entre ramas (branch, checkout, fetch, merge, reset, rebase, tag)**
-
-#### GitHub
-
-- [ ] **GitHub: Creación de cuenta y repos, configuración de llaves SSH**
-
-- [ ] **GitHub: Colaboración en Github (branches | forks | pull requests | code review | tags)**
-- [ ] **GitHub: Organización en Github (projects | issues | labels | milestones | releases)**
diff --git a/docs/FAQ-java.md b/docs/FAQ-java.md
deleted file mode 100644
index fbf8a77..0000000
--- a/docs/FAQ-java.md
+++ /dev/null
@@ -1,28 +0,0 @@
-# FAQ - Java (preguntas frecuentes)
-
-- ¿Cómo puedo instalar lo necesario para comensar?
-
- Puedes consultar la siguiente
- [Guía sobre Java setup](https://github.com/Laboratoria/java-setup)
-
-- ¿Cómo puedo aprender los conceptos básicos de POO?
-
- Puedes consultar la siguiente
- [Guía sobre Programación orienta a objectos](https://github.com/Laboratoria/java-oop)
-
-- ¿Cómo puedo crear una aplicación en Java?
-
- Puedes consultar el siguiente video en
- [IntelliJ](https://www.youtube.com/watch?v=VcvJBeYxVto) o [vscode](https://www.youtube.com/watch?v=cnQ9O9zX4ls)
-
-- Primeros pasos para crear el primer test
-
- Puedes consultar el siguiente video en
- [del primer test en IntelliJ](https://www.youtube.com/watch?v=8VtSNVwyHg4)
- o [del primer test en vscode](https://www.youtube.com/watch?v=8Jgw4Ne4Qqg)
-
-- Primeros pasos para crear el primer mock
-
- Puedes consultar el siguiente video en
- [del primer mock en IntelliJ](https://www.youtube.com/watch?v=xiMOETNNk3w)
- o [del primer mock en vscode](https://www.youtube.com/watch?v=YNJGfM_ztCo)
diff --git a/docs/README-csharp.md b/docs/README-csharp.md
deleted file mode 100644
index 2d55f3c..0000000
--- a/docs/README-csharp.md
+++ /dev/null
@@ -1,419 +0,0 @@
-# C# 💻
-
-## 1. Preámbulo
-
-En el corazón de la programación moderna, C# se erige como un pilar fundamental,
-combinando potencia, elegancia y versatilidad. Diseñado por Microsoft como parte
-de su plataforma .NET, C# ha evolucionado para ser mucho más que el lenguaje de
-elección para aplicaciones de Windows; se ha convertido en una herramienta indispensable
-para desarrollar aplicaciones web, móviles y de escritorio en un espectro amplio
-de dominios.
-El proyecto "Guess the Number", no solo es una presentación
-del universo de C#, es también una guía por los principios esenciales de la
-programación orientada a objetos y el manejo de los principios básicos de este
-lenguaje.
-Prepárate para embarcarte en una aventura que te llevará desde los
-fundamentos hasta los aspectos más interesantes de la programación en C#, todo ello
-mientras construyes un juego que desafiará tu ingenio.
-
-## 2. Consideraciones Generales
-
-Antes de sumergirnos en el código y la lógica detrás de "Guess the Number",
-es crucial establecer algunas consideraciones generales para garantizar una
-experiencia de aprendizaje fluida y efectiva:
-
-- **Conocimientos previos**:
-Aunque este proyecto está dirigido a principiantes en C#,
-se recomienda tener una comprensión básica de conceptos de programación como variables,
-bucles y condiciones. Esto facilitará el seguimiento de las explicaciones
-y la implementación del juego.
-
-- **Experimentación activa**:
-Te animamos a experimentar con el código más allá
-de las instrucciones y ejemplos proporcionados. Modificar y jugar con el código
-es una de las mejores maneras de aprender y consolidar tus habilidades de programación.
-
-- **Paciencia y persistencia**:
-**_El tiempo estimado para desarrollar este proyecto es de 2 sprints_**.
-Es normal enfrentarse a errores y desafíos.
-Tómate tu tiempo, practica y no dudes en buscar ayuda cuando la necesites.
-
-## 3. Consideraciones Técnicas
-
-Para garantizar el éxito de este proyecto, es importante prestar atención
-a las siguientes consideraciones técnicas:
-
-- **Versión de .NET**: Este proyecto se basa en .NET 5.0 o superior.
-Asegúrate de tener instalada la versión correcta del SDK de .NET para poder
-compilar y ejecutar el juego sin problemas.
-
-- **Estructura del proyecto**: El proyecto "Guess The Number" se organiza en una
-estructura de proyecto simple, con una clase principal que contiene
-el flujo lógico del juego. Familiarizarte con la estructura del proyecto
-te ayudará a entender mejor cómo funciona el código y cómo puedes expandirlo o modificarlo.
-
-- **Documentación y Comentarios**: Mantén tu código bien documentado
-y comenta las secciones complejas o importantes.
-Esto no solo te ayudará a ti y a otros a entender el código,
-sino que también es una práctica recomendada en el desarrollo de software.
-
-- **Otros aspectos importantes**:
-
- + _Ambiente_: Tu proyecto se debe poder ejecutar desde la terminal
-(_inicia por crear un proyecto de consola_).
-
- + _Organización_: tu código debe estár dividido para facilidad de mantenimiento.
-
- + _Aleatoriedad_: Debes utilizar `new Random()` para generar números aleatorios.
-
- + _Pruebas Unitarias_: Debes realizar pruebas unitarias para validar tus funciones.
-
-## 4. Hitos del Proyecto
-
-Para hacer este proceso de aprendizaje más manejable y gratificante,
-hemos dividido el proyecto en hitos claramente definidos.
-Cada hito representa un paso crucial en la construcción del juego,
-permitiéndote enfocarte en tareas específicas,
-comprender mejor cada componente del proyecto y,
-lo más importante, celebrar tus logros a medida que avanzas.
-
-Estos hitos están diseñados no solo para guiarte a través del desarrollo
-del juego, sino también para proporcionarte oportunidades de experimentación
-y personalización. A continuación, presentaremos cada hito,
-explicando su objetivo, los conceptos clave que cubrirá y
-sugerencias para explorar más allá de los requisitos básicos.
-
-Te animamos a abordar estos hitos con curiosidad y creatividad,
-adaptando el proyecto a tus intereses y
-desafiándote a ti misma para aprender más en cada paso.
-
-### Hito 1: Configuración del Entorno de Desarrollo
-
-#### Objetivos
-
-- Instalar el .NET SDK y un IDE (Visual Studio Code o Visual Studio).
-- Familiarizarse con el entorno de desarrollo y las herramientas básicas.
-- Crear un proyecto de consola en C# y ejecutar un programa simple ("Hola Mundo").
-
-#### Recursos
-
-- Guías para iniciar:
-
- + [Tutorial: Creación de una aplicación de consola de .NET con Visual Studio Code](https://learn.microsoft.com/es-es/dotnet/core/tutorials/with-visual-studio-code?pivots=dotnet-8-0)
- + [Tutorial de .NET: Hola mundo en 5 minutos](https://dotnet.microsoft.com/es-es/learn/dotnet/hello-world-tutorial/intro)
- + [Aprende C#](https://youtu.be/axHut2e84fc?si=AJcTUEMfxKnPSTC3)
- + [C# Desde Cero: Primeros Pasos](https://youtu.be/L-f8u0hwi4Y?si=q0UD721sVsvuF-xs)
-
-### Hito 2: Estructuras de Control y Entrada/Salida
-
-#### Objetivos
-
-- Familiarizarse con las estructuras de control básicas en C#
-(`if`, `else`, `while`, `for`).
-- Aprender a leer la entrada del usuario y mostrar mensajes en la consola.
-
-#### Desafío
-
-Desarrollar un programa que solicite al usuario adivinar un número fijo,
-indicando después si su elección es correcta, demasiado alta o demasiado baja.
-
-Para esto, tu proyecto debe contar con 2 clases: `Program` y `Game`
-(recuerda que las clases se deben ubicar en 2 archivos distintos),
-la clase `Game` implementará un método con las siguientes responsabilidades:
-
- 1. Genera un número aleatorio entre 1 y 100.
- 2. Implementa un bucle que solicite a la jugadora que adivine el número.
- 3. Compara la entrada de la jugadora con el número secreto.
- Si la jugadora adivina correctamente, termina el juego.
- Si la jugadora no adivina el número, proporciona una pista sobre si el número
- secreto es mayor o menor que la entrada de la jugadora.
-
-La clase `Program` será la encargada de dar la bienvenida a la jugadora e inicializar
-el juego (_ejecutar alguna función de la clase `Game`_).
-
-#### Recursos
-
-- Documentación sobre estructuras de control en C#:
-
- + [Selection Statements](https://learn.microsoft.com/es-es/dotnet/csharp/language-reference/statements/selection-statements)
- + [Tutorial: Estructuras de control en C#](https://www.youtube.com/watch?v=VBf3nEinpfA&list=PLU8oAlHdN5BmpIQGDSHo5e1r4ZYWQ8m4B&index=14&ab_channel=pildorasinformaticas)
- + [Generar números aleatorios con C#](https://www.discoduroderoer.es/generar-numeros-aleatorios-con-c-sharp/)
-
-- Tutoriales sobre cómo usar `Console.ReadLine()` y `Console.WriteLine()`
- para la entrada/salida de datos:
-
- + [Console.ReadLine Method](https://learn.microsoft.com/es-es/dotnet/api/system.console.readline?view=net-8.0)
- + [Console.WriteLine Method](https://learn.microsoft.com/en-us/dotnet/api/system.console.writeline?view=net-8.0)
- + [Salto de linea en c#](https://es.stackoverflow.com/questions/247356/salto-de-linea-en-c)
-
-#### Para profundizar
-
-- Operadores de comparación: [Comparison Operators](https://learn.microsoft.com/es-es/dotnet/csharp/language-reference/operators/comparison-operators)
-- convertir en número: [Convert.ToInt32](https://learn.microsoft.com/es-es/dotnet/api/system.convert.toint32?view=net-8.0)
-
-### Hito 3: Clases y Objetos
-
-#### Objetivos
-
-- Comprender y aplicar el uso de clases y objetos en C#.
-- Introducir el concepto de campos (atributos) y métodos en una clase.
-
-#### Desafío
-
-Desarrollar clases en C# que encapsulen la funcionalidad requerida para jugar.
-Debes agregar una clase extra a lo que ya has logrado hasta este punto.
-Tu proyecto debe incluir:
-
-Una clase `Player`, que debe encapsular las características y acciones que una
-jugadora puede realizar durante una partida.
-
-- Características de la clase Player:
-
-1. Propiedad que almacena el nombre.
-2. Propiedad que almacena el último intento realizado por la jugadora.
-3. Constructor que inicializa el último intento en cero y el nombre según
-el valor con el que fue instanciado.
-4. Método que se encarga de hacer la predicción(`MakeGuess()`)
-solicitando por terminal un número y validando que sea correcto.
-
-Una clase `Game` que gestione la lógica del juego,
-como iniciar una nueva partida, generar el número secreto y determinar
-el resultado de los intentos del jugador.
-
-- Características de la clase Game:
-
-1. Propiedad que almacena un número aleatorio.
-2. Propiedad que almacena una instancia de Jugadora (propiedad de tipo `Player`).
-3. Constructor que inicializa su número aleatorio y
-crea un nuevo objeto de tipo Player. Este constructor se inicializa
-con un nombre, que despues será utilizado para el constructor de `Player`.
-4. Al método existente, se le agrega la responsabilidad de instanciar él
-comportamiento de la jugadora,
-(es decir de ejecutar la función `Player.MakeGuess()`,
-en caso de que no lograra adivinar el número en su último intento.
-Si la jugadora logra adivinarlo, filnalizar el juego.
-
-Tu clase `Program` mantiene la responsabilidad de inicializar el juego,
-es decir, dentro de su método `Main` debes instanciar a la clase
-`Game` y ejecutar su método para iniciar el juego.
-
-#### Recursos
-
-- Documentación sobre clases y objetos en C#:
-
- + [Classes and Objects in C#](https://learn.microsoft.com/es-es/dotnet/csharp/fundamentals/tutorials/classes)
- + [programación orientada a objetos con C#](https://desarrolloweb.com/articulos/clases-objetos-c-sharp)
-
-#### Para profundizar
-
-- Modificadores de acceso: [Access Modifiers](https://learn.microsoft.com/es-es/dotnet/csharp/language-reference/keywords/access-modifiers)
-- Interpolación de cadenas: [String interpolation](https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/tokens/interpolated)
-
-### Hito 4: Encapsulamiento y Métodos de Clase
-
-#### Objetivos
-
-- Aplicar el principio de encapsulamiento
-para proteger el estado interno de la clase `Game`.
-- Crear métodos específicos para manejar las funcionalidades del juego.
-
-#### Desafío
-
-Refactorizar el código del juego para que la lógica interna del juego
-esté oculta y accesible solo a través de métodos públicos de la clase `Game`.
-
-- Características de la clase Game:
-
-1. Sus propiedades ahora deben ser privadas.
-2. Agrega un método privado que nos va a permitir generar un número aleatorio (`RandomNumberGenerator()`).
-3. Agrega un método privado que nos va a permitir validar la predicción
-(`CheckGuess(int guess, int targetNumber)`).
-4. Ahora los únicos métodos públicos son el constructor y
-el método para inicializar el juego.
-
-- Características de la clase Player:
-
-1. La propiedad que almacena el último intento ahora es privada.
-2. La propiedad de Nombre es pública.
-3. Agregaremos un método público que nos permita consultar el último intento (`GetLastGuess()`).
-4. El método constructor y el encargado de gestionar la lógica para hacer la
-predicción (`MakeGuess()`) deben ser públicos.
-
-#### Recursos
-
-- Guías sobre encapsulamiento y acceso a los miembros de una clase en C#.
-
- + [Curso de programación orientada a objetos en C# .Net #5 | Encapsulamiento](https://www.youtube.com/watch?v=IObsX4M6Ekg&ab_channel=hdeleon.net)
-
-#### Para profundizar
-
-- Uso de `readonly`: [Diferencias entre const y readonly en C#](https://es.stackoverflow.com/questions/505650/diferencias-entre-const-y-readonly-en-c)
-- Tipos nulos: [nullable-reference-types](https://learn.microsoft.com/es-es/dotnet/csharp/language-reference/builtin-types/nullable-reference-types)
-- Paso por valor y paso por referencia: [Short C#](https://www.youtube.com/shorts/8DT70NSeTjI)
-- Paso por valor y paso por referencia: [CURSO DE C#](https://youtu.be/j8sxDnr7nPY?t=2903)
-
-### Hito 5: Herencia y Polimorfismo
-
-#### Objetivos
-
-- Explorar la herencia como medio para extender o modificar
-la funcionalidad de las clases existentes.
-- Comprender el polimorfismo y cómo se puede implementar en C#.
-
-#### Desafío
-
-Transformar la clase `Player` a una clase abstracta y crear las clases
-`AIPlayer` y `HumanPlayer`
-(derivadas) para representar diferentes tipos de jugadores, implementando
-la lógica de adivinación específica para cada tipo mediante herencia y polimorfismo.
-
-- Características de la clase Player:
-
-1. Ahora es una clase abstracta.
-2. Las propiedades son públicas.
-3. Se agrega una propiedad de tipo `List`
-para almacenar las predicciones realizadas.
-4. El constructor es `protected`, y recibe como parámetro un nombre,
-además de inicializar la lista.
-5. El método de adivinación (`MakeGuess()`) ahora es abstracto.
-
-- Características de la clase AIPlayer:
-
-1. implementa la clase abstracta `Player`.
-2. propiedad privada que nos permite generar un número aleatorio.
-3. Implementación del método de adivinación (`MakeGuess()`)
-que devuelve un número aleatorio.
-
-- Características de la clase HumanPlayer:
-
-1. implementa la clase abstracta `Player`.
-2. Implementación del método de adivinación (`MakeGuess()`)
-que pregunta a la usuaria por un número.
-
-- Características de la clase Game:
-
-1. Ahora tiene 2 propiedades nuevas: `_humanPlayer` y `_AIPlayer` de tipo `Player`.
-2. Su constructor inicializa estas nuevas variables además de el número aleatorio.
-3. El método para inicializar el juego, ahora además se encarga de
-gestionar los turnos, permitiendo el turno de la jugadora y mostrando
-la adivinación realizada por la computadora
-(`_AIPlayer.MakeGuess()`)
-
-#### Recursos
-
-- Herencia en C#: [Inheritance in C#](https://learn.microsoft.com/es-es/dotnet/csharp/fundamentals/object-oriented/inheritance)
-- Polimorfismo en C#: [Polymorphism in C#](https://learn.microsoft.com/es-es/dotnet/csharp/fundamentals/object-oriented/polymorphism)
-
-#### Para profundizar
-
-- Listas y arreglos en C#: [Working with lists and arrays in C#](https://learn.microsoft.com/es-es/dotnet/csharp/tour-of-csharp/tutorials/arrays-and-collections)
-- Listas [arrays and collections](https://learn.microsoft.com/es-es/dotnet/csharp/tour-of-csharp/tutorials/arrays-and-collections)
-- Ciclos [iteration statements](https://learn.microsoft.com/es-es/dotnet/csharp/language-reference/statements/iteration-statements)
-
-### Diagrama de Clases del Proyecto "Adivina el Número"
-
-El proyecto se estructura alrededor de las siguientes clases principales,
-con las siguientes responsabilidades y relaciones:
-
-#### Clases
-
-##### Game
-
-- **Responsabilidades**:
-
- + Iniciar el juego.
- + Generar y mantener el número secreto a adivinar.
- + Controlar el flujo del juego, alternando turnos entre los jugadores.
-
-- **Relaciones**:
-
- + Asociación con `Player` (incluyendo `HumanPlayer` y `AIPlayer`).
-
-##### Player (abstracta)
-
-- **Responsabilidades**:
-
- + Definir una interfaz común para todos los jugadores.
- + Mantener el nombre y el historial de suposiciones del jugador.
-
-- **Relaciones**:
-
- + Superclase de `HumanPlayer` y `AIPlayer`.
-
-##### HumanPlayer
-
-- **Responsabilidades**:
-
- + Permitir al usuario hacer suposiciones ingresando números.
-
-- **Relaciones**:
-
- + Hereda de `Player`.
-
-##### AIPlayer
-
-- **Responsabilidades**:
-
- + Generar suposiciones automáticamente (simulando una IA básica).
-
-- **Relaciones**:
-
- + Hereda de `Player`.
-
-#### Relaciones
-
-- `Game` tiene dos instancias de `Player`:
-una para el jugador humano y otra para la IA, demostrando una relación de asociación/composición.
-- `Player` es una clase abstracta que define la estructura y comportamiento
-comunes para todos los jugadores, con `HumanPlayer` y `AIPlayer`
-especializando esta definición mediante herencia.
-
-Este diseño nos una clara separación de responsabilidades
-entre la gestión del juego y la lógica específica del jugador,
-facilitando la extensión y mantenimiento del código.
-
-#### Recursos
-
-- ¿Cómo hacer un diagrama de clase? - [Diagrama de clases UML](https://miro.com/es/diagrama/que-es-diagrama-clases-uml/)
-- Video: [Cómo hacer un DIAGRAMA de CLASES UML ✅ [ fácil y profesional ]](https://www.youtube.com/watch?v=zMpr6RIePf8&ab_channel=SaberProgramas)
-
-![Diagrama de Clases](https://raw.githubusercontent.com/Laboratoria/curriculum/bccce863b4bca2aac6cad8548866ed8697553c94/projects/05-guess-the-number/docs/classDiagramRelation.png)
-
-### Hito 6: Implementación de Pruebas Unitarias
-
-#### Objetivos
-
-- Implementar pruebas unitarias con MSTest para validar
-la lógica y funcionamiento del juego.
-- Asegurar la calidad del software mediante la detección
-temprana de errores y comportamientos inesperados.
-
-#### Desafío
-
-Crear una suite de pruebas unitarias que cubra los distintos
-componentes y funcionalidades del juego,
-incluyendo la generación del número secreto,
-la validación de entradas del usuario,
-y la lógica de juego para determinar victorias y derrotas.
-
-#### Recursos
-
-- Introducción a MSTest y pruebas unitarias en .NET:
-
- + [Unit testing C# with MSTest and .NET Core](https://learn.microsoft.com/en-us/dotnet/core/testing/unit-testing-with-mstest)
- + [MSTest - Microsoft Test Framework](https://learn.microsoft.com/en-us/dotnet/api/microsoft.visualstudio.testtools.unittesting?view=mstest-net-1.2.0)
-
-- Tutoriales y guías sobre cómo escribir pruebas unitarias efectivas:
-
- + [Unit Testing Best Practices](https://learn.microsoft.com/en-us/dotnet/core/testing/unit-testing-best-practices)
- + [Getting started with MSTest](https://www.youtube.com/watch?v=6v9CvmNQyNw)
-
-#### Para profundizar
-
-- Principios de pruebas de software y desarrollo dirigido por pruebas (TDD):
-
- + [Test Driven Development (TDD)](https://learn.microsoft.com/en-us/dotnet/core/testing/test-driven-development)
-
-- Estrategias para mockear y testear interacciones con el usuario:
-
- + [Mocking in .NET Core Unit Tests](https://learn.microsoft.com/en-us/dotnet/core/testing/mocking)
diff --git a/docs/README-java.md b/docs/README-java.md
deleted file mode 100644
index 4c7f506..0000000
--- a/docs/README-java.md
+++ /dev/null
@@ -1,276 +0,0 @@
-# Java ☕
-
-## 1. Preámbulo
-
-En la actualidad, Java es uno de los lenguajes de programación más utilizados en
-el mundo. A pesar de la diversidad de plataformas y herramientas disponibles, es
-fundamental tener una base sólida en los conceptos fundamentales de Java y en la
-programación orientada a objetos (OOP). El objetivo de este proyecto es
-introducirte al mundo de Java a través de un juego simple y divertido.
-
-## 2. Consideraciones Generales
-
-- Duración del proyecto: Se estima que este proyecto tomará de 1 a 2 sprints.
-- Debe implementarse en Java. Las únicas dependencias externas que se pueden utilizar
- son JUnit y Mockito para pruebas unitarias.
-- El juego se llevará a cabo en el terminal. Las pruebas se pueden ejecutar
- en el terminal o en su IDE
- (se recomienda usar [IntelliJ Community Edition](https://www.jetbrains.com/idea/download/)).
-- 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.
-
-### Diagrama de Clases
-
-![Diagrama de Clases](https://firebasestorage.googleapis.com/v0/b/laboratoria-945ea.appspot.com/o/class-diagram.png?alt=media)
-
-#### `GuessTheNumberGame`
-
-**Propósito:**
-Maneja la lógica principal, decide qué jugador asume el próximo turno.
-
-**Atributos:**
-
-- `random`: Generador de números aleatorios.
-- `targetNumber`: Número aleatorio entre 1 y 100 a adivinar en la partida actual.
-
-**Métodos estáticos (`static`):**
-
-- `main(String[] args)`: Inicia el juego y genera el número aleatorio.
-- `checkGuess(Player player)`: Ejecuta un turno, obtiene la suposición
- y evalúa el nuevo estado de la partida.
-
-#### `Player`
-
-**Propósito:**
-Representa a una jugadora genérica. Es una clase abstracta.
-Define los atributos y métodos que todas las _clases_ de jugadoras deben compartir:
-
-**Atributos:**
-
-- `name`: El nombre de la jugadora.
-- `guesses`: El historial de suposiciones de la jugadora.
-
-**Métodos:**
-
-- `makeGuess()`: Devuelve la suposición de la jugadora. Es un método abstracto.
-- `getName()`: Devuelve el nombre de la jugadora.
-- `getGuesses()`: Devuelve el historial de suposiciones de la jugadora.
-
-#### `HumanPlayer` y `ComputerPlayer` (heredan de `Player`)
-
-**Propósito:**
-Representa a las jugadoras _Humana_ y _Computadora_, respectivamente.
-
-**Métodos:**
-
-- `makeGuess()`: Método que cada clase que hereda de `Player` debe implementar.
-
-**Relaciones:**
-
-- La clase `GuessTheNumberGame` interactúa con las clases `HumanPlayer`
- y `ComputerPlayer` para gestionar el juego.
-- Tanto la clase `HumanPlayer` como `Computer Player` son subclases de `Player`,
- lo que implica que heredan todas sus propiedades y métodos,
- pero también tienen algunas características adicionales propias.
-
-Este diseño de clases permite separar las responsabilidades,
-facilitando el mantenimiento y posibles extensiones del juego en el futuro.
-
-Por ejemplo, podríamos añadir diferentes jugadoras "máquina" con diferentes
-estrategias para la suposición automática, un nuevo tipo de
-jugadora "remota" o incluso diferentes niveles de dificultad.
-
-## 3. Consideraciones Técnicas
-
-- El juego se llevará a cabo en el terminal usando Java.
-- 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 Java para
- la generación de números aleatorios.
-- Se deben realizar **pruebas unitarias** para sus clases y métodos
- utilizando JUnit y simulación de generación de números aleatorios con Mockito.
-
-## 4. Hitos del proyecto
-
-No trabajes como si fueras una fábrica haciendo una clase toda y luego otra.
-El riesgo de trabajar así es que obtendrás muchas partes sin ninguna o con media
-funcionalidad y aprenderás poco; no hagas lo contrario tampoco,
-muchas funcionalidades en la consola, pero sin una finalización que pueda
-ser utilizada por una usuaria no desarrolladora.
-
-La metáfora a continuación puede ayudarte a entender mejor la idea.
-
-![MARCOS](https://firebasestorage.googleapis.com/v0/b/laboratoria-945ea.appspot.com/o/marcos.png?alt=media)
-
-Estas etapas, desde el monopatín hasta el automóvil, son lo que llamaremos "Hitos".
-
-Estos hitos son pequeñas tareas a implementar, así que evita trabajar como una
-fábrica y podrás aprender un poco de cada cosa, agregando valor para tu
-usuaria al finalizar cada hito.
-
-A continuación, te dejamos algunos hitos como sugerencia para que construyas tu proyecto.
-
-### 4.1 Hito 1 - Configuración del entorno de trabajo
-
-Debes configurar tu entorno de trabajo, es decir:
-
-- Descargar la versión elegida de Java e instalarla en tu computadora.
- Hoy, en octubre y noviembre de 2023, recomendamos la versión 21,
- ya que es la versión más compatible con la IDE IntelliJ.
-- Instalar tu IDE (recomendamos usar
- [IntelliJ Community Edition](https://www.jetbrains.com/idea/download/),
- en casos extremos de recursos computacionales se puede utilizar el VSCode).
-
-#### Contenidos que pueden ayudarte en la configuración del entorno
-
-- [Tutoriales para la preparación del entorno Java](https://github.com/Laboratoria/java-setup)
-- [¿Cómo instalo Java?](https://www.java.com/pt-BR/download/help/download_options_pt-br.html)
-- [Install IntelliJ IDEA](https://www.jetbrains.com/help/idea/installation-guide.html)
-- [Guía paso a paso para instalar Intellij Idea en Mac](https://www.geeksforgeeks.org/step-by-step-guide-to-install-intellij-idea)
-
-### 4.2 Hito 2 - Primeros pasos con el lenguaje
-
-Crea la primera clase del proyecto que contenga el método main. Puedes agregar
-un comando que muestre "¡Hola mundo!" en la consola.
-Así podrás verificar si tus configuraciones son correctas.
-Además, puedes estudiar conceptos del lenguaje como:
-
-- ¿Qué son las clases y cómo construirlas?
-- ¿Qué son los métodos y cómo utilizarlos?
-- ¿Qué tipos de datos existen en el lenguaje? (Recuerda los que más usaste en
- JavaScript y trata de buscar tipos similares).
-- ¿Cómo crear un array usando Java?
-- ¿Qué son los modificadores de acceso como: `public`, `private`, `protected`?
-- ¿Qué son los métodos constructores? ¿Cómo hacerlos?
-- ¿Qué es el encapsulamiento? ¿Cómo hacerlo?
-- ¿Qué es la herencia? ¿Cómo crearla en Java?
-
-Recuerda también utilizar contenidos prácticos para comprender estos conceptos.
-¡No pases mucho tiempo solo leyendo o viendo videos!
-¡Crea códigos! Inténtalo, equivócate, inténtalo de nuevo, etc.
-
-#### Contenidos que pueden ayudarte en los primeros pasos con Java
-
-- [Learn the Basics of Java Programming](https://www.freecodecamp.org/news/learn-the-basics-of-java-programming/)
-- [Programación Orientada a Objetos com Java](https://www.freecodecamp.org/news/object-oriented-programming-concepts-java/)
-- [Java Basic Syntax](https://www.geeksforgeeks.org/java-basic-syntax/)
-- [Java Data Types And Variables – Explained for Beginners](https://www.freecodecamp.org/news/java-data-types-and-variables/)
-- [Learn Java](https://www.w3schools.com/java/default.asp)
-- [Java Classes and Objects](https://www.w3schools.com/java/java_classes.asp)
-- [Java Methods](https://www.w3schools.com/java/java_methods.asp)
-
-### 4.3 Hito 3 - Comprensión del Diagrama de Clases
-
-Dejamos un [Diagrama de Clases](#diagrama-de-clases) para que te sirva de base
-para construir tu proyecto. Pero es necesario comprender lo que significa antes
-de empezar a desarrollar lo que será tu proyecto.
-En este hito, puedes comprender lo que este diagrama está representando.
-
-#### Contenidos que pueden ayudarte en la comprensión del Diagrama de Clases
-
-- [¿Qué son los Diagramas de Clase?](https://diagramasuml.com/diagrama-de-clases/)
-
-### 4.4 Hito 4 - Iniciando el juego
-
-En este hito, puedes crear el juego para un solo jugador.
-
-Comienza creando las clases que representan a la jugadora humana. Luego, elige
-el número objetivo, que debe ser un número aleatorio entre 1 y 100, y finalmente,
-crea la lógica para verificar si el número de la jugadora es menor o
-mayor que el valor objetivo. Muestra en la terminal si es un valor alto o bajo.
-
-#### Contenidos que pueden ayudarte a comenzar el juego
-
-- [Java: Cómo leer y presentar datos con los comandos de entrada y salida](https://www.programarya.com/Cursos/Java/Entrada-de-datos)
-- [Java Scanner](https://www.baeldung.com/java-scanner)
-- [Java User Input](https://www.w3schools.com/java/java_user_input.asp)
-- [Número Aleatorio](https://www.baeldung.com/java-17-random-number-generators)
-
-### 4.5 Hito 5 - Agregando más jugadoras
-
-En este hito, puedes agregar otra jugadora al juego.
-
-Comienza creando las clases que representan a la segunda jugadora, que podría
-ser la computadora. Desarrolla la lógica para alternar entre las jugadoras.
-Finalmente, agrega información adicional cuando alguna jugadora gane el juego.
-Puedes mostrar la cantidad de intentos y cuáles fueron los intentos de la jugadora.
-
-### 4.6 Hito 6 - Configuración para la construcción de pruebas unitarias
-
-En este hito, configura las bibliotecas JUnit5 y Mockito en tu IDE para que
-puedas crear pruebas unitarias.
-
-Le recomendamos que utilice las bibliotecas presentes en el repositorio de Maven:
-
-- org.junit.jupiter:junit-jupiter
-- org.mockito:mockito-core
-
-#### Contenidos que pueden ayudarte a agregar dependencias de pruebas
-
-- [Agregar JUnit5 en IntelliJ](https://www.jetbrains.com/help/idea/junit.html#intellij)
-- [Testing Java with VSCode](https://code.visualstudio.com/docs/java/java-testing)
-
-### 4.7 Hito 7 - Creación de pruebas unitarias
-
-Crea las pruebas unitarias para tu proyecto. Asegúrate de cubrir con pruebas
-la lógica de tu juego basándote en comportamientos. Por ejemplo, crea pruebas que:
-
-- Simulen que el número de la jugadora es mayor que el número objetivo.
-- Simulen que el número de la jugadora es menor que el número objetivo.
-- Simulen que el número es el mismo número objetivo.
-
-#### Contenidos que pueden ayudarte a crear pruebas unitarias
-
-- [Calidad y JUnit: Introducción a la automatización de pruebas unitarias en tu software Java en el día a día](https://www.tutorialspoint.com/junit/index.htm)
-- [Tutorial de Mockito](https://www.digitalocean.com/community/tutorials/mockito-tutorial)
-
-### 4.8 Hito 8 (Edición Hacker) - Creación de una "inteligencia" para jugar contra la computadora
-
-En este hito, que consideramos como Edición Hacker, puedes crear una lógica
-para que los número de la segunda jugadora, cuando estás jugando contra la computadora,
-sean más inteligentes. Estos número pueden considerar la información
-sobre si el número es alto o bajo en relación con el número objetivo,
-haciendo que el juego sea más emocionante.
-
-## 5. Recomendaciones
-
-**Documentación de Java**: La documentación oficial de Java es una excelente
-fuente de información sobre las clases y métodos disponibles en
-Java (recomendamos usar Java 21).
-
-**Diseño de la Estructura del Juego**: Antes de empezar a escribir código,
-considera cómo quieres que funcione el juego. Piensa en cómo alternar los
-turnos entre la jugadora y la computadora, cómo generar y
-evaluar las suposiciones, y cómo mostrar información a la jugadora.
-Tómate un momento para analizar y diseñar tu solución antes de empezar a implementarla.
-
-**Separación de Responsabilidades**: Recomendamos seguir el diagrama de clases
-proporcionado para obtener una clara separación de la lógica
-del juego en componentes o clases que permitan mantener el código organizado y legible.
-
-**Necesitarás Bucles y Condiciones**: Los bucles y las declaraciones
-condicionales serán tus aliados en este proyecto para controlar los turnos,
-evaluar las suposiciones y determinar el ganador.
-
-**Manipulación de Números Aleatorios**: Utiliza la clase `Random` de `java.util`
-para generar el número aleatorio secreto. Puedes encontrar información
-sobre cómo usarla en la documentación de Java.
-
-**Pruebas Unitarias**: A medida que desarrollas el juego, intenta escribir
-pruebas unitarias para verificar que las diferentes partes del juego funcionan
-como se espera. Puedes usar el framework JUnit para escribir tus pruebas.
-
-Recuerda que este proyecto está diseñado para que apliques tu conocimiento
-previo en JavaScript, "traduciéndolo" a Java, y aprendas el paradigma de
-programación orientada a objetos en el proceso.
-
-## 6. Pistas / Tips
-
-Consulta los [FAQ](./FAQ-java.md)
-Súmate al canal de Slack
-[#project-guess-the-number](https://claseslaboratoria.slack.com/archives/C067E8ZT9CY)
-para conversar y pedir ayuda del proyecto.
diff --git a/docs/README-python.md b/docs/README-python.md
deleted file mode 100644
index 0d11ba5..0000000
--- a/docs/README-python.md
+++ /dev/null
@@ -1,201 +0,0 @@
-# Python 🐍
-
-## 1. Preámbulo
-
-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.
-
-## 2. Consideraciones Generales
-
-- 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.
-
-## 3. Consideraciones Técnicas
-
-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.
-
-## 4. Hitos
-
-A continuación, te dejamos algunos hitos como sugerencia para que construyas tu
-proyecto.
-
-### 4.1 Crear el entorno de desarrollo
-
-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).
-
-1. Instala Python 3 si aún no lo tienes. Puedes descargarlo desde el [sitio
-oficial de Python](https://www.python.org/downloads/).
-
-2. Elige un editor de texto o un IDE. Algunas opciones populares son
-[PyCharm](https://www.jetbrains.com/pycharm/), [Visual Studio
-Code](https://code.visualstudio.com/), o [Sublime
-Text](https://www.sublimetext.com/).
-
-3. Configura tu editor o IDE para usar Python 3.
-
-#### Algunas referencias sobre el tema
-
-- [Visual Studio Code para
- Python](https://code.visualstudio.com/docs/languages/python)
-
-### 4.2 Crear un script de Python
-
-A continuación, crearás un script de Python simple para asegurarte de que tu
-configuración funciona correctamente.
-
-1. Crea un nuevo archivo llamado `main.py`.
-2. Ejecuta `main.py`.
-
-#### Referencias
-
-- [Cómo escribir y ejecutar un script de
- Python](https://entrenamiento-python-basico.readthedocs.io/es/3.7/leccion1/holamundo.html#ejecucion)
-
-### 4.3 Implementar el juego
-
-Ahora que tienes un entorno de desarrollo de Python funcionando, puedes empezar
-a implementar el juego.
-
-1. Genera un número aleatorio entre 1 y 100. Puedes usar la función `randint`
-en el módulo `random` para hacer esto.
-
-2. 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.
-
-3. 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.
-
-4. 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.
-
-5. Continúa el juego hasta que la jugadora o el ordenador adivinen
-correctamente el número.
-
-6. Añade pruebas unitarias para tu código. Python tiene un módulo incorporado
-llamado `unittest` que puedes usar para esto.
-
-#### Referencias
-
-- [Generación de números aleatorios en
- Python](https://docs.python.org/3/library/random.html)
-- [Bucles en
- Python](https://docs.python.org/3/tutorial/controlflow.html#for-statements)
-- [La función input en
- Python](https://docs.python.org/3/library/functions.html#input)
-- [Comparaciones en
- Python](https://docs.python.org/3/library/stdtypes.html#comparisons)
-- [Pruebas unitarias en Python con
- unittest](https://docs.python.org/4/library/unittest.html)
-
-### 4.4 Mejorar el juego
-
-Una vez que tengas una versión básica del juego funcionando, puedes hacer
-mejoras.
-
-1. 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.
-
-2. Añade una opción para jugar de nuevo. Cuando el juego termine, pregunta a la
-jugadora si quiere jugar de nuevo.
-
-3. 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.
-
-#### Referencias
-
-- [Manejo de listas en
- Python](https://docs.python.org/3/tutorial/introduction.html#lists)
-- [Cómo escribir comentarios en
- Python](https://www.w3schools.com/python/python_comments.asp)
-
-### 4.5 Crear una "inteligencia" para jugar contra la computadora (Edición Hacker)
-
-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.
-
-1. 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.
-
-2. Prueba tu nueva "inteligencia" jugando contra la computadora. ¿Puedes
-ganarle a la computadora con tu nueva estrategia?
-
-3. 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.
-
-4. 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.
-
-#### Referencias
-
-- [Introducción a
- scikit-learn](https://scikit-learn.org/stable/getting_started.html)
-- [Cómo implementar un algoritmo de aprendizaje
- automático](https://machinelearningmastery.com/start-here/#algorithms)
-
-## 5. Extensión: Versión Orientada a Objetos (OOP)
-
-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.
-
-1. Crea una clase `Game` que represente una instancia del juego. Esta clase
-puede tener métodos como `start`, `play_turn`, `check_guess`, y `end_game`.
-
-2. Crea una clase `Player` que represente a una jugadora. Esta clase puede
-tener atributos como `name` y `guesses`, y métodos como `make_guess`.
-
-3. Crea una subclase `ComputerPlayer` que herede de la clase `Player`. Esta
-clase puede sobrescribir el método `make_guess` para implementar la lógica de
-adivinación del ordenador.
-
-4. En la clase `Game`, usa instancias de las clases `Player` y `ComputerPlayer`
-para representar a la jugadora y al ordenador.
-
-5. Añade pruebas unitarias para tus clases y métodos. Python tiene un módulo
-incorporado llamado `unittest` que puedes usar para esto.
-
-### Referencias
-
-- [Programación Orientada a Objetos en
- Python](https://docs.python.org/3/tutorial/classes.html)
diff --git a/src/__pycache__/main.cpython-312.pyc b/src/__pycache__/main.cpython-312.pyc
new file mode 100644
index 0000000..3924edf
Binary files /dev/null and b/src/__pycache__/main.cpython-312.pyc differ
diff --git a/src/__pycache__/test.cpython-312.pyc b/src/__pycache__/test.cpython-312.pyc
new file mode 100644
index 0000000..0b23973
Binary files /dev/null and b/src/__pycache__/test.cpython-312.pyc differ
diff --git a/src/__pycache__/utils.cpython-312.pyc b/src/__pycache__/utils.cpython-312.pyc
new file mode 100644
index 0000000..5b42941
Binary files /dev/null and b/src/__pycache__/utils.cpython-312.pyc differ
diff --git a/src/main.py b/src/main.py
new file mode 100644
index 0000000..1da1f5b
--- /dev/null
+++ b/src/main.py
@@ -0,0 +1,34 @@
+"""setear numero aleatorio"""
+"""- funcion que dada una variable numero esta diga si esta por arriba, por abajo o si es el numero
+ *si es el numero romper el ciclo"""
+import random
+import time
+from utils import player_validation
+"""variable mayuscula para que sea una variable global (buenas practicas)"""
+RANDOM_NUM: int = random.randint(1,101)
+MIN_NUM = 1
+MAX_NUM = 101
+COUNTER = 0
+RECORDS = []
+
+print(f"Numero a adivinar {RANDOM_NUM}")
+
+
+"""ciclo refactorizar """
+while True:
+ COUNTER += 1
+ result, MIN_NUM, MAX_NUM, choosen = player_validation("me", RANDOM_NUM, MIN_NUM, MAX_NUM)
+ RECORDS.append({"player": "me", "turn": COUNTER, "choosen": choosen})
+ if result == "winner":
+ print("Felicidades, ganaste!")
+ break
+ time.sleep(1)
+
+ result, MIN_NUM, MAX_NUM, choosen = player_validation("computadora", RANDOM_NUM, MIN_NUM, MAX_NUM)
+ RECORDS.append({"player": "computer", "turn": COUNTER, "choosen": choosen})
+ if result == "winner":
+ print("Computadora ha ganado!")
+ break
+
+print(f"Juego finalizado en {COUNTER} rondas")
+print(*RECORDS, sep="\n")
\ No newline at end of file
diff --git a/src/test.py b/src/test.py
new file mode 100644
index 0000000..d7f4a15
--- /dev/null
+++ b/src/test.py
@@ -0,0 +1,47 @@
+import unittest
+from utils import comparation_result
+
+
+class TestComparationResultFunction(unittest.TestCase):
+
+ def test_ok(self):
+ self.assertEqual(comparation_result(3, 3), 'winner')
+ self.assertEqual(comparation_result(3, 4), 'menor')
+ self.assertEqual(comparation_result(4, 3), 'mayor')
+
+ def test_errors(self):
+ self.assertEqual(comparation_result("3", 3), 'error')
+ self.assertEqual(comparation_result(3, "3"), 'error')
+ self.assertEqual(comparation_result("l", 3), 'error')
+ self.assertEqual(comparation_result(3, "l"), 'error')
+ self.assertEqual(comparation_result(" ", "l"), 'error')
+
+ def test_missing_arguments(self):
+ with self.assertRaises(TypeError) as result:
+ self.assertEqual(comparation_result(3,), 'error')
+ self.assertEqual(
+ str(result.exception), "comparation_result() missing 1 required positional argument: 'num'"
+ )
+
+ with self.assertRaises(TypeError) as result:
+ self.assertEqual(comparation_result(), 'error')
+ self.assertEqual(
+ str(result.exception), "comparation_result() missing 2 required positional arguments: 'consult' and 'num'"
+ )
+
+ """def test_upper(self):
+ self.assertEqual('foo'.upper(), 'FOO')
+
+ def test_isupper(self):
+ self.assertTrue('FOO'.isupper())
+ self.assertFalse('Foo'.isupper())
+
+ def test_split(self):
+ s = 'hello world'
+ self.assertEqual(s.split(), ['hello', 'world'])
+ # check that s.split fails when the separator is not a string
+ with self.assertRaises(TypeError):
+ s.split(2)"""
+
+if __name__ == '__main__':
+ unittest.main()
\ No newline at end of file
diff --git a/src/utils.py b/src/utils.py
new file mode 100644
index 0000000..c415217
--- /dev/null
+++ b/src/utils.py
@@ -0,0 +1,44 @@
+import random
+
+RANDOM_NUM: int = random.randint(1,101)
+
+
+def comparation_result(consult, num):
+ # validamos que sean enteros
+ # isinstance entrega booleano
+ if not isinstance(consult, int) or not isinstance(num, int):
+ return "error"
+ if (consult > num):
+ return "mayor"
+ elif (consult < num):
+ return "menor"
+ else:
+ return "winner"
+
+
+def player_validation(player_type, num, min_n, max_n):
+ if player_type == "me":
+ turn = int(input("Te toca jugar, por favor ingresa un numero\n"))
+ player = ""
+
+ elif player_type == "computadora":
+ print("\nComputador jugando " + "-"*10)
+ turn = random.randint(min_n, max_n)
+ player = player_type.title()
+ print(f"Computadora ha elegido el numero {turn}")
+
+ comparar = comparation_result(turn, num)
+
+ if comparar == "winner":
+ print("Felicidades acertaste al numero correcto")
+ else:
+ if comparar == "menor":
+ if player_type == "computadora":
+ min_n = turn
+ print(f"{player} El numero que elegiste es menor" )
+ else:
+ if player_type == "computadora":
+ max_n = turn
+ print(f"{player} El numero que elegiste es mayor")
+ return comparar,min_n, max_n, turn
+
\ No newline at end of file