jueves, 23 de enero de 2020

Festival Only Ships


FESTIVAL ONLY SHIPS

El 19 de diciembre de 2019 se estrenó la última entrega de  Star Wars en España. Esto ha espoleado a unos amigos para la creación de un festival de cine de ciencia-ficción que tendrá como característica principal que haya naves en la narrativa de todas las proyecciones. Por eso, el festival se llamará “Only ships” (Sólo naves).
El grupo de amigos se ha puesto en contacto con el centro comercial Carretres para alquilar una sala –rebautizada como “Sala Nostromo” para la ocasión (Es el nombre de la nave en la película “Alien, el octavo Pasajero”, que será la película que inaugure el festival, y de la que se cumplió su 40 aniversario en marzo) durante la celebración del festival.

Uno de los amigos es desarrollador de aplicaciones y ha decidido crear una aplicación –muy sencilla- que gestione la adquisición de entradas. Vamos a ayudar a este amigo a crear su App.



Todas las entradas valdrán 3 Euros
Según se entra a la aplicación, deberá tenerse la siguiente carátula y menú:



Nota: En el apartado de recursos, se tiene un String que nos da el ASCII Art correspondiente.
Nota 2: En el caso de llamada a funciones, deberán pasarse los parámetros necesarios.
La entrada a este menú –funcionando correctamente- valdrá 0,25 puntos (No es necesario que sea una función, puede estar dentro del main, pero sí que sea repetitivo y que llame a las funciones indicadas en lo sucesivo)
Si se selecciona la opción 0, -y sólo si se selecciona la opción 0- se abandonará la aplicación (0,5 puntos)
Si se selecciona la opción 1, se llamará a una función mostrar, que me mostrará el póster y el título de la película (Ascii Art para ello disponible en el apartado de recursos (1 punto)

Si se selecciona la opción 2, se llamará a una función mostrarSala que nos sacará el diagrama de estado actual  de la sala –Las butacas vacías se representan por ‘O’, las butacas llenas por ‘X’:




(En la anterior ejecución, ninguna entrada se ha vendido aún, por lo que no hay  ninguna butaca con el carácter ‘X’. La sala consta de 12 filas y 20 butacas por fila) (2 puntos)

Si se selecciona la opción 3, el programa llamará a la función comprarEntrada, que funcionará tal como se ve en el siguiente ejemplo de ejecución(Nos pedirá fila y la butaca que se quiere y tras preguntarnos si estamos de acuerdo con el precio, nos imprimirá la entrada(si estamos de acuerdo, claro), mediante una llamada a la función imprimirEntrada)

Esta función cambiará el estado de la sala, el cual mostraremos mediante la anterior función:


Como puede verse en el ejemplo, se tiene que la butaca 2 de la fila 2 ha cambiado su estado de ‘O’ a ‘X’
En el caso de que quiera comprarse una entrada para una butaca que ya se ha vendido debe aparecer lo siguiente:




(2 puntos)



La opción 4 permite devolver una entrada, lo cual vuelve a cambiar el estado de la butaca de ‘X’ a ‘O’. Para ello llamará a una función devolverEntrada, que realizará lo siguiente:


En el caso de que se quiera devolver una entrada que no había sido vendida, debe aparecer lo siguiente:



(2 puntos)




La quinta opción debe permitirnos acceder al valor de lo recaudado hasta ahora
(2 puntos)

Si el aspecto de la aplicación es igual al de las capturas, se concederán los 0,25 puntos restantes.




Recursos:
ASCII Art para el nombre del festival



Se debe usar el siguiente String para la carátula del festival:
(""+
"                      ______        _   _            _    ____        _          _____ _     _           \n" +
"                     |  ____|      | | (_)          | |  / __ \\      | |        / ____| |   (_)          \n" +
"                     | |__ ___  ___| |_ ___   ____ _| | | |  | |_ __ | |_   _  | (___ | |__  _ _ __  ___ \n" +
"                     |  __/ _ \\/ __| __| \\ \\ / / _` | | | |  | | '_ \\| | | | |  \\___ \\| '_ \\| | '_ \\/ __|\n" +
"                     | | |  __/\\__ \\ |_| |\\ V / (_| | | | |__| | | | | | |_| |  ____) | | | | | |_) \\__ \\\n" +
"                     |_|  \\___||___/\\__|_| \\_/ \\__,_|_|  \\____/|_| |_|_|\\__, | |_____/|_| |_|_| .__/|___/\n"  +
"                                                                         __/ |                | |        \n" +
"                                                                        |___/                 |_|        ");


ASCII Art para conseguir ver el título de la película:


(“   #                                                                                                                                                       \n" +
"  # #   #      # ###### #    #        ###### #          ####   ####  #####   ##   #    #  ####     #####    ##    ####    ##        # ###### #####   ####  \n" +
" #   #  #      # #      ##   #        #      #         #    # #    #   #    #  #  #    # #    #    #    #  #  #  #       #  #       # #      #    # #    # \n" +
"#     # #      # #####  # #  #        #####  #         #    # #        #   #    # #    # #    #    #    # #    #  ####  #    #      # #####  #    # #    # \n" +
"####### #      # #      #  # # ###    #      #         #    # #        #   ###### #    # #    #    #####  ######      # ######      # #      #####  #    # \n" +
"#     # #      # #      #   ## ###    #      #         #    # #    #   #   #    #  #  #  #    #    #      #    # #    # #    # #    # #      #   #  #    # \n" +
"#     # ###### # ###### #    #  #     ###### ######     ####   ####    #   #    #   ##    ####     #      #    #  ####  #    #  ####  ###### #    #  ####  \n" +
"                               #”);                                                                                                                           


ASCII Art para la imagen del monstruo:
("     ,'\"   _      _   \"`.\n" +
"     /.__, ._  -=- _\"`    Y\n" +
"    (.____.-.`      \"\"`   j\n" +
"     VvvvvvV`.Y,.    _.,-'       ,     ,     ,\n" +
"        Y    ||,   '\"\\         ,/    ,/    ./\n" +
"        |   ,'  ,     `-..,'_,'/___,'/   ,'/   ,\n" +
"   ..  ,;,,',-'\"\\,'  ,  .     '     ' \"\"' '--,/    .. ..\n" +
" ,'. `.`---'     `, /  , Y -=-    ,'   ,   ,. .`-..||_|| ..\n" +
"ff\\\\`. `._        /f ,'j j , ,' ,   , f ,  \\=\\ Y   || ||`||_..\n" +
"l` \\` `.`.\"`-..,-' j  /./ /, , / , / /l \\   \\=\\l   || `' || ||...\n" +
" `  `   `-._ `-.,-/ ,' /`\"/-/-/-/-\"'''\"`.`.  `'.\\--`'--..`'_`' || ,\n" +
"            \"`-_,',  ,'  f    ,   /      `._    ``._     ,  `-.`'//         ,\n" +
"          ,-\"'' _.,-'    l_,-'_,,'          \"`-._ . \"`. /|     `.'\\ ,       |\n" +
"        ,',.,-'\"          \\=) ,`-.         ,    `-'._`.V |       \\ // .. . /j\n" +
"        |f\\\\               `._ )-.\"`.     /|         `.| |        `.`-||-\\\\/\n" +
"        l` \\`                 \"`._   \"`--' j          j' j          `-`---'\n" +
"         `  `                     \"`,-  ,'/       ,-'\"  /\n" +
"                                 ,'\",__,-'       /,, ,-'\n" +
"                                 Vvv'            VVv'");

No hay comentarios:

Publicar un comentario