0% encontró este documento útil (0 votos)
21 vistas5 páginas

Documentacion Python

El documento describe un juego de simulación de granja en Python donde el jugador gestiona cultivos, animales y una tienda para ganar dinero en un número limitado de días. Se explican las clases principales como Jugador, Granja, Semilla, Cultivo, Tienda e Intérprete y sus funcionalidades.

Cargado por

Danixelion 3
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
21 vistas5 páginas

Documentacion Python

El documento describe un juego de simulación de granja en Python donde el jugador gestiona cultivos, animales y una tienda para ganar dinero en un número limitado de días. Se explican las clases principales como Jugador, Granja, Semilla, Cultivo, Tienda e Intérprete y sus funcionalidades.

Cargado por

Danixelion 3
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 5

2023

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:

• Jugador: es la clase principal donde se desarrollan todas las acciones.


• Granja: contiene las semillas plantadas y los animales que tiene el jugador.
• Semilla: es la entidad que el jugador puede plantar. Cada semilla tiene un número que
determina cuántos días tarda en poder cosecharse y solo crece cuando el jugador pasa de día y
ésta ha sido regada.
• Cultivo: es la siguiente fase a la semilla. Cuando ya han pasado los días suficientes para que la
semilla pueda cosecharse, el jugador puede hacerlo y obtener un cultivo. Los cultivos sirven
para venderlos y para alimentar a los animales (no se gastan al utilizarlos como alimento).
Además, tienen caducidad, por lo que después de varios días (3) dejarán de ser comestibles para
los animales y su precio de venta bajará a 1.
• Tienda: permite al jugador comprar semillas, animales y mejoras.
• Mineral: es una clase sencilla con un nombre y un valor de venta.
• Intérprete: es la clase encargada de leer los comandos. Tiene tres modos:
o Modo manual: el usuario introduce manualmente los comandos.
o Modo automático: lee un fichero y ejecuta los comandos automáticamente.

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:

• Alimentar: el jugador podrá alimentar a un animal. Debe seleccionar al animal y el alimento a


utilizar.
• Comprar animales: el jugador podrá seleccionar el animal que quiere comprar.
• Comprar mejora: el jugador podrá seleccionar la mejora que quiere comprar.
• Comprar semilla: el jugador podrá seleccionar la semilla que quiere comprar.
• Cosechar: el jugador seleccionará una semilla de las que están plantadas en la granja, y si ya se
puede cosechar obtendrá un cultivo.
• Pasar día: se pasará al día siguiente, recuperando todas las acciones y generando los ingresos
que correspondan, así como, para los cultivos que tenga, reducir en uno los días que queda para
caducar.
• Regar: permite al jugador regar una semilla plantada previamente.
• Vender: permite al jugador obtener monedas a cambia de un objeto en su inventario.

3. Justificación de los requisitos


Nombre Requisito: Ducktyping

Descripción: En el duck typing, un objeto se considera de un cierto tipo si es capaz de


realizar las operaciones y métodos que se esperan de ese tipo, sin
importar su clase o estructura de datos. Esto permite una flexibilidad
significativa en la programación, ya que no estás limitado por las
restricciones de tipos estrictos.

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

Descripción: Se desarrollará una aplicación interactiva que permita a un usuario


introducir comandos que se traducirán en modificaciones del estado
interno de la aplicación

Ejemplos de utilización: • main.py: se define un bucle de juego donde se le pide a la clase


Intérprete (interprete.py) que le devuelva un comando a
ejecutar.

Nombre Requisito: Pruebas unitarias

Descripción: La funcionalidad básica de la aplicación debe estar probada con pruebas


unitarias.

Ejemplos de utilización: • En el fichero jugador_test.py se han desarrollado test unitarios


para probar las funciones básicas del juego.

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.

Ejemplos de utilización: • En el fichero jugador.py, en la línea 159 se define un método que


recibe una función, correspondiente a la función del empleado
(es una mejora disponible que ejecuta un método cada vez que
se pasa de día). El método se llama en tienda.py, línea 150.

Nombre Requisito: Anotaciones de tipos

Descripción: Siguiendo la filosofía del Gradual Typing, partes de la aplicación deberán


tener anotaciones de tipos.

Ejemplos de utilización: • Los ficheros animal.py, cultivo.py, granja.py, mineral.py,


semilla.py y tienda.py utilizan anotaciones de tipos.

3
Nombre Requisito: Criterio de nombrado

Descripción: Se debe utilizar algún criterio de nombrado en alguna funcionalidad


específica del programa

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.

También podría gustarte