🚜 Proyecto: Happy Farm Manager
¡Bienvenido a la vida rural! En este proyecto serás el gerente de una granja moderna. Tu objetivo es cuidar de tus animales, organizarlos en corrales y recolectar sus productos para el mercado.
Este ejercicio pondrá a prueba tus habilidades con Clases, Polimorfismo y manejo de Listas y Diccionarios.
📋 Requisitos del Proyecto
1. Sistema de Animales (animales.py)
Debes crear una clase base y varias subclases para los habitantes de la granja.
Clase Base: Animal
- Atributos:
nombre: (str) Nombre del animal (ej: "Bessie").edad: (int).salud: (int) De 0 a 100.
- Métodos:
__init__: Constructor.comer(): Incrementa la salud en 10 puntos (sin pasar de 100). Imprime "ñam ñam".producir(): Método base. Debe devolverNoneo un valor por defecto.__str__: Devuelve una ficha:[Animal] Nombre (Edad) - Salud: X/100.__lt__: Permite ordenar animales por salud (los más enfermos primero, para atenderlos rápido).
Subclases
Debes crear al menos tres animales distintos. Ejemplos:
Vaca:producir(): Devuelve "Leche" solo si su salud es > 50. Si no, devuelveNone.
Gallina:producir(): Devuelve "Huevo".
Oveja:producir(): Devuelve "Lana".
La clave es el Polimorfismo: todos tienen el método producir() pero cada uno da algo distinto.
2. La Granja (granja.py)
Aquí gestionarás las listas de animales y el almacén.
Clase: Granja
-
Atributos:
nombre: Nombre de tu granja.corrales: Un diccionario que organiza a los animales por tipo.- Keys: "Establo", "Gallinero", "Pastor".
- Values: Listas vacías donde meterás los objetos.
almacen: Un diccionario para contar los productos.- Ejemplo:
{"Leche": 0, "Huevo": 0, "Lana": 0}.
- Ejemplo:
-
Métodos:
adquirir_animal(animal, zona): Recibe un objetoAnimaly el nombre de la zona ("Establo", etc.). Lo guarda en la lista correspondiente del diccionariocorrales.alimentar_todos(): Recorre todos los animales de todos los corrales y llama a su métodocomer().recolectar(): Recorre todos los animales y llama aproducir().- Si el animal produce algo (no
None), incrementa el contador correspondiente en elalmacen. - Imprime qué se ha conseguido (ej: "¡Bessie ha dado Leche!").
- Si el animal produce algo (no
listar_inventario(): Muestra qué tenemos en el almacén.
3. Programa Principal (main.py)
Crea main.py para simular un día en la granja:
- Crea la
Granja. - Instancia vacas, gallinas y ovejas.
- Mételas en sus zonas correctas (
adquirir_animal). - Haz que trabajen: llama a
recolectar()(al principio quizás no den nada si tienen poca salud). - Aliméntalos a todos (
alimentar_todos). - Vuelve a recolectar.
- Muestra el inventario final del almacén.
- Prueba de ordenación: Saca todos los animales de una zona, ordénalos por salud con
sort()(gracias a__lt__) y muéstralos.
🌟 Puntos Extra
- Validaciones: Que no se pueda meter una Gallina en el Establo de vacas (comprobar
isinstance). - Valor del Almacén: Asigna un precio a cada producto y calcula cuánto dinero ganarías vendiendo todo.
¡A trabajar, granjero! 👩🌾