Mover y cambiar el tamaño de las Zonas

Slides:



Advertisements
Presentaciones similares
PPTCES011CB32-A09V1 Movimiento con velocidad constante MUR.
Advertisements

LIDAR LI GHT D ETECTION A ND R ANGING. QUE ES LIDAR Es una tecnología que permite determinar la distancia desde un emisor láser a un objeto o superficie.
Búsqueda de información en. BÚSQUEDA DE PALABRAS EXACTAS… Escribimos entre comillas para buscar las palabras exactas en el mismo orden. En nuestro ejemplo:
Word.  Temas: En este recuadro se puede especificar el tema que todas las hojas del documento deben tener como un color suave o fuerte dependiendo del.
ESTRUCTURAS DE DATOS Y ALGORITMOS Samuel Peñaló
Introducción a la estadística. ¿Qué es la estadística? La Estadística es la parte de las Matemáticas que se encarga del estudio de una determinada característica.
Clase 3: primeros programas (1ª parte) iic1102 – introducción a la programación.
Logrando Exito en la Feria de Ciencias. ESCOJE UN TEMA Escoje un tema que es interesante para ti o algo que te gustaria saber mas de ello.
Tema 1: Introducción a la estadística ● Presentación de datos estadísticos ● Presentación escrita ● Presentación tabular ● Lenguaje estadístico ● Tablas.
Lenguaje de programación: Lua Fundamentos de lenguaje de programación. Iván Cardemil Patricio Tudela Camilo Rojas Llosect Moscoso.
¿Que es PHP? PHP Hypertext Preprocessor Y solo porque me quiero hacer el profesor cool y meter un chiste: PHP también significa: Para Hacer Páginas.
¿Que es PHP? PHP Hypertext Preprocessor Y solo porque me quiero hacer el profesor cool y meter un chiste: PHP también significa: Para Hacer Páginas.
PROGRAMACIÓN ORIENTADA A OBJETOS SEGUNDA UNIDAD: “CLASES, OBJETOS Y MÉTODOS” IRVING YAIR SALAS CHÁVEZ ING. EN SISTEMAS COMPUTACIONALES - ITSLP.
¿Qué es Excel? Taller Básico de Excel (3/5)
Funciones.
Clases y Objetos.
BUAP-FCE-ISA : FÍSICA I
Convenciones de nomenclatura y diseño
Estructuras de Control en Visual Basic.net
Operadores Java es un lenguaje rico en operadores, que son casi idénticos a los de C/C++.
BUCLES Realizan de forma rápida cálculos repetitivos dentro de código.
Artículos Unidades de medida
HERRAMIENTAS DE INFORMATICA
PHP Hypertext Preprocessor
Sesión Taller N˚8 Matemática
“POLIMORFISMO PARAMETRICO”
Programación Orientada a Eventos
IMÁGENES EN PROCESSING
Estructuras de Control en Visual Basic.net
Movimiento.
CONFIGURAR PÁGINA Antes de imprimir una hoja de cálculo, es conveniente que configuremos la página, para modificar factores que afectan a la presentación.
Modelos de Simulación.
Elementos avanzados en GDevelop
FUNCIONES PREPARATORIAS 1/4
MANEJO DE ARCHIVOS DIGITALES
ESPACIOS VIRTUALES Plataformas Blogs Redes sociales Wikis
Introducción a la Física Newtoniana
ISOMETRIA PLANO CARTESIANO
Programación Orientada a Objetos
ADMINISTRACIÓN DE USUARIOS
CONTENIDO HIPERVINCULOS: ¿Qué es scratch? Interfaz grafica de scratch
Marco de referencia Todo a nuestro alrededor se mueve incluso los seres humanos, estamos en constante movimiento. El movimiento, se encuentra en cada parte.
Fundamentos de programación en TIG 4. Aptana y Arcpy
Estructuras de control en PHP
Hipervínculos scratch
Estas dos líneas de código permiten al Asm iniciar en Code Segment
ESTRUCTURAS DE CONTROL EN VISUAL BASIC.NET Prof.: Rafael Mourglia.
UNIVERSIDAD DE PUERTO RICO RECINTO UNIVERSITARIO DE MAYAGUEZ
Scratch Presentado por: Sharon Daniela Bustos Barón. 901 J.M.
Clases y objetos.
Departamento: INGENIERÍA MECÁNICA, ENERGÉTICA Y DE MATERIALES
¿Qué es un hipervínculo? Fabiola Yazmin Gómez Torres. 1.F t/m BGC.
Joselin Elizabeth Raygoza Chávez 1-A T/M Tecnologias de la Información.
¿Qué es un hipervínculo? . Un hipervínculo es un enlace, normalmente entre dos páginas web de un mismo sitio, pero un enlace también puede apuntar a.
LAS TORTUGAS.
ACTIVIDAD 3 MENDEZ SOTO KARLA ELIZABETH 1º F T/M 22/11/18 MAESTRA: ADRIANA UBIARCO TECNOLOGÍAS DE LA INFORMACIÓN HIPERVINCULOS.
TRANSFORMACIONES ISOMÉTRICAS En una transformación isométrica:
NÚMEROS REALES U. D. 1 * 4º ESO E. Angel Prieto Benito
MANEJO DE UBUNTU COMANDOS SHELL / TERMINAL.
Programación Modular Programación de Computadoras - Hugo Vega Grupo2: Reina Rodríguez Miriam Salluca.
Guía teórica de manejo de estructuras de datos
Vamos a estudiar un movimiento llamado MAS, Movimiento Armónico Simple. Para ello, empezaremos viendo una serie de definiciones sencillas: Movimiento.
CONTROLES Y ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN  1. Algoritmos: conjunto de instrucciones programadas para resolver una tarea específica.  2. Datos:
Mientras estudian cinemática, ¿Con que rapidez se mueven en relación con las silla a la que están sentados? ¿Y en relación con el sol?
Conceptos básicos II. – Game Maker. –.
MÈTODO DE INTEGRACIÓN “EULER”. MÉTODO DE EULER La idea del método de Euler es muy sencilla y está basada en el significado geométrico de la derivada de.
LAS CLAVES MUSICALES. ¿QUÉ SON? Antes de empezar a comprender estos conceptos, debemos tener claro que el sonido es INFINITO. Y los seres humanos tenemos.
Estructura de la programación según grupos de información
CONTROL DE MOTORES PASO A PASO MEDIANTE MICROCONTROLADORES.
UNO DE ESTOS CUADROS TIENE ELEMENTOS SINGULARES, EL OTRO REPETITIVOS... Cuando hay elementos repetitivos podemos estudiarlos mediante LA SIMETRIA.
Transcripción de la presentación:

Mover y cambiar el tamaño de las Zonas Kenobi-LJN

Introducción. ¿Por qué usar LUA? Aspecto de una zona en LUA Las funciones de LUA específicas para zonas El OriginalPoint, la clave Creando zonas matemáticamente (cuadrado) Generando cualquier polígono regular (usando bucles) Mover una zona Girar una zona no regular (y ya que estamos, escalarla) Hacer que una zona siga una trayectoria fija Hacer que una zona persiga al jugador Generar zonas alrededor del jugador Generar zonas al vuelo Usar una librería externa

1. Introducción. ¿Por qué usar LUA? En Urwigo no podemos modificar todas las propiedades de una clase. Lua tiene funciones epecíficas. Lua trabaja con el identificador, no con el nombre, por lo que cada objeto ha de ser identificado.

1. Introducción. ¿Por qué usar LUA? Ha de ser único. Case sensitive (como todo en Lua). No puede incluir espacios. No puede empezar con un número. No se aceptan caracteres con acentos ni guiones (-), pero sí guiones bajos (_).

2. Aspecto de una zona en Lua Estamos familiarizados con el entorno gráfico de Urwigo, pero… ¿qué aspecto tiene una zona en LUA? Podemos compilar un .gwz con un cartucho de prueba, del cual extraeremos el código LUA para aprender qué aspecto tiene una zona.

2. Aspecto de una zona en Lua

3. Las funciones de LUA específicas para zonas Wherigo.VectorToZone(punto, zona) Devuelve la distancia y rumbo de un punto a una zona. Wherigo.VectorToSegment(punto, extremo1, extremo2) Devuelve la distancia y rumbo de un punto a un segmento definido por sus dos extremos. Wherigo.IsPointInZone(punto, zona) Devuelve true o false si el punto está o no en la zona. Wherigo.VectorToPoint(punto1, punto2) Devuelve la distancia y rumbo desde punto1 a punto2. Wherigo.Distance(valor, ‘unidades’) Transforma un valor en objeto distancia (con unidades). Wherigo.TranslatePoint(punto, distancia, rumbo) Devuelve las coordenadas de un punto tras moverlo una distancia según un rumbo.

4. El OriginalPoint, la clave El OriginalPoint de una zona es el centro geométrico de la misma. En Urwigo se genera automáticamente tras definir los puntos de zona, pero no puede modificarse. Con LUA podemos modificarlo, moverlo, y generar puntos de zona a su alrededor.

5. Creando zonas matemáticamente (cuadrado) Funciones escritas en: View > Lua user functions Las llamaremos con una caja de “Lua user code” en cualquier parte de nuestros árboles de código.

5. Creando zonas matemáticamente (cuadrado)

6. Generando cualquier polígono regular (usando bucles)

6. Generando cualquier polígono regular (usando bucles) For i=1, numeroLados, 1 do Un bucle for realiza el código entre la línea for y la línea end, un cierto número de veces. Ese número de veces viene determinado por i. En nuestro caso, i empieza en 1, termina en numeroLados, y cuenta de 1 en 1. Orientacion+((360/numeroLados)·i) En el caso del cuadrado sabíamos que cada vértice está girado 90º (360/4). Para un polígono genérico, el giro de cada vértice viene determinado por 360/numeroLados.

6. Generando cualquier polígono regular (usando bucles)

7. Mover una zona O bien movemos la zona completa punto a punto… Esto es útil para zonas no regulares o dibujadas a mano. El problema que tiene es que a priori no sabremos cuántos puntos tendrá la zona que queremos mover. Podemos solucionarlo haciendo uso de la función interna table.getn(array), que cuenta el número de elementos de un array (en nuestro caso, el array zona.Points) O bien movemos el OriginalPoint y regeneramos la zona a su alrededor. Esto nos es útil para zonas geométricas regulares según las circunstancias.

7. Mover una zona

8. Girar una zona no regular (y ya que estamos, escalarla) Regeneraremos la zona desde el OriginalPoint, añadiendo un giro. Según vimos en el capítulo 3, 5 y 6, Wherigo.TranslatePoint necesita una distancia y un rumbo desde el OriginalPoint a cada punto de zona. En una zona geométrica, la distancia era un parámetro y el rumbo conocido (determinado por 360/numeroLados). Para una zona no regular, dibujada a mano, tenemos que obtener el rumbo y distancia desde el OriginalPoint a todos y cada uno de los puntos de la zona. Usaremos Wherigo.VectorToPoint.

8. Girar una zona no regular (y ya que estamos, escalarla) *Hemos usado un parámetro factor multiplicado a distancias[i] para que esta función también sirva para cambiar el tamaño de zona.

8. Girar una zona no regular (y ya que estamos, escalarla)

9. Hacer que una zona siga una trayectoria fija La trayectoria será el contorno de otra zona. Cada punto de dicha zona serán los pasos de la zona móvil, por lo que conviene hacerlos equidistantes. En el evento que desencadene el movimiento (por ejemplo “on elapse” de un timer de tipo “interval”), obtendremos los rumbos y distancias desde el OriginalPoint de la zona móvil al siguiente puto de ruta. En cada paso, sumaremos 1 a una variable global. Si dicha variable global sobrepasa el número de puntos de ruta, la reiniciamos a 1 (para dar otra vuelta). Por último, movemos la zona entera con la función comentada en el capítulo 7.

9. Hacer que una zona siga una trayectoria fija * Si la zona móvil fuera geométrica, bastaría con igualar su OriginalPoint a cada punto de ruta y generarla desde allí.

9. Hacer que una zona siga una trayectoria fija

10. Hacer que una zona persiga al jugador Podríamos usar un timer “interval” para llamar al movimiento. Obtendríamos el rumbo que tiene que seguir la zona móvil hacia el jugador con Wherigo.VectorToPoint(zonaMovil, Player.ObjectLocation). Después, llamaríamos a una función para mover zonas como la del capítulo 7, pasando como parámetro el rumbo obtenido en el anterior punto. La velocidad de la zona iría determinada por la duración del timer y el parámetro distancia en la función de movimiento.

11. Generar zonas alrededor del jugador Para zonas geométricas regulares, podríamos usar una función como MOVER_CENTRO_ZONA del capítulo 7, con cuidado de usar como origen del movimiento el Player.ObjectLocation, y luego generarla con la función del capítulo 6.

11. Generar zonas alrededor del jugador

12. Generar zonas al vuelo Puede ser interesante generar zonas que no han sido definidas previamente en Urwigo. Por ejemplo, un cartucho basado en un laberinto, en el que el jugador puede hacer marcas para saber los pasillos por los que ha pasado. Las marcas se hacen al vuelo, porque a priori el programador no sabe el número de marcas que hará el jugador, por lo que no puede preparar las zonas en Urwigo. Haríamos uso de una variable global que iríamos aumentando en 1 por cada zona generada, para llevar la cuenta. El nombre de cada zona se concatena con esta función para obtener “Zona 1”, “Zona 2”, etc. Haríamos uso del constructor que vimos en el capítulo 2.

12. Generar zonas al vuelo

13. Usar una librería externa Podemos escribir nuestras funciones genéricas en un archivo .lua, por ejemplo libreriaZonas.lua que dejaremos en la carpeta de nuestros proyectos. Así, podemos usar las funciones en cualquier proyecto que queramos sin escribirlas otra vez.

Y eso es todo… ¡Muchas gracias!