Ascensor y Console Manager es un proyecto formado por 3 componentes principales:
-
El módulo
elevator_backend
que describe el funcionamiento de un ascensor. -
El módulo
console_manager
que permite gestionar el control por comandos de cualquier aplicación Python. -
Las
Demos
que implementen cualquiera de los 2 componentes anteriores:- La Demo
Manual
que representa un ascensor a tiempo real utilizandopygame
para la visualización y el móduloconsole_manager
para el control desde una ventana de consola estándar.
- La Demo
-
Módulo
elevator_backend
:- Representación lógica de un ascensor
- Función
add_target(target, source)
para simular:- el llamamiento al ascensor desde cualquier piso
- la pulsación de un botón dentro del ascensor
- Función
next_step()
que avanza un paso en la simulación del ascensor
-
Módulo
console_manager
:- Clase
Command
que describe la estructura de un comando - Clase
ConsoleManager
que permite:- Añadir comandos de tipo
Command
al gestor con la funciónaddCommand(command)
- Pedir al usuario la introducción de comandos y gestionarlos con la función
consoleManager()
hasta que la aplicación se cierre - Visualizar con el comando
help
todos los comandos, su descripción y su sintaxis en una tabla
- Añadir comandos de tipo
- Clase
-
Demo
Manual
:- Representación visual de un ascensor en una ventada de
pygame
- Control a través de la introducción de comandos en una consola, gestionados por el módulo
console_manager
- Uso de
hilos
para separar la visualización del control - Cálculo del máximo número de pisos para el ascensor en base a la resolución vertical de la pantalla
- Número de pisos introducido por el usuario
- Diferenciación por colores de los distintos tipos de mensajes en la consola
- Representación visual de un ascensor en una ventada de
-
Lenguaje:
Python
-
Módulo
console_manager
:- Módulos de terceros:
colorama
para imprimir en la consola en colorterminaltables
para mostrar los comandos disponibles en una tabla
- Módulos de terceros:
-
Demo
Manual
:-
Módulos de Python:
os.system
para:- modificar el tamaño inicial de la consola
- borrar todo lo que contenga
os.environ
para:- ocultar lo que pygame imprime en la consola al iniciarse
- modificar la posición de la ventana de pygame
threading
para ejecutar el control por comandos en un hilo distinto al principalwin32api.GetSystemMetrics
para obtener la resolución de la pantalla
-
Módulos de terceros:
pygame
para la representación visual del ascensor
-
-
Módulo
elevator_backend
:- Función
add_target(target, source)
para añadir un objetivo para el ascensor- Parámetro
target
: número del piso objetivo - Parámetro
source
: fuente de la llamada, que puede ser:floor
: simulando la llamada al ascensor desde un rellanoelevator
: simulando la pulsación de uno de los botones dentro del ascensor
- Parámetro
- Función
next_step()
para avanzar un paso en la simulación del ascensor
- Función
-
Módulo
console_manager
:-
Clase
Command
que describe la estructura de un comando- Parámetros del constructor:
name
: nombre del comandoshort
: abreviación del comandoaction
: función a ejecutar cuando se llame al comandosyntax
: sintaxis del comandodescription
: descripción del comando
- Función
execute(arguments)
que ejecuta la acción del comando en base a unos argumentos (vacíos si innecesarios)
- Parámetros del constructor:
-
Clase
ConsoleManager
para la gestión de los comandos que se le introduzcan- Función
addCommand(command)
que añade un comando de tipoCommand
al gestor - Función
consoleManager()
que está constantemente pidiendo al usuario la introducción comandos para ejecutar
- Función
-
-
Demo
Manual
:- Descripción del funcionamiento no disponible por el momento
- Pruébala tú mismo descargando y ejecutando el programa
Demos/Manual/Manual.exe