Parking
¿Serás capaz de...?
Programar un parking completo
Disponemos de un parking de pago con seis plazas. Tiene una barrera de entrada y una de salida. Cada barrera está horizontal cuando está cerrada y abre girando 90º en torno a su base, colocándose vertical. Junto a cada barrera hay un semáforo de dos luces (roja y verde). Estará encendida la roja y apagada la verde con la barrera cerrada o en proceso de cierre o apertura, y estará encendida la verde y apagada la roja cuando la barrera esté totalmente abierta. Cada luz puede tener, por tanto, dos disfraces, uno con un color más oscuro y otro con el mismo color más brillante.
Junto a cada barrera hay un botón (triángulo amarillo) para indicar el deseo de entrar o salir del parking. Disponemos de 8 coches que, al empezar el programa, están en la calle, fuera del parking, y a un tamaño reducido. Cuando los coches pasan al parking deben cambiar a un tamaño un poco mayor, y al salir de nuevo a la calle, reducirán de nuevo su tamaño.
Cuando un coche se selecciona haciendo clic sobre él cambia de disfraz, apareciendo un recuadro azul alrededor de él. Al seleccionar otro coche, el anteriormente seleccionado, si lo hubiera, se deselecciona.
El parking tendrá un coste que dependerá del tiempo que ha estado dentro cada coche. Será el resultado de pagar el nº de segundos que haya estado por el precio del segundo que lo
almacenaremos en una variable, para poder cambiarlo fácilmente cuando queramos.
Funcionamiento:
Cuando queramos introducir uno de los coches que están en la calle dentro del parking lo seleccionaremos y a continuación haremos clic sobre el triángulo amarillo de la entrada. Si no quedaran plazas libres, no se abrirá la barrera y aparecerá un mensaje intermitente durante un breve tiempo indicándolo. Si hay plazas libres el coche aumentará un poco de tamaño y aparecerá ante la barrera de entrada, ésta se levantará, el semáforo verde se encenderá y, a continuación, el vehículo se situará en alguna plaza libre. El programa debe buscar las plazas libres y dirigir automáticamente el coche hacia ella. Puede simplificarse el programa haciendo aparecer el coche directamente en la plaza libre sin realizar el recorrido.
Cuando queramos que un coche salga del parking, lo seleccionaremos y haremos clic sobre el botón triangular amarillo de la salida. El coche se dirigirá automáticamente hasta la salida (por
simplificar puede hacerse aparecer el coche directamente en la salida sin realizar el recorrido), se indicará durante unos segundos lo que debe pagar, se levantará la barrera, se encenderá el
semáforo verde y el coche saldrá, dirigiéndose otra vez al recuadro que simula a la calle.
Hay que tener cuidado de cuando seleccionemos un coche dentro del parking, el programa no haga nada si se hace clic sobre el botón de entrada. E, igualmente, si se selecciona un coche que está en la calle, el programa no haga nada si se hace clic sobre el botón de salida.
Sugerencias para resolver el problema:
- Se puede crear variable tipo lista para identificar a cada coche. Como si fuesen sus matrículas.
- Las matrículas pueden ser inicialmente los colores de los coches, para que sea más fácil durante la realización del programa. Así, si el coche morado es el primero de la lista matrícula, nos referiremos a él en el programa como elemento 1 de matrícula. Esto tiene la ventaja de que una vez realizados los programas para un coche, se pueden copiar fácilmente a los otros coches sin más que cambiar el nº del elemento.
- Conviene otra lista donde se indique, para cada coche que entra en el parking, su hora de entrada, consultando el cronómetro en el momento de entrar. Así, volviendo a consulta el cronómetro en el momento de salir, y restando podemos saber cuántos segundos ha estado.
- También convendría crear dos listas para guardar las posiciones x e y respectivamente de los coches en la calle, para situarlos al empezar el programa siempre en el mismo sitio y cada vez que salgan del parking.
- También puede ser útil crear una lista para indicar si cada coche está en la calle o en el parking. Así, cuando lo seleccionemos podemos saber donde está el coche. Así, por ejemplo, si seleccionamos un coche que ya está dentro del parking, el programa sólo ejecutará órdenes de salida pero ignorará órdenes de entrada. Y a la inversa si el coche está en la calle.
- Otra variable tipo lista que puede ser interesante es una que indique para cada plaza si ésta está libre u ocupada. Por ejemplo, se puede introducir el valor 0 cuando está libre y la matrícula del coche que la ocupa cuando esté ocupada. Esto nos facilitará que el programa pueda localizar una plaza libre buscando una que tenga un 0 en esta lista.
- Si vamos a hacer el programa en su forma más fácil, es decir, omitiendo el recorrido de los vehículos tanto para entrar como para salir, nos puede interesar una lista que nos indique la posición x de cada plaza (ya que la posición y es la misma para todas en este caso) para así indicar dónde tiene que desplazarse el coche que entra.
- Una variable necesaria seguro que es la que guarde el coche que está seleccionado en el momento en que se pulsa el botón de entrada o de salida, para saber el coche que hay que mover o del que calcular el importe a pagar.