martes, 14 de mayo de 2013


Esta practica de clase tiene el siguiente objetivo, es hacer que cuando la bola choque contra el bloque rojo, reduzca la velocidad y si choca contra el azul la aumente.
(Opcional: Un label donde muestre nuestra velocidad.)
Este es el aspecto de mi actividad:























Entonces tenemos los siguientes elementos en pantallas:
  1. Un canvas con 4 objetos:
    1. Img_sprite de la barra.
    2. una bola.
    3. Img_sprite bloque rojo.
    4. Img_sprite bloque azul.

Pasamos al codigo:

Sabiendo el objetivo del juego, haremos lo siguiente:
  • Mover la barra solo hacia los lados:
Uno de los problemas que tiene el appinventor cuando queremos que se mueva un sprite cuando nosotros lo arrastremos, es que el sprite no sigue al dedo correctamente y la solución es simple:
En la X de ImgBarra.MoveTo debemos restarle el currentX menos el Width de la barra dividido por 2.
Esto hará que se mueva correctamente al tocarla y arrastrarla.
  • La bola al chocar con uno de los bordes del canvas rebote cambiando aleatoriamente su dirección:










Esta función es EdgeReached y hace que:
-Cambia el Heading (Dirección de movimiento) a un numero aleatorio del 1 al 100.
-Llama a la función bounce para que rebote contra edge.

  • Colisiones de tres objetos con un único bloque:
Esto es algo complicado al principio puesto que no te deja repetir una colisión algo absurdo puesto que reduce posibilidades a la hora de ser creativos, la solución tras unos largos minutos fue con esta lógica:
"Other" es un componente y nosotros le damos nombre a "Other" así que podríamos usar tantos "If"  como necesitáramos y hacer la comprobación de que "Other" sea por ejemplo bloqueazul pero no un text sino al final de cada elemento viene un componente, eso es lo que necesitamos para hacer tal comprobación y aunque funcione bien hay veces que no termina de funcionar bien.























{ 2 comentarios... read them below or Comment }

  1. Perfecto!
    Muy bien explicado el tema de las Colisiones...que no es fácil de manejar en App Inventor.
    Enhorabuena

    ResponderEliminar
    Respuestas
    1. Muchas grácias Fran, la verdad esque costó pillar el concepto pero cuando se aprende es relativamente fácil :D

      Eliminar

Welcome to My Blog

Popular Post

- Copyright © Diario de un programador frustrado Damián Martín -Robotic Notes- Powered by Blogger - Designed by Johanes Djogan -