domingo, 26 de enero de 2014

Conclusiones del producto para CyC

El producto que la empresa Floricultura ha realizado para la empresa CyC ya lo podemos ver en entradas anteriores, en este post explicaremos los problemas que nos hemos ido encontrando a lo largo del proyecto.

En primer lugar, tenemos que mencionar que, como ya vimos en clase, los programas de edicion de video requieren especial atencion ya que pueden ocasionar algunos problemas. En nuestro caso, se han creado los videos utilizando Movie Maker y usando Cinelerra. Al principio utilizar Movier Maker era bastante facil y no daba muchos problemas pero cuando quisimos trabajar con videos descargados de youtube para realizar otros videos nos vimos con serios problemas ya que esta herramienta se quedaba colgada y cuando conseguia responder no generaba bien el video (problemas con los formatos MP4). Aunque se cambio el formato de video a otros como AVI, MPG, WMV al provenir de youtube no se creaba un buen video.

Como alternativa pasamos a Cinelerra y nos paso de todo, a veces se nos cerraba el programa, otras veces se nos movian los elementos insertados y se desajustaba todo, etc. No obstante al final conseguimos crear los videos a base de mucho tiempo y paciencia y arreglandonoslas usando los dos editores para distintas cosas.

Por otro lado en cuanto a director, necesitabamos reproducir estos videos y no teniamos ni idea de como hacerlo, asi que tras buscar informacion nos encontramos los siguientes ejemplos en los que se describia como realizar estos efectos:

--VIDEO EN RETROCESO RAPIDO
sprite(x).movieRate=-2
--VIDEO EN PLAY HACIA ATRAS
sprite(x).movieRate=-1
--VIDEO EN STOP
sprite(x).movieRate=0
--VIDEO EN PLAY NORMAL
sprite(x).movieRate=1
--VIDEO EN AVANZA RAPIDO
sprite(x).movieRate=2
-- IR AL INICIO
sprite(x).movieTime=0 

todo bajo el evento on mouseDown

Esto nos facilito bastante la vida ya que nos costo encontrarlo pero al final lo conseguimos realizar correctamente y con buen resultado.

En resumen, lo que mas nos costo fue crear los videos y encontrar funcionalidades de macromedia director que desconociamos su codificacion, el resto del trabajo fue bastante ameno y llevadero y no ocasiono tampoco demasiados problemas.

jueves, 23 de enero de 2014

Habitify: Diseño y Arquitectura

Habitify: Diseño y Arquitectura


Metodología


Se ha desarrollado en prototipos (con un total de 7 iteraciones), tras los cuales se obtenía feedback con la compañía comprada, Habitify. En cada uno de ellos se han desarrollado diferentes características concretas, a excepción del primero, que se consiste en un proof of concept que nos ha permitido definir los requisitos iniciales (como se puede apreciar en nuestras entradas anteriores en el blog).

Arquitectura


En la siguiente imagen se puede ver un diagrama con la arquitectura general de este programa. En primer lugar tenemos el Stage, el entorno de ejecución. El Stage está compuesto por diferente Scenes. Estas Scenes serán la página principal, la página de elección de juguetes... etc. Dichas páginas tendrán un Frame Script (típciamente consistentes en un bucle continuo de ejecución de la misma escena para que el usuario se mantenga en ella) y diferentes Sprites, que son recogidos o bien en tiempo de compilación o bien en tiempo de ejecución (como se explicará más adelante). Estos están definidos por Sprite Scripts (comportamientos específicos de una instancia del elemento) o Cast Scripts (comportamientos generales de dicho elemento, y todas instancias de ese elemento comparten). Además, todos ellos están beneficiados por una serie de funciones globales generales que sirven para definir comportamientos que pueden ocurrir en cualquier escena desde cualquier script. Dichos comportamientos están en Movie Scripts y son llamados en la inicialización del programa. Esto hace que dichas funciones queden definidas y puedan ser llamadas. El principal beneficio de esta arquitectura es que permite evitar gran parte de la repetición de funciones que puede ocurrir entre diferentes scripts.

































Ejemplos

- Botones: Los botones están definidos utilizando Cast Scripts. Estos cast scripts definen tanto la acción del botón como el efecto on hover que da un efecto de profundidad. Esto funciona analizando el sprite (no el cast) sobre el que se ejecutando esa acción del ratón y reemplazándolo por otro sprite generado a través de otro cast (recurso).
- Frame Scripts: Los Frame Scripts definen los bucles de un frame (o en nuestra arquitectura, una escena). Se encargan de mantener el estado del programa. Para ello utilizan ciertas variables globales que permiten limpiar y reorganizar sprites generados dinámicamente. Por ejemplo, en la pantalla principal de generación de una habitación, tenemos lo siguiente:

 - Inicialización: La inicialización se hace utilizando movie scripts. El más importante define los diferentes canales que los sprites generados automáticamente utilizarán. Si no existieran ciertos límites, el usuario podría generar potencialmente infinitos creando un overflow. Esto además facilita la programación y el diseño general de la aplicacion, sin riesgo de que los canales se superpongan.

 - Paredes: Las paredes se seleccionan a través de una función global (setWalls) y un parámetro que depende del botón seleccionado. Su funcionamiento es sencillo: cargar la textura en alta resolución de la imagen (mismo nombre del botón pero con _orig al final del nombre para cargarlo sin necesidad de un lookup). Después, dependiendo de la perspectiva activa en el estado global de la aplicación, renderiza las paredes con el siguiente proceso:
    - Crear el sprite
    - Colocarlo en posición
    - Redimensionar el tamaño del elemento
    - Skew y rotación para adaptar la imagen a la perspectiva seleccionada


- Impresión: Esto ha causado un problema de licencias. Aunque se puede hacer una captura de pantalla e imprimir, esto requiere de un Xtra. Los Xtras no pueden ejecutarse en una versión educativa de Director. Por ejemplo, para imprimir y sacar la captura, podríamos utilizar printomatic para imprimir y ScrnXtra para capturar la pantalla. Aunque la documentación de los Xtras es clara y por licencia no se han podido hacer funcionar, se explica brevemente como sería su funcionamiento:
    - Cargar el Xtra: Utilizando la carpeta Xtras en el directorio de la aplicación con el fichero .dir
    - Realizar la captura: Utilizando ScrnXtra, llamamos a ScreenToMemberleft top right bottom (punto arriba a la izq y otro punto abajo a la derecha) memberName
    - Imprimir el cast member:
             

  set doc = new(xtra "PrintOMatic")
  newPage doc
  drawPicture doc, ourCastMember
  print doc
  set doc to void 
 

Proyecto final Divino

Proyecto final Divino


Como proyecto final nuestro objetivo era crear una aplicación para una vinoteca. El objetivo de esta aplicación es que los clientes puedan aprender sobre la existencia de diferentes vinos, ya sea por regiones o diferentes cosechas. También recomendamos vinos para diferentes tipos de comida.
Por último, hemos desarrollado un juego dinámico que aportará tanto entretenimiento como aprendizaje a nuestros clientes. Además, dará la posibilidad de poder obtener un descuento en sus compras en caso de haberlo realizado correctamente.

Antes de nada, nada mas ejecutar la aplicación se abrirá un breve video hecho en cinelerra que nos situe en el entorno de la vinoteca y nos lleve al menú.




El menú nos ofrece las distintas opciones que podemos hacer con nuestra aplicación. El objetivo de esta aplicación era ofrecer un tono amigable y cercano, que lleve a la gente que no tiene un gran conocimiento sobre vinos a sentirse cómodo al manejarla. Tanto esta interfaz como el resto están hechos con photoshop.

Si por ejemplo clicamos en el bocadillo de buscar vino para determinadas comidas nos llevará a esta nueva interfaz:



En esta podremos elegir el diferente tipo de comida con la que queramos acompañar nuestro vino. Al pulsar alguna de las opciones (carne, por decir una), nos mostrará el siguiente listado de vinos.




En todas las pantallas tendremos la opción de volver tanto a la pantalla anterior como al menú principal.

Al igual que podemos elegir el tipo de comida para el que queremos destinar el vino, de una misma manera podremos elegir que nos ofrezca una distinta variedad de vinos dependiendo de la región o cosecha a la que pertenezca.







Cada botón que pulsemos nos llevará a un listado de nuestros vinos seleccionados.




Finalmente tendremos el juego con el que los clientes podrán obtener un descuento en caso de acertar todas las preguntas. Cada vez que dejemos a medias la ejecución del juego el contador de aciertos y fallos volverá a inicializarse.



Utilizamos photoshop, director y cinelerra para realizar el proyecto. Hicimos todo conjuntamente, y conforme realizábamos algo nuevo lo implementábamos en la versión conjunta.

Tuvimos problemas para realizar un video, ya que en nuestros propios ordenadores no nos funcionaba correctamente el cinelerra, por lo que tuvimos que hacerlo el último día de clase. Debido a ello (y que durante el mismo día de clase también tuvimos problemas con este programa) terminamos sacando un video peor del que esperábamos.

Por otro lado, estuvimos pensándo en diferentes maneras para que al pulsar los botones de la aplicación estos se oscureciesen o cambiasen de color. Al final nos decidimos por hacer diferentes imágenes y que cuando se pulsase el botón la primera imagen se borrase completamente y la nueva tuviera una opacidad del 100%.

Finalmente, teníamos idea de que los usuarios guardasen los resultados de las partidas que realizasen con el juego, y que si se salían del juego en mitad que tuvieran la posibilidad de retomar la partida desde el mismo punto. Esto estuvimos buscando maneras de llevarlo a cabo, pero al final no supimos realizarlo.

Class&Food - Producto Final

Hemos simulado mediante adobe director una web explicativa para la empresa Class&Food. Ésta es una cadena de comida rápida de muy alta gama que está buscando franquiciadores para extender su negocio. Para ello hemos creado varios apartados en la “web” en los cuales se explica las siguientes características de la empresa:

•    Nuestras señas: Aquí explicaremos mediante un pequeño texto descriptivo, el estilo del local así como el del personal que atiende el mismo. Además, en este apartado se dispondrá de dos galerías de imágenes para ejemplificar lo antes expuesto








•    Nuestros platos: El funcionamiento de este apartado es muy similar al anterior, pero esta vez centrado en los platos ofrecidos por el restaurante. Al igual que antes, incluimos una pequeña descripción escrita y una galería de fotos.

 


 •    Clientes: En esta sección tendremos una breve descripción de los clientes que frecuentan Class&Food, así como una pequeña muestra de fotos de los mismos.





•    Socios: Un breve repaso de las marcas que colaboran con nosotros.




 •    Datos económicos: Aquí mostraremos la evolución económica de nuestra empresa. Incluye gráficas sobre ingresos y beneficios, cuota de mercado y evolución financiera.



•    Simulador: Debido a que está es una “web” para la captación de franquiciados dispones de un simulador para estimar el rendimiento económico de una futura franquicia. En el introduciremos los parámetros de habitantes de la zona, renta media e inversión inicial para obtener una gráfica explicativa.

Esta sección ha sido la que más tiempo y esfuerzo nos ha costado. Para empezar, los desplegables para las variables de renta per cápita, habitantes de la zona e inversión. Estos constan de varias imágenes, simulando un desplegable, y al pasar sobre una de las opciones ésta se resalta cambiando la transparencia de una imagen por otra. Una vez seleccionadas las tres variables en los desplegables aparecerá la gráfica correspondiente, hecha con el programa Matlab. Al cambiar los parámetros la transparencia de esta imagen la ponemos a 0 y a 100 la de la gráfica nueva.




 Además de estos apartados, disponemos de un pequeño video introductorio con el logo de la empresa, así como un apartado de inicio con un video que muestra un popurrí de imágenes diversas de la empresa.








Proyecto para la empresa TravelAir. Por Zulema e Iñaki

Según nos encargó la empresa TravelAir, querían que hiciéramos una aplicación para que los viajeros potenciales pudieran buscar un destino para sus vacaciones.
La aplicación funciona de dos formas: 

  1. Elige un destino de entre los posibles.
    Sobre un mapamundi mostramos los destinos a los que llega la empresa y pinchando sobre estos pasamos a ver información relacionada.
  2. Indica tus preferencias y te mostramos el destino que mejor se adecua a estas. Así, mostraremos de entre todos los destinos posibles uno.


Una vez elegido el destino se lo mostramos al cliente junto con el logo de la empresa para conseguir así publicidad.

En cada destino mostramos fotos de hoteles, gastronomía, festividades, deportes, etc. según lo que sea más relevante. 



Como detalle indicar que el objeto inferior, que en este caso es un autobús londinense, representa algo del destino elegido y se mueve conforme vamos pinchando en el letrero de la derecha




En todo momento, podemos volver al inicio del programa pinchando sobre el icono de la casa que está arriba a la derecha o botón Fin del Viaje si estamos en un destino.

El trabajo lo hemos ido haciendo conjuntamente. Ambos hemos hecho de todo: mientras uno trabajaba sobre Director, el otro preparaba las imágenes o sonidos que queríamos usar en nuestra aplicación. Otro día cambiábamos de trabajo. No quisimos hacer dos secciones individuales para luego juntarlas por que fuera lo más homogéneo posible. Si dividimos el trabajo, es más difícil hacer que ambas presentaciones sean idénticas. Al trabajar sobre un sólo proyecto, consiste en darle continuidad a lo que ya está hecho.

A la hora de implementar el proyecto el momento en el que mayor dificultad hemos encontrado es a la hora de conseguir el movimiento fluido del objeto representativo de cada destino (en este caso el autobús), ya que aunque conseguíamos que se moviese, cuando llegaba a una posición hacia un último movimiento hasta colocarse, es decir se deslizaba hasta un punto se paraba y volvía a avanzar unos milímetros. Nos dimos cuenta que nuestro problema era el tomar como referencia tres puntos, el inicial, medio y final. Así que decidimos finalmente implementar  tomando únicamente el punto inicial como referencia, de este modo cuando el usuario pulsa en el letrero en el segundo cartel, el objeto se mueve una distancia X (averiguada y fijada anteriormente) desde el punto inicial, y desde la posición inicial+X (cuando el objeto se encuentra en medio) se mueve otra distancia Y si se pulsa en el tercer letrero del cartel. Se repite el proceso desde la posición inicial+X+Y (cuando el objeto se encuentra totalmente a la derecha).


E4C

Durante estos meses hemos estado trabajando duro para poder ofrecer una experiencia totalmente interactiva a la par que ilustrativa sobre las energías renovables y el modelo energético que ha desarrollado la empresa E4C. Se ha explotado al máximo la estrategia de gamificación para que el usuario se sienta más cercano y amenizado a través de la interacción.

Estas son las pantallas de nuestra aplicación:


- Pantalla principal en la que tenemos un vídeo de promoción y un guia pájaro que indica a donde lleva cada una de las opciones que el usuario puede escoger.


- Pantalla en la que podrás ver que es E4C centrados en el medio ambiente. 
Dentro  de cada clase de fuente de energía, el usuario puede escoger entre diferentes medio ambientes y comprobar el impacto beneficioso de las propuestas sobre las existentes no renovables.


- En la otra pantalla podrá ver la posible planificación para llevar a cabo una instalación de sistemas de explotación renovables. El usuario puede utilizar la paleta de símbolos para realizar una simulación del coste que supondría la instalación  y el impacto que generaría al medio.



Y en los ejemplos un vídeo sobre nuestras instalaciones... Una experiencia Turing-completa en la que se invita al espectador a visitar las oficinas e instalaciones de la compañía.



El desarrollo ha sido intenso y cada una de las fases y pantallas ha requerido de nuestros más grandes esfuerzos, tanto para idear el concepto como para llevarlo a cabo en Adobe Director ®.

En un principio teníamos pensado crear una infografía interactiva para la pantalla final ejemplos. Sin embargo, llegamos a la conclusión de que sería mucho más ameno para el usuario poder ver un vídeo en el que aparecieran los responsables de la empresa explicando la misma. Dentro vídeo...



Producto extra

El equipo de diseño Class&Food también ha desarrollado por petición de su cliente Fruxotic, una papeleta informativa con la que potenciar en mayor medida la fidelización de clientes.

Dicho panfleto contiene el nombre de la comparía "Fruxotic", un eslogan "Disfruta nuestra exótica fruta" y un código QR con el que descargar la aplicación.

El resultado final se puede apreciar en la siguiente imagen.



Producto final: La careta

Somos los desarrolladores contratados por "La careta" y este es el resultado de nuestro trabajo.

Durante este tiempo hemos desarrollado una aplicación interactiva que permite confeccionar disfraces personalizados, basados en la superposición de complementos sobre un maniquí. Esta aplicación debe interpretarse como una primera versión del producto para la empresa, dado que todavía no disponemos de todo su catálogo y únicamente se han incluido unos pocos modelos de disfraces.

La función principal de la aplicación pretende ser la de un catálogo online en la que además de poderse ver los disfraces, se pueda hacer una solicitud de presupuesto del disfraz confeccionado a la tienda.

La primera vista de la aplicación muestra una escena cuidadosamente tratada, en la que puede verse el logo de la empresa en los pliegues de un telón la siguiente forma:


En esta escena deberá pulsarse en la cuerda del telón, que tras esto, elegantemente se desplazará hacia abajo mostrando el cartel con el menú principal:


Volver a pulsar sobre la cuerda hará desaparecer de la misma manera el menú.

En este punto puede quererse una breve explicación de como funciona la aplicación. Para esto se ha diseñado el botón tutorial, que mostrará un nuevo cartel con este contenido.


Una vez leído puede cerrarse dándole al botón de aceptar.

Para crear un nuevo disfraz basta con, desde el menú principal pulsar el botón "Nuevo". Esto abrirá progresivamente el telón dejando ver el maniquí con la ropa estándar.



En esta vista pueden editarse cada una de las partes del maniquí haciendo click en las flechas correspondientes, dando lugar a los más estrambóticos disfraces. Además, para tratar de hacer sonreír al posible usuario, dado que un disfraz es un complemento de ocio y diversión, sonará de fondo durante esta escena el ya clasico "Awesome song" de Barney Stinson.

Desde este momento, en cualquier instante puede volver a desplegarse el menú principal haciendo click en el menú principal, ya sea para reiniciar el modelo, para volver a ver el tutorial, para cerrar la aplicación o para enviar el disfraz a la tienda y solicitar un presupuesto desinteresado.


Al pulsar este último botón se abrirá un formulario estándar de envío de correo con la información del disfraz actual, ya automáticamente introducida. En este correo puede introducirse toda la información que se desee, pero es importante para mantener la veracidad del presupuesto, que no se modifique la linea con las partes de los disfraces.



Por último puede cerrarse el telón y la aplicación con el botón de salir.

 
 
Los problemas principales encontrados durante la realización del proyecto han tenido que ver con la edición y tratamiento de las imágenes. Ha sido bastante costoso encontrar imágenes que cuadren adecuadamente con el modelo elegido. Además ha habido que recortarlas teniendo en cuenta las proporciones del modelo.
 
Otro punto bastante problemático ha sido trabajar con todas las imágenes superpuestas en director. Al basarse en opacidad de capas,  todas las imágenes ocupan el mismo espacio en el lienzo de director, con lo que al tratar de ajustarlas siempre se selecciona la que ocupa la primera posición en esa coordenada.
 
 
Como otros problemas, cabe añadir que al trabajar en diferentes ordenadores con diferentes resoluciones y tipos de letra, ha habido ciertos problemas con la compatibilidad en este sentido. De la misma forma, y en este problema se ha caído en el último momento, en los ordenadores que no tienen un cliente de correo por defecto, no se abre el formulario de correo para enviar a los desarrolladores la configuración elegida.
 
 
Por último, hay que comentar que al trabajar con diferentes programas de edición de imagen, sobre distintas plataformas y al trabajar con distintas versiones de director ha habido temas de compatiblidad que solucionar durante las importaciones.
 
 
Los scripts más problemáticos han sido los de cerrar la aplicación y envío de correos. Para el cierre de la aplicación no se consiguió encontrar fácilmente el método, y se decidió un método estándar de cierre de aplicación lingo, que incluso cierra director si se pasa por el frame. Para el envío de correos se estudiaron varios métodos, basados en capturas de pantalla, pero finalmente se decidió enviar los códigos de cada uno de los complementos elegidos.


Producto final: Avance Films


Se ha desarrollado una aplicación interactiva que se incluirá como extra en la siguiente película de la productora Avance Films. Durante el desarrollo de la misma se han encontrado numerosos fallos a la hora de incluir los vídeos que anteriormente habíamos creado en la misma, así que se sustituyeron por una serie de efectos realizados en Director para solventar este problema.

La aplicación consiste en la recreación de una película de terror, en la que el usuario escoge el final de la misma. Ésto se consigue dándole a escoger varias opciones consecutivas como posibles caminos por donde avanzar, y dependiendo de su elección conseguirá sobrevivir o no. Si el usuario consigue escapar, se le facilitará un cupón de descuento para películas de la productora Avance Films. Si, en cambio, muere durante la aplicación, se le dará la oportunidad de acceder a este cupón si acierta a la mayoría de preguntas de un test sobre las películas de terror.

Para realizar la aplicación, se han cogido capturas de distintos juegos de terror en primera persona como imágenes los fondos en las distintas partes de la aplicación, ya que queríamos que el usuario  tuviera la sensación de ser él el que estuviera viendo y haciendo las diferentes acciones dentro de la aplicación. Han sido de gran ayuda los diferentes tutoriales facilitados en la asignatura, para refrescar y resolvernos las dudas con algunos aspectos de Director y su lenguaje de programación, Lingo. También hemos utilizado Photoshop para retocar las distintas imágenes que utilizamos en la aplicación, como por ejemplo la puerta remarcada en rojo que sustituye a la original al pasar el cursor del ratón por encima.

El menú principal de la película sería así:



El cursor del ratón se ha sustituido por una mano durante la mayor parte de la aplicación (en otras partes se sustituye por otros elementos típicos del cine de terror, como por ejemplo una linterna que ilumina parte de la pantalla), y al pasarlo por encima de las posibles opciones a escoger o botones a pulsar, éstos de remarcan en rojo o cambian el color de las letras, para facilitar que el usuario encuentre las zonas donde interactuar con la aplicación.
Para sustituir el cursor, inicialmente da muchos problemas a la hora de cambiar el cursor en Director, pero en vez de eso hemos hecho al cursor invisible (con la orden "cursor 200") y al salir de cada frame, movemos al sprite que queremos que sea nuestro cursor a la posición del cursor (set the locH of sprite 15 to the mouseH y  set the locV of sprite 15 to the mouseV, cada orden en una línea distinta).

Posteriormente, cuando el usuario pulsa "Extras", se le pide que introduzca el nombre para registrarse:



Una vez introducido, comienza el juego...


Si escoge el camino erróneo, el usuario llegará a una habitación donde falla la luz, apareciendo el primer monstruo de la película y matando al jugador.





En cambio, si escoge el camino correcto, llegará a la siguiente toma de decisiones.



Si decide continuar en vez de probar a abrir la puerta, verá un vídeo (hecho con Director debido a los errores del mismo, como ya se ha comentado antes) donde llega a un pasillo



En esta escena se recrea, de manera auditiva, que el jugador avanza, abre una puerta y entra(la imagen va perdiendo luz) en una habitación oscura, donde le espera el segundo monstruo para matarlo.



En cambio, si decide intentar abrir la puerta, deberá resolver un minijuego en el que deberá colocar la llave correcta en cada cerradura



El jugador dispondrá de tres intentos para poder abrirla y continuar a la siguiente opción, pero si falla se verá obligado a continuar sin abrir la puerta, por lo que morirá posteriormente.



Si consigue abrirla...



... decidirá a qué parte del bosque dirigirse. Al escoger el camino incorrecto, llegará al segundo minijuego, en el cual está totalmente oscuro y debe iluminar con la linterna (su puntero de ratón) el bosque, donde encontrará al tercer monstruo.




 Una vez lo haya encontrarlo tres veces, se verá el "vídeo" donde el monstruo avanza y mata al jugador.



Finalmente, si escoge el camino seguro, conseguirá escapar del bosque, habiendo conseguido el único final en el que sobrevive



Si en alguna de las opciones anteriores el jugador muere, verá la siguiente pantalla...



... donde se le da la opción de hacer el siguiente test para intentar ganar el cupón de descuento:



En esta imagen debemos mencionar que no se pudo eliminar de forma agradable el fondo de cada respuesta, ya que al hacerlo el recuadro que se marca al seleccionar la respuesta se queda prácticamente invisible, por lo que decidimos dejarlo de esta manera, en la que se ve el recuadro, aunque cada respuesta quede algo desagradable a la vista.

Si el usuario responde a menos de cuatro preguntas correctamente, no podrá ganar el cupón de descuento.




En cambio, si responde al menos a cuatro de las seis preguntas correctamente, se le llevará a la pantalla  del cupón de descuento, que coincide con lo que ve el jugador después de escapar con vida.



Cabe destacar que el cupón de descuento es un número aleatorio entre 0 y 25999, ambos inclusive, para representar los códigos disponibles para poder llevar a cabo el descuento en la compra de películas de la empresa Avance Films.

Y eso sería todo el contenido de nuestra aplicación y  y nuestra experiencia desarrollándola, esperamos que os guste y... ¡Feliz muerte!