Comunidad de diseño web y desarrollo en internet online

Resolución de Puzzle

Citar            
MensajeEscrito el 20 Nov 2005 01:29 am
Hola, he realizado un puzzle de esos en los que la imagen se divide en cuadros (en mi caso 3x3 cuadros) y a cada cuadro corresponde una ficha cuadrada con una porción de la imagen, excepto uno que queda hueco y es el usado para mover a él una de las fichas y así ir variando el orden de las fichas para componer la imagen resuelta.
Cada ficha se corresponde con un movieclip (ocho en total) y el noveno, del espacio hueco, es un movie clip llamado "invisible". El tamaño de los cuadros es de 160x140.

Este es el código que pongo en cada movieclip-ficha:

on (press) {
if (this._x==_root.invisible._x+140){
if (this._y==_root.invisible._y){
this._x-=140;
_root.invisible._x+=140;
}
}else if (this._x==_root.invisible._x-140){
if (this._y==_root.invisible._y){
this._x+=140;
_root.invisible._x-=140;
}
}else if (this._y==_root.invisible._y+120){
if (this._x==_root.invisible._x){
this._y-=120;
_root.invisible._y+=120;
}
}else if (this._y==_root.invisible._y-120){
if (this._x==_root.invisible._x){
this._y+=120;
_root.invisible._y-=120;
}
}
}


Mediante el cual se comprueba que esté a la derecha, izquierda, arriba o abajo del "invisible", pero pegado (porque sino no se puede mover). Y que una vez sabida su posición, al apretarlo vaya al lugar en el que estaba "invisible" y este vaya a donde estaba la ficha, se intercambian el lugar.

Hasta ahí todo correcto.
El problema viene cuando se resuelve el puzzle, en este punto quiero que, cuando cad ficha esté en su lugar correspondiente, la película que se encuentra en el fotograma 1, vaya al 2 para que ahí salga la imagen y un mensajito o lo que sea de felicidades.
Para ello pongo este código en el fotograma 1:

if (_root.uno._x==20 and
_root.uno._y==20 and
_root.dos._x==160 and
_root.dos._y==20 and
_root.tres._x==300 and
_root.tres._y==20 and
_root.cuatro._x==20 and
_root.cuatro._y==140 and
_root.cinco._x==160 and
_root.cinco._y==140 and
_root.seis._x==300 and
_root.seis._y==140 and
_root.siete._x==20 and
_root.siete._y==260 and
_root.ocho._x==160 and
_root.ocho._y==260 ) {
_root.gotoAndStop("Escena 1",2);
}


Ahí están los nombres de los movieclips-fichas y cual es su posición correcta en el puzzle resuelto. El problema es que cuando resuelvo el puzzle y cada ficha está exactamente en ese lugar, no va al fotograma 2 y se queda donde está.
Ese es el problema y no sé porqué.

He probado a exportar directamente la película con todas las fichas ya colocadas en su lugar resuelto, y entonces SÍ que va al fotograma 2 directo... Pero cuando en el .fla vuelvo a descolocar las fichas para que en el inicio del .swf esté descolocado y lo resuelvo yo mismo, entonces no funciona; es decir que no funciona después de que yo mueva las fichas para resolverlo (aunque sólo sea una vez).

He probado con está otra alternativa, creando otro movieclip más pequeño encima del lugar en el que cada ficha está resuelta:

if (_root.uno.hitTest(_root.eluno) and
_root.dos.hitTest(_root.eldos) and
_root.tres.hitTest(_root.eltres) and
_root.cuatro.hitTest(_root.elcuatro) and
_root.cinco.hitTest(_root.elcinco) and
_root.seis.hitTest(_root.elseis) and
_root.siete.hitTest(_root.elsiete) and
_root.ocho.hitTest(_root.elocho)) {
_root.gotoAndStop("Escena 1",2);
}


pero sucede lo mismo exactamente que con la otra solución. Me lo reconoce cuando exporto el puzle ya resuelto. PEro claro, se ha de exportar descolocado, y es entonces, cuando el usuario resuelve la película moviendo las fichas cuando no funciona.
Algo sucede cuando se mueven las fichas, pues entonces ya deja de reconocer cuando está resuelto el puzzle.

Lo siento por lo farragoso de mi explicación.
Agradezco vuestras respuestas, un saludo .

Por Rasangar

11 de clabLevel



 

msie
Citar            
MensajeEscrito el 20 Nov 2005 10:16 am
Se me ocurren dos cosas.

1.- La condición que comprueba la posición de las fichas, debe estar al menos en el evento onPress, para que cada vez que muevas una ficha compruebe si el resultado es el final, o si todavía no se ha resuelto el puzzle. Como no se ve todo el código, supongo que es "if" lo tienes fuera, y por tanto sólo se ejecuta la primera vez que se lanza la película, con lo que no se cumple la condición al estar las fichas descolocadas. (No se si me explico)

2.- Si el problema no es el anterior, comprueba si efectivamente con el puzzle resuelto (modo depuración) las fichas están exactamente en esas posiciones.

Salu2

Por Cyril

45 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.