|
||
|
![]() |
![]() |
Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android |
![]() |
|
Herramientas |
#1
|
||||
|
||||
Puzzle con piezas deslizantes . Como enfocarlo?
Buenas.
Estoy practicando en hacer el tipico juego de puzzle , pero quiero que las piezas sean deslizantes. ![]() Es decir, ocupar el hueco en blanco deslizando cualquiera de las colindantes. Cual seria la forma sencilla de plantear el problema? He pensado en crearme 9 LinearLayouts y cada uno de ellos con un ImageView menos el que esta en blanco y que se adapte a las dimensiones del contenedor padre de forma dinamica. Luego Hacer unos de un Drag and Drop en donde arrastramos cada imagen para meterla en el LinearLayout que no tiene imagen dentro. Código:
ClipData data = ClipData.newPlainText("", ""); DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view); view.startDrag(data, shadowBuilder, view, 0); El caso es que no me convence el efecto que hace el deslizamiento y realmente no se como enfocarlo porque igual esta no es la forma de plantear el problema y hay otras, no lo se. Alguna idea???? saludos |
|
#2
|
||||
|
||||
No me parece el mejor ejercicio para aprender el tema de layouts, desarrollar un juego y una app son cosas distintas.
Normalmente en un juego pintas directamente en una superficie y controlas a nivel de pixeles, calculando cuánto ocupa cada elemento y dónde tiene que pintarse cada vez. Éste juego en concreto ya lo tenía medio pensado. Supongo que acabaría haciéndolo en Canvas como siempre, pero bueno, dado que son pocas casillas... lo haría con 1 RelativeLayout global y 8 ImageView. Lo haría tal que solo hiciera falta hacer click en la imagen a mover, y ella sola se desplace. Para desplazarla puedes usar los animadores de Android, indicando la posición antigua y la nueva (que tendrás que calcularla). O más fácil todavía, sin animaciones, pones las 9 casillas y que al hacerle click a una movible se haga invisible y a la que está vacía le cambies la imagen y la hagas visible. De todas formas, si quieres que el área de juego sea cuadrada y se ajuste a todas las pantallas, tendrás que calcular los tamaños en código y asignarlos. Y para andar calculando tamaños y posiciones para eso pintas en un Canvas...
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
|
#3
|
||||
|
||||
Buenas.
Respecto al método de usar animaciones en un RelativeLayout tambien lo habia pensado, al hacer click en un ImageView que se traslade a la posicion que queda en blanco sabría como hacerlo, también el método fácil que comentas sin animaciones , pero creo que es mucho mas vistoso enfocarlo como digo: deslizando las imágenes como si fuesen por carriles. Supongo que si es por deslizado no queda otra que hacerlo por Canvas no? En este caso lo harías con un SurfaceView o valdría con una simple View seria suficiente? |
#4
|
||||
|
||||
Probablemente te valga con la view, solo que tendrias que tratar los eventos de touch y cambiar la posicion, manteniendo la coordenada que no cambie.
P.D. Sobre que sea más natural, hoy estaba probando una app de deslizar y me he quedado pensando "no funciona" porque le daba toques y no se movía. Como usuario me molesta hacer gestos táctiles de forma innecesaria pues solo hay un hueco. Si hubiera varios tiene justificación.
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
Última edición por mocelet Día 29/07/13 a las 12:15:06. |
#5
|
||||
|
||||
Gracias mocelet.
Intentaré hacerlo con canvas. Ya diré si sale algo. Saludos. |
#6
|
||||
|
||||
Anda, estaba editandolo, mira el post data
Ah, y lo que quería decir es que con el ImageView también podrías sin el canvas... es actualizar su posicion al fin y al cabo. Mismos cálculos, solo que la imagen la metes en el ImageView.
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
Última edición por mocelet Día 29/07/13 a las 12:29:30. |
#7
|
||||
|
||||
Hola, te refieres a que puedes hacerlo deslizar con en ImageView dentro de un Layout y sin usar canvas? Suponia que para deslizar hay que usar un onDraw para que haga el redibujado a no ser que uses una animacion de traslacion con un toque.
Por cierto, he descargado una que se llama Slide Puzzle y me da la impresion de que lo hace a traves de un Drag and Drop ya que si la pieza la deslizas hasta menos de la mitad y sueltas se queda en su sitio pero si pasa la mitad del layout se va al layout vacio. |
#8
|
||||
|
||||
Sí, me refería a eso. En vez de dibujar todo el casillero en el onDraw simplemente cambia mediante código la posición del ImageView (cada vez que el dedo se mueva, claro).
Todos los caminos llevan a Roma
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
|
![]() |
![]() |
||||||
|