Documentacion Python
Documentacion Python
PARTE 1: Práctica
Python
DANIEL FERREIRA GÓMEZ
UO277603
1. Diagrama de Clases
Juego
Interprete
- jugador: Jugador
- granja: Granja - opcion: string
- objetivo_monedas: int - comandos_leidos: string
- indice_comando: int
- jugar() - archivo: string
- input: List[string]
- devolver_comando(msg: string): int
- leer_archivo(archivo: str)
Jugador
Granja
- dinero: int
Animal - semillas_plantadas: List[Semilla] - inventario: List[object]
- animales: List[Animales] - acciones: int
- nombre: string - dia: int - acciones_restantes: int Tienda
- hambre: int - dias_maximos: int - tienda: Tienda
- felicidad: int - agregar_cultivo(cultivo: Cultivo) - granja: Granja
- valor_recurso: int - agregar_animal(animal: Animal) - empleado_activo: bool
- pasar_tiempo() - pasar_dia(): int - funcion_empleado: func - comprar_semillas(dinero: int,
- alimentar() - mostar_estado() - interprete: Interprete inventario: List[object], interprete:
Interprete): int
- accion_plantar()
- comprar_animales(dinero: int,
- accion_regar()
inventario: List[object], interprete:
- accion_cosechar()
Interprete): int
- accion_alimentar()
- comprar_mejora(dinero: int, jugador:
- accion_vender()
Jugador): int
- accion_comprar_animales()
- seleccionar_accion(jugador: Jugador)
- accion_comprar_mejora()
- accion_pasar_dia()
- contratar_empleado()
- mostar_estado()
Semilla
- nombre: string
- tiempo_crecimiento: string
- estado: int
- regado: bool
- pasar_tiempo()
- regar()
- cosechable(): bool
- vender()
- mostar_estado(indice: int)
Mineral
- nombre: string
Cultivo
- valor: int
- nombre: string - vender(): int
- valor: int - mostrar_estado(indice:int)
- pasar_tiempo()
- vender(): int
- comestible(): bool
- mostar_estado(indice: int)
2. Descripción
La aplicación desarrollada se trata de un pequeño juego de gestión de granjas donde el jugador deberá
llegar a 100 monedas para ganar en menos de 20 días. El juego consta de las siguientes entidades:
1
o Modo para tests: tiene una pila de comandos para que en los tests se le puedan añadir
comandos sin necesidad de pedirlos por pantalla.
El resto de la aplicación, en vez de pedir el comando por pantalla, se lo pide al intérprete y este
se lo da, independientemente de qué modo se haya elegido.
• Mejoras: no contiene una clase. Tiene definidas las funciones de mejora del jugador. Cuando el
jugador compre una mejora, su método correspondiente será sustituido por uno de los de esta
clase.
• Animal: esta clase representa a un animal. Cada animal tiene un valor que corresponde al
recurso que genera, es decir, cada día que pase, el animal en posesión del jugador le dará
ingresos correspondientes a su valor. El animal solo dará ingresos si es feliz. Cada día que pase
su hambre aumentará en uno y, a partir de 2 de hambre (2 días sin comer) le empezará a bajar
la felicidad. Cuando un jugador lo alimenta, su hambre desciende a 0 y su felicidad se reduce en
uno.
El juego se desarrolla en días y cada día el jugador puede realizar cierto número de acciones. Dichas
acciones son:
Ejemplos de utilización: • jugador.py línea 116. Independientemente del objeto que sea
que quieras vender, llama al método vender()
• jugador.py línea 155. Lo mismo con pasar_tiempo()
• jugador.py línea 167. Lo mismo con mostrar_estado()
2
Nombre Requisito: Intérprete Interactivo
Nombre Requisito: Uso de funciones y/o clases como instancias de primer orden
Descripción: Debe haber alguna función que reciba como parámetro una función o
una clase.
3
Nombre Requisito: Criterio de nombrado
Ejemplos de utilización: • Se utiliza en main.py, línea 28. A todas las acciones que puede
realizar el jugador se les a nombrado como “acción_” para poder
obtenerlas y mostrarlas por pantalla. Se ha hecho porque existe
una mejora (la cueva) que añade un método picar() al jugador, y
de esta manera se puede añadir de forma dinámica una acción
al juego.
4. Otras características
Se ha utilizado herencia dinámica para pasar de la clase Semilla a la clase Cultivo. Esto se puede ver en
jugador.py línea 68.