Implementación de El juego del taxista mediante multithreading en Python. En este juego, los taxis compiten por conseguir clientes a los que llevar a su destino. El primer taxista que recoja y lleve a su destino a 10 clientes gana el juego.
El juego tiene las siguientes restricciones:
-
Se debe representar el entorno mediante una matriz de 50 x 50 que contenga a los clientes y los taxis.
-
El número de clientes y taxis debe ser configurable al comenzar el juego. El número de taxis y clientes será siempre constante.
-
Los taxis y clientes se crean en posiciones aleatorias al comenzar el juego.
-
Solo puede haber un taxi en cada celda, los clientes sí pueden solaparse.
-
Los clientes van andando, por lo que deben ser mucho más lentos que los taxistas en sus movimientos.
-
Cada vez que un cliente llegue a su destino, ya sea llevado por un taxi o por su propio pie, este debe desaparecer del entorno y que sea creado uno nuevo en una posición aleatoria.
-
Un taxi no puede llevar más de un cliente cada vez.
-
Los movimientos permitidos son a las celdas adyacentes (también se puede mover en diagonal) incluida la casilla actual, respetando las restricciones anteriores.
-
Se debe mostrar por pantalla cuando un cliente solicita un taxi, el movimiento del cliente y cuando un taxi recoge y deja a un cliente, identificando siempre al cliente y al taxi.
-
Se deben utilizar procesos o hilos para simular los taxis y clientes.
-
El acceso al entorno de juego por parte de los participantes debe ser en exclusión mutua.
Ejecutar el siguiente mandato en la terminal:
>$ python taxis.py [args]
donde los argumentos son opcionales y son los siguientes:
-
–verbose
o-v
: Se muestran por pantalla todos los sucesos. -
–simple
o-s
: Se muestra por pantalla únicamente cuando un taxi recoge un cliente y le deja en su destino.
Solo se puede ejecutar con uno de estos argumentos. Si se ejecuta sin argumentos, además de imprimir los sucesos que se muestran en –simple
, se muestran las posiciones de los clientes creados.
Véase el documento practica4.pdf.