Desarrollo de Aplicaciones con App Inventor. Wings: Vuela sin estrellarte contra las rocas



Documentos relacionados
Ejercicio 1. Desarrollar un pequeño juego para practicar mecanografía.

Vamos a crear nuestro primer juego en el que tendremos que coger la comida que esta protegida por los gatos

Centro de Capacitación en Informática

ZCARTAS: Iniciación a la suma y resta de números enteros Introducción Actividad 1: Escenario con cartas numeradas desde -2 hasta 2...

Teclado sobre una PDA para Personas con Parálisis Cerebral

Para crear formularios se utiliza la barra de herramientas Formulario, que se activa a través del comando Ver barra de herramientas.

Para ingresar a la aplicación Microsoft PowerPoint 97, los pasos que se deben seguir pueden ser los siguientes:

GUÍA BÁSICA DE USO DEL SISTEMA RED

Los números racionales

CASO PRÁCTICO DISTRIBUCIÓN DE COSTES

La ventana de Microsoft Excel

Práctica 2 de Microsoft Access

Introducción al diseño híbrido con ZW3D

Balón Prisionero. Introducción. Scratch

Menús. Gestor de Menús

Vamos a ver las dos formas básicas de arrancar PowerPoint.

OBTENER DATOS EXTERNOS

Manual de usuario para Android de la aplicación PORTAFIRMAS MÓVIL

Instrucciones para la familiarización de los alumnos con el instrumento de evaluación de EECL (ES)

Servicios de Formación:

Programa Presupuestos de Sevillana de Informática.

Sergio Peñalba Lopez NIA:

Traslaciones, Homotecias, Giros y Simetrías

NOVEDADES Y MEJORAS. datahotel versión 9.00 TRABAJAR CON I.V.A INCLUIDO

Introducción. Ciclo de vida de los Sistemas de Información. Diseño Conceptual

Módulo 8: Ofimática básica. Unidad didáctica 4: Como obtener ayuda en Word. Procesador de textos: Word

Descarga Automática. Manual de Usuario. Operador del Mercado Ibérico de Energía - Polo Español Alfonso XI, Madrid

Tutorial de Introducción a la Informática Tema 0 Windows. Windows. 1. Objetivos

Manual de ayuda para crear y gestionar Tareas, como actividad evaluable

Creación de Funciones de Conducción

Otros tipos de Consultas

Operación de Microsoft Word

HERRAMIENTA DE CONTROL DE PLAGIOS MANUAL DE AYUDA

Este programa mueve cada motor de forma independiente, y cuando termina una línea pasa a la siguiente.

Manual Usuario Manual Usuario

Capitulo V Administración de memoria

El proceso de edición digital en Artelope y CTCE

Antivirus Avira. Inguralde [Enero 2011]

FORMACIÓN A DISTANCIA: CURSO EN UNIDAD USB

SIIT SISTEMA INFORMÁTICO DE INSPECCIONES DE TRABAJO. Modulo de Planificación Manual de Usuario

MONITOR DE PESO CALIBRADO POR PESO CONOCIDO Y POR SENSIBILIDAD CONOCIDA MS 3.3.2

Uso de varias pantallas y pantalla Splash

Experimento 7 MOMENTO LINEAL. Objetivos. Teoría. Figura 1 Dos carritos sufren una colisión parcialmente inelástica

Guía de uso de Moodle para participantes

Lección 24: Lenguaje algebraico y sustituciones

Capítulo En la sección anterior se explicó el diseño, construcción y programación del

WinHIPE: edición, compilación y ejecución de programas; y generación de animaciones web. Manual de usuario.

Los polinomios. Un polinomio es una expresión algebraica con una única letra, llamada variable. Ejemplo: 9x 6 3x 4 + x 6 polinomio de variable x

Módulo II - PowerPoint

Correspondencias entre taxonomías XBRL y ontologías en OWL Unai Aguilera, Joseba Abaitua Universidad de Deusto, EmergiaTech

Creando scrolls. Scratch: Entorno de programación

Manual de Usuario Ciclos Formativos Matriculación para Modalidad de Libre

Acceso a la aplicación de solicitud de subvenciones (Planes de Formación 2014)

EJERCICIOS ABDOMINALES

Plataforma Helvia. Manual de Administración. Bitácora. Versión

Instalación del programa PSPP y obtención de una distribución de frecuencias.

PROPUESTAS COMERCIALES

1. La nueva interfaz del programa

INVENTARIO INTRODUCCIÓN RESUMEN DE PASOS

MANEJANDO FICHEROS Y CARPETAS

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL

Índice general de materias LECCIÓN 7 74

Manual Word Tablas

REGLAMENTO DEL AJEDREZ. Tablero cuadrado 8x8 de 64 casillas con colores alternados (típicamente blanco y negro).

FOCO GESTIÓN DE GRUPOS

Documentación de la Práctica 1 para la asignatura de Nuevas Tecnologías de la Programación (NTP)

CONCEPTOS BASICOS. Febrero 2003 Página - 1/10

Comercial Cartas de Fidelización

MACROS Y FORMULARIOS

SOCIALIZACIÓN. Autor/a. J. Luis Domínguez

Región de Murcia Consejería de Educación, Ciencia e Investigación. Manual Usuario FCT

Como dibujar las vistas de una pieza en Autocad

Alta. En la plataforma. Uned- lued - Formatic. Patricia Rodríguez Mara Aguiar

1. Hallar a qué velocidad hay que realizar un tiro parabólico para que llegue a una altura máxima de 100 m si el ángulo de tiro es de 30 o.

A continuación, se detalla el uso de los accesorios más comunes:

Uso del programa CALC

RESOLUCIÓN DE ERRORES EN MOODLE CAMPUS VIRTUAL-BIRTUALA UPV-EHU

EDWIN KÄMMERER ORCASITA INGENIERO ELECTRÓNICO

Presentaciones. Con el estudio de esta Unidad pretendemos alcanzar los siguientes objetivos:

U.D.5: Diagramas de Gantt y PERT

PROYECTO EDUCATIVO LA CALERA

Tema 1: Fundamentos de lógica, teoría de conjuntos y estructuras algebraicas: Apéndice

INTRODUCCIÓN COMPONENTES

INSTALACIÓN DE ORACLE 8i (8.1.7) SOBRE NT

MANUAL DE AYUDA HERRAMIENTA DE APROVISIONAMIENTO

EXTRACTO Descripción del uso y manejo de SIRAIS 1.2

SIMULADOR DE REDES DE PETRI ASINCRONICAS

Manual de uso básico de la aplicación

Elementos de Microsoft Word

Manual Usuario Wordpress. Índice

Manual Impress Impress Impress Impress Impress Draw Impress Impress

AUTOMATIZACIÓN INDUSTRIAL

INSTRUCCIONES DE INSTALACIÓN Y RECARGA CISS HP CARTUCHO SERIE 1

Instrucción IrA (GoTo). Saltos no naturales en el flujo normal de un programa. Pseudocódigo y diagramas de flujo. (CU00182A)

Informática Aplicada a la Gestión de Empresas (IAGE) Parte III Excel e Internet Tema 2

Operación de Microsoft Excel. Guía del Usuario Página 79. Centro de Capacitación en Informática

GOOGLE NOTICIAS Y ALERTAS

podemos enfocar al funcionamiento del robot, es decir la parte de electrónica. Para que el

Instituto Mar de Cortés Elaborar Documentos en Procesador de Texto

Transcripción:

Desarrollo de Aplicaciones con App Inventor Wings: Vuela sin estrellarte contra las rocas

UCLM 2

Descripción del juego El funcionamiento del juego es similar al famosamente conocido Flappy Bird, aunque los pasos que se describen en esta guía solamente recogen el comportamiento básico del juego. Se trata de evitar una serie de obstáculos que se van acercando al avión. El movimiento del avión es muy sencillo, puesto que cae de forma constante, a menos que el jugador pulse repetidas veces sobre la pantalla, lo que provoca un pequeño ascenso que compensa la caída. El juego puede detenerse por varias razones: el avión ha llegado al suelo el avión ha tocado el borde superior de la pantalla el avión ha colisionado con un obstáculo. Los gráficos utilizados en el juego pueden obtenerse de http://opengameart.org, y en concreto se ha utilizado el paquete TappyPlane. A continuación se describe de forma detallada el proceso para completar el juego. La descripción se estructura en apartados orientados a resolver un problema concreto. Dentro de cada apartado se incluyen varias tareas, cada una de ellas con un propósito más detallado, más una descripción de cómo comprobar su correcto funcionamiento. Movimiento del avión El comportamiento del avión debe de ser el siguiente: 1. Cada vez que se inicia el juego parte de la misma posición inicial, en la parte superior izquierda de la pantalla 2. A medida que pasa el tiempo, el avión va descendiendo hacia el suelo. 3. Si el jugador pulsa sobre la pantalla, el avión realiza un pequeño ascenso, compensando el descenso automático. 4. El juego termina si el avión llega a tocar el suelo, o ha ascendido tanto que alcanza la parte superior de la pantalla. Para facilitar el proceso de desarrollo, y sobre todo cómo realizar las pruebas de su correcto funcionamiento, vamos a dividir el control del movimiento en 3 tareas sencillas, identificar su finalidad, describir cómo van a ser probadas, y mejorar el código: UCLM 3

Tarea 1: Control del descenso del avión, que implementará los puntos 1, 2, y parcialmente el 4 (detención al llegar al suelo). Tarea 2: Control del ascenso de la nave, correspondiente al punto 3, y control del tope superior (punto 4). Tarea 3: Mejora del código resultante. La foto del avión se ha obtenido del fichero planered1.png El fondo de pantalla se ha obtenido del fichero background.png. La ubicación inicial de la nave no será la que aparezca en el juego. El programa la cambiará cada vez que se pulse el botón de reset. Tarea 1: Control del descenso Prueba: A medida que pasa el tiempo el avión desciende. Uso de un botón de Start para colocar el avión en posición inicial. A continuación el avión debería descender hasta el fondo de la pantalla, y detenerse al llegar. El primer lugar deben añadirse en la pantalla del diseñador los 4 componentes necesarios para llevar a cabo: un botón, un lienzo, un sprite y un reloj. Ya en el editor de bloques debe describirse el comportamiento de los elementos. ImagenSprite (Avion) Foto: planered1.png Dirección: -90 Rota: desactivado Ancho: 44 Alto: 36 Las coordenadas (0,0) corresponden a la esquina superior izquierda de la pantalla. La nave nunca avanza ni retrocede, por lo que la coordenada x siempre tendrá el mismo valor. La posición de partida se fija al pulsar el botón de Start. Para ello se mueve el avión a las coordenadas (x, y) = (30, 100), y se fija la Velocidad del Sprite a 5 pixels/intérvalo. El intérvalo por defecto es de 100 ms, por lo que la caída se produce a 50 píxeles/segundo. Si se detecta que el avión ha tocado el borde se detiene la caída poniendo la velocidad a 0. Lienzo (Fondo) ImagenDeFondo: background.png Ancho: Ajuste al contenedor Alto: Ajuste al contenedor Botón (Start) Texto: Reset UCLM 4

Prueba: Pulsa el botón Start, y comprueba que la nave desciende suavemente y a una velocidad constante hasta llegar al borde inferior del lienzo, momento en el que se detendrá. Tarea 2: Control del ascenso Al pulsar sobre el lienzo la nave realiza un pequeño ascenso, compensando la caída. Si se alcanza el borde superior del lienzo, la nave también se detiene. Prueba: Desde la situación de reset pulsar la pantalla hasta que la nave ascienda al límite superior y se detenga. El control del ascenso solamente requiere añadir el bloque que captura la pulsación sobre el área del lienzo. En ese caso la coordenada Y se decrementará. El valor del decremento debe ser superior al de la caída (15) para que el movimiento de ascenso no requiera demasiadas pulsaciones. Se incluye una variable global para controlar si el juego se haya activo o no, para que el ascenso no funcione una vez terminada la partida. Si el valor de la variable no es cierto, el avión no se moverá, tal y como se aprecia en la condición del bloque. La pulsación del botón Start debe ahora incluir la puesta a cierto de la variable juegoactivo. El control del borde debe incluir también la puesta a falso de la variable, con el fin de que el avión no reaccione a la pulsación sobre el lienzo. UCLM 5

Prueba: Tras pulsar el botón Reset, cuando el avión comience el descenso, tocar varias veces en el área del lienzo para comprobar que también asciende. Repetir la pulsación hasta alcanzar el borde superior, instante en el que debería detenerse por completo el movimiento. Comprobar también que al alcanzar cualquier borde, la pulsación sobre el lienzo no tiene ningún efecto. Tarea 3: Mejora del programa Modificar el programa para evitar futuros bugs y mejorar la adaptación a los cambios. Prueba: Idem a las de la tarea 2. Se definen variables para sustituir los valores constantes utilizados en los bloques por 2 razones: 1. el significado del código es más claro si nos referimos al incremento de la subida que al valor 15, por ejemplo 2. Si quiere modificarse un valor concreto basta con modificar el valor de la variable, en lugar de tener que sustituir uno por uno todos los lugares donde ha sido utilizado Se modifican las constantes por las variables definidas. En el caso de la gestión de inicio del juego, se modifican las constantes y se crea un procedimiento que agrupa todas las acciones a realizar. La pulsación del botón Start simplemente debe llamar al procedimiento de UCLM 6

inciarjuego. Además se realiza la llamada al inicio del juego también al comenzar el programa, y no solo al pulsar el botón. Las fotos de las rocas se han obtenido de los ficheros rockdown.png y rock.png. Movimiento de una obstáculo Los obstáculos que debe salvar el avión se componen de 2 SpriteImagen que representan dos rocas, una en la parte superior, y otra en la inferior. Según sea su altura así será el hueco por el que debe pasar el avión. Inicialmente se trabajará con un tamaño y ubicación del hueco fijas, posteriormente se variará de forma aleatoria Tareas: 4. Movimiento ininterrumpido del obstáculo, apareciendo en la parte UCLM 7

derecha, y llegando hasta el borde izquierdo. 5. Activación/desactivación del obstáculo, de manera que al llegar al borde izquierdo el componente desaparezca. 6. Ajuste aleatorio del hueco del obstáculo. 7. Paso de los sprites como parámetros al procedimiento de activación, con el fin de que pueda reutilizarse para distintos sprites. Tarea 4: Movimiento ininterrumpido del obstáculo.desplazar un obstáculo formado por 2 sprites desde la parte derecha hasta la izquierda de la pantalla de forma cíclica. Prueba:.Comprobación de que el movimiento de derecha a izquierda no se detiene, y que ambas rocas se mueven alineadas. Además de los 2 sprites que forman parte del obstáculo, debe añadirse un Reloj que controlará la reubicación de los sprites. La animación consiste en colocar el obstáculo en la parte derecha de la pantalla, y dejar que se mueva a velocidad constante hacia la parte izquierda. Para ello debe modificarse la propiedad Dirección con el valor -90 (de derecha a izquierda), y desactivar la propiedad Rota. Cada vez que se active el temporizador (inicialmente fijado en 7 segundos), se colocarán ambos sprites en la parte derecha de la pantalla. El valor exacto se calcula restando del ancho total del lienzo el del propio sprite, asegurando así que ninguna parte queda fuera de la zona visible. La coordenada Y del la roca superior se ajusta al valor 0, mientras que la de la roca inferior utiliza un cálculo similar al anterior para ajustarse al suelo (independientemente del tamaño del dispositivo). Prueba: Al iniciar el juego comprueba que ambas rocas se mueven de forma cíclica y al mismo tiempo desde la derecha hasta la izquierda hacia la derecha de la pantalla. Observarás que hay un retardo inicial hasta que comienza el movimiento. Esto es debido a que éste no se activa hasta que se dispara el UCLM 8

temporizador, que tarda 7 segundos. Tarea 5: Activación/desactivación del obstáculo Controlar que al llegar al límite izquierdo, el obstáculo se oculte, en lugar de quedar parado hasta el disparo del temporizador. Conectar el comportamiento del obstáculo al botón de Start. Prueba: El obstáculo no queda esperando en la parte izquierda de la pantalla, sino que desaparece inmediatamente. Tanto al comenzar el juego como al pulsar el botón de Start el obstáculo regresa a la posición inicial e inicia el movimiento. Los pasos relativos a colocar el obstáculo en su posición y condiciones iniciales se trasladan a un procedimiento. Se añade también la activación de la visibilidad del obstáculo, puesto que se desactivará al llegar al final de pantalla. El procedimiento se ejecuta cada vez que se dispara el temporizador. También se ejecuta al iniciar el juego. Al detectar una colisión con la esquina superior izquierda de la RocaArriba1, se ocultan tanto ésta como la RocaAbajo1, ya que se mueven simultáneamente. UCLM 9

Prueba: Inicia el juego y comprueba que el obstáculo comienza su movimiento inmediatamente, se oculta al llegar al final, y reaparece de nuevo en el principio. Comprueba que al pulsar Start el obstáculo regresa a las condiciones iniciales. Tarea 6: Ajuste aleatorio del hueco del obstáculo Utilizando un tamaño de hueco fijo, variar la posición en la que se encuentra aleatoriamente en cada activación del obstáculo. Prueba: Cada vez que se activa el obstáculo el hueco varía su posición de forma aleatoria, pero siempre con un tamaño fijo, equivalente a 3/10 partes de la altura del lienzo. Para modificar el hueco que queda entre las rocas se juega con la altura de cada uno de los sprites. El proceso consiste en dividir la altura del lienzo en 10 segmentos. Después se obtiene un valor aleatorio, entre 1 y 5. La roca superior tendrá una altura equivalente al tamaño de un segmento multiplicado por el valor obtenido, es decir, su altura estará entre 1/10 y la mitad de la altura del lienzo. La roca inferior utilizará como altura el resultado de restar 10 3 segmentos de la roca superior, ya que el hueco equivale a 3 segmentos. Prueba: Comprobar que los obstáculos que aparecen tienen un hueco del mismo tamaño, equivalente a 3/10 del liezo. La posición del hueco debe variar en cada nueva activación del obstáculo. Tarea 7: Paso de los sprites como parámetros Modificar el procedimiento de activación del obstáculo para que los sprites utilizados sean recibidos como un parámetro, en lugar de ser fijos. Prueba: Idem a la tarea 6..En lugar de utilizar los sprites RocaArriba1 y RocaArriba2, ahora se reciben UCLM 10

como parámetros (spritearriba y spriteabajo). Esto obliga a reemplazar todos los bloques que los utilizan por bloques genéricos, que puedes encontrar en la categoría Cuaquier componente=>cualquier SpriteImagen. Estos componentes permiten especificar el sprite sobre el que operan, que en este caso será uno de los 2 recibidos por parámetros. Detección de colisiones, comienzo y fin del juego Para que el juego sea funcional es necesario tratar el caso de la colisión entre el avión y el obstáculo, y si se produce terminar el juego de manera apropiada. Esto requiere una nueva tarea: 8. Detección de la colisión del avión y parada del juego al producirse Tarea 8: Detección de la colisión del avión Detectar la colisión del avión con los obstáculos. Al producirse debe detenerse la ejecución del juego, que implica la congelación de todo el movimiento UCLM 11

Prueba: Al colisionar el avión con un obstáculo, se detiene el movimiento de todos los sprites Se introduce un nuevo procedimiento para controlar el final de juego, que ahora contempla la detención de los sprites correspondientes al obstáculo. Si se detecta una colisión del avión no es necesario comprobar contra qué, puesto que solamente puede ser un obstáculo. En ese caso se detiene el juego. El procedimiento de finalizarjuego se reutiliza en todas las condiciones de fin. El movimiento de los obstáculos solamente se produce si el juego está activo. Inclusión de más de un obstáculo en el juego La última parte del juego consiste en el uso de más de un obstáculo simultáneo. En esta guía utilizaremos 3 distintos. Este procedimiento se dividirá en 2 tareas: 9. Creación de una lista de obstáculos que contedrá todos los sprites correspondientes a los obstáculos, y modificación del programa para que extraiga los sprites de la lista, en lugar de utilizar unos fijos 10. Programación de la aparición de los obstáculos, utilizando un espaciado fijo entre ellos, siempre con el mismo patrón de activación. Tarea 9: Creación una lista de obstáculos El primer paso que debe seguirse es la adición de 4 nuevos sprites al lienzo: 2 rocas superiores y 2 inferiores. A partir de ahí: UCLM 12

Los nuevos sprites deben configurarse de la misma forma que los anteriores, pero puede ser de ayuda para la depuración utilizar anchos distintos para distinguir unos obstáculos de otros. Se definen dos nuevas variables globales, correspondientes a 2 listas: una para todas las rocas de la parte superior, y otra para las de la parte inferior. Se añade al inicio del juego la adición a cada lista de los sprites correspondientes. Además se inicializa mediante sendos bucles el estado de cada sprite a no visible. Prueba: Para comprobar el correcto funcionamiento se cada pareja de rocas basta con modificar el bloque del temporizador de manera que obtenga los sprites de las listas correspondientes. Variando de forma manual el número de índice puede comprobarse el funcionamiento de cada obstáculo por separado. UCLM 13

Tarea 10: Programación de la aparición de los obstáculos Para controlar la aparición de todos los obstáculos de forma ordenada se va a utilizar una variable referida al tiempo de juego. Además se requieren varios cambios en la interfaz de usuario, como son: Cambio del Intérvalo del reloj de obstáculos a 1 segundo (1000 ms), para disponer de más precisión Adición de un contenedor de disposición horizontal justo debajo del lienzo, que incluirá el botón de Start ya existente más una etiqueta, donde se mostrará la puntuación obtenida. Se definen una nueva variable global que corresponderá al tiempo de juego. Esta variable se incrementa cada vez que se dispara el temporizador, y por lo tanto contará segundos. A su vez se utiliza como puntuación, por lo que se muestra en la etiqueta de la interfaz de usuario. Para la activación de los bloquese se utiliza el siguiente mecanismo. Se divide el tiempo transcurrido entre 9. Según el resto resultante (valor entre 0 y 8) sea 0, 3 ó 6, se activará el primer, segundo o tercer obstáculo. Esto se hace seleccionando de la lista correspondiente los sprites a partir de su posición (1, 2, ó 3). Prueba: Puede comprobarse que el juego es totalmente funcional, que el tiempo transcurre mientras se juega, y que todo se detiene al producirse una colisión o alcanzar un extremo de la pantalla. UCLM 14

UCLM 15