Frame 2
if (getBytesLoaded() < getBytesTotal()) {
porcentaje = Math.floor((100 * getBytesLoaded()) / getBytesTotal());
gotoAndPlay (1);
} else {
gotoAndPlay (3);
}
Frame 3
function rotarCuadrado(dX, dY, lado) {
i = 0;
while (i < lado) {
j = 0;
while (j < i) {
tmp = tabla[dY + i][dX + j];
tabla[dY + i][dX + j] = tabla[dY + j][dX + i];
tabla[dY + j][dX + i] = tmp;
tmp = relat[dY + i][dX + j];
relat[dY + i][dX + j] = relat[dY + j][dX + i];
relat[dY + j][dX + i] = tmp;
j++;
}
i++;
}
i = dY;
while (i < (dY + lado)) {
j = dX;
while (j < (dX + lado)) {
switch (relat[i][j]) {
case SUP :
relat[i][j] = IZQ;
break;
case INF :
relat[i][j] = DER;
break;
case IZQ :
relat[i][j] = SUP;
break;
case DER :
relat[i][j] = INF;
}
j++;
}
i++;
}
}
function barajar(desdeX, hastaX, desdeY, hastaY, direccion) {
var _local1 = hastaX - desdeX;
var _local2 = hastaY - desdeY;
if ((_local1 < 2) || (_local2 < 2)) {
return(undefined);
}
if ((_local1 == _local2) && (random(2))) {
rotarCuadrado(desdeX, desdeY, _local1);
direccion = 1 - direccion;
}
if ((_local1 > 2) || (_local2 > 2)) {
if ((_local1 > 2) && ((_local2 == 2) || (random(2)))) {
_local1 = random(_local1 - 1) + 1;
if (!direccion) {
if (_local1 % 2) {
_local1--;
}
}
barajar(desdeX, desdeX + _local1, desdeY, hastaY, direccion);
barajar(desdeX + _local1, hastaX, desdeY, hastaY, direccion);
} else {
_local2 = random(_local2 - 1) + 1;
if (direccion) {
if (_local2 % 2) {
_local2--;
}
}
barajar(desdeX, hastaX, desdeY, desdeY + _local2, direccion, nivel + 1);
barajar(desdeX, hastaX, desdeY + _local2, hastaY, direccion, nivel + 1);
}
}
}
function cambiar(i1, j1, i2, j2, stat) {
var _local1 = tabla[i1][j1];
var _local2 = tabla[i2][j2];
if (_local1 > _local2) {
_local2 = _local1;
_local1 = tabla[i2][j2];
}
if (stat) {
if (!ficha[_local1][_local2]) {
contador++;
}
ficha[_local1][_local2]++;
} else {
ficha[_local1][_local2]--;
if (!ficha[_local1][_local2]) {
contador--;
}
if (ficha[_local1][_local2] < 0) {
ficha[_local1][_local2] = 0;
}
}
if (contador == 28) {
contador = 0;
gotoAndPlay ("win");
}
}
function estado(i, j) {
if ((((i < 0) || (i > 7)) || (j < 0)) || (j > 6)) {
return(ERR);
}
var _local3 = 15;
if ((i == 0) || (horiz[i - 1][j])) {
_local3 = _local3 - INF;
}
if ((i == 7) || (horiz[i][j])) {
_local3 = _local3 - SUP;
}
if ((j == 0) || (verti[i][j - 1])) {
_local3 = _local3 - DER;
}
if ((j == 6) || (verti[i][j])) {
_local3 = _local3 - IZQ;
}
return(_local3);
}
function comprobar(i, j) {
var _local3 = estado(i, j);
switch (_local3) {
case ERR :
return(1);
case SUP :
if (estado(i + 1, j) == INF) {
cambiar(i, j, i + 1, j, true);
}
break;
case INF :
if (estado(i - 1, j) == SUP) {
cambiar(i, j, i - 1, j, true);
}
break;
case IZQ :
if (estado(i, j + 1) == DER) {
cambiar(i, j, i, j + 1, true);
}
break;
case DER :
if (estado(i, j - 1) != IZQ) {
break;
}
cambiar(i, j, i, j - 1, true);
}
return(0);
}
function quitando(i, j, previo) {
switch (previo) {
case ERR :
comprobar(i, j);
break;
case SUP :
cambiar(i, j, i + 1, j, false);
break;
case INF :
cambiar(i, j, i - 1, j, false);
break;
case IZQ :
cambiar(i, j, i, j + 1, false);
break;
case DER :
cambiar(i, j, i, j - 1, false);
}
}
function test(direccion, i, j, actual) {
if (direccion) {
previo1 = estado(i, j);
previo2 = estado(i, j + 1);
verti[i][j] = actual;
if (actual) {
if (comprobar(i, j)) {
cambiar(i, j, i, j + 1, false);
}
comprobar(i, j + 1);
} else {
quitando(i, j, previo1);
quitando(i, j + 1, previo2);
}
} else {
previo1 = estado(i, j);
previo2 = estado(i + 1, j);
horiz[i][j] = actual;
if (actual) {
if (comprobar(i, j)) {
cambiar(i, j, i + 1, j, false);
}
comprobar(i + 1, j);
} else {
quitando(i, j, previo1);
quitando(i + 1, j, previo2);
}
}
}
function inicializacion() {
contador = 0;
i = 0;
while (i < 7) {
j = 0;
while (j < 7) {
ficha[i][j] = false;
j++;
}
i++;
}
i = 0;
while (i < 8) {
j = 0;
while (j < 7) {
horiz[i][j] = false;
verti[i][j] = false;
j++;
}
i++;
}
i = 0;
while (i < 4) {
j = 0;
while (j < 7) {
a = i;
b = j + i;
if (b > 6) {
b = b - a;
a = 7 - a;
}
tabla[i * 2][j] = a;
tabla[(i * 2) + 1][j] = b;
j++;
}
i++;
}
i = 0;
while (i < 4) {
j = 0;
while (j < 7) {
relat[i * 2][j] = SUP;
relat[(i * 2) + 1][j] = INF;
j++;
}
i++;
}
i = 0;
while (i < 4) {
j = 0;
while (j < 7) {
k = random(4);
l = random(7);
if ((k != i) && (l != j)) {
tmp = tabla[2 * k][l];
tabla[2 * k][l] = tabla[2 * i][j];
tabla[2 * i][j] = tmp;
tmp = tabla[(2 * k) + 1][l];
tabla[(2 * k) + 1][l] = tabla[(2 * i) + 1][j];
tabla[(2 * i) + 1][j] = tmp;
}
j++;
}
i++;
}
i = 0;
while (i < 4) {
j = 0;
while (j < 7) {
if (random(2)) {
tmp = tabla[2 * i][j];
tabla[2 * i][j] = tabla[(2 * i) + 1][j];
tabla[(2 * i) + 1][j] = tmp;
}
j++;
}
i++;
}
barajar(0, 7, 0, 8, 1);
k = 0;
while (k < 3) {
i = random(8);
j = random(6);
if (relat[i][j] != IZQ) {
verti[i][j] = true;
k++;
}
}
k = 0;
while (k < 3) {
i = random(7);
j = random(7);
if (relat[i][j] != SUP) {
horiz[i][j] = true;
k++;
}
}
comprobar(i, j);
comprobar(i + 1, j);
}
ERR = 0;
SUP = 1;
IZQ = 2;
INF = 4;
DER = 8;
var ficha = new Array(7);
i = 0;
while (i < 7) {
ficha[i] = new Array(7);
i++;
}
var tabla = new Array(8);
i = 0;
while (i < 8) {
tabla[i] = new Array(7);
i++;
}
var relat = new Array(8);
i = 0;
while (i < 8) {
relat[i] = new Array(7);
i++;
}
var horiz = new Array(8);
i = 0;
while (i < 8) {
horiz[i] = new Array(7);
i++;
}
var verti = new Array(8);
i = 0;
while (i < 8) {
verti[i] = new Array(7);
i++;
}
stop();
Frame 4
inicializacion();
gotoAndStop(_currentframe + 1);
Frame 6
if (!contador) {
i = 0;
while (i < 4) {
j = 0;
while (j < 7) {
n = (i * 7) + j;
if ((n < 7) || ((n > 13) && (n < 21))) {
n = (((i + 1) * 7) - j) - 1;
}
if ((i + j) <= 6) {
Set(("p" + n) + ".a", i);
Set(("p" + n) + ".b", j + i);
} else {
Set(("p" + n) + ".a", 7 - i);
Set(("p" + n) + ".b", j);
}
j++;
}
i++;
}
}
a1 = p0._x;
b1 = p0._y;
a = (p0._x = (p0._x + _xmouse) / 2);
b = (p0._y = (p0._y + _ymouse) / 2);
p0._rotation = (Math.atan2(b - b1, a - a1) * 180) / Math.PI;
i = 1;
while (i < contador) {
a1 = eval (("p" + i) + "._x");
b1 = eval (("p" + i) + "._y");
a = (a + a1) / 2;
b = (b + b1) / 2;
Set(("p" + i) + "._x", a);
Set(("p" + i) + "._y", b);
Set(("p" + i) + "._rotation", (Math.atan2(b - b1, a - a1) * 180) / Math.PI);
i++;
}
if (contador < 28) {
contador++;
}
Frame 7
gotoAndPlay(_currentframe - 1);
Symbol 9 Button
on (release) {
play();
}
Symbol 20 MovieClip Frame 1
i = Math.floor(_y / 35);
j = Math.floor(_x / 35);
b._rotation = 90 * _root.relat[i][j];
n.gotoAndStop(_root.tabla[i][j] + 1);
stop();
Symbol 23 Button
on (release) {
_root.test(1, i, j, true);
gotoAndStop(_currentframe + 1);
}
Symbol 26 Button
on (release) {
_root.test(1, i, j, false);
gotoAndStop(_currentframe - 1);
}
Symbol 28 MovieClip Frame 1
i = Math.floor(_y / 35);
j = Math.floor(_x / 35) - 1;
if (_root.verti[i][j]) {
gotoAndStop (3);
} else {
stop();
}
Symbol 28 MovieClip Frame 2
stop();
Symbol 28 MovieClip Frame 3
stop();
Symbol 29 Button
on (release) {
_root.test(0, i, j, true);
gotoAndStop(_currentframe + 1);
}
Symbol 30 Button
on (release) {
_root.test(0, i, j, false);
gotoAndStop(_currentframe - 1);
}
Symbol 32 MovieClip Frame 1
i = Math.floor(_y / 35);
j = Math.floor(_x / 35);
if (_root.horiz[i][j]) {
gotoAndStop (3);
} else {
stop();
}
Symbol 32 MovieClip Frame 2
stop();
Symbol 32 MovieClip Frame 3
stop();
Symbol 33 MovieClip Frame 2
stop();
Symbol 37 Button
on (release) {
gotoAndPlay ("start");
}
Symbol 49 MovieClip Frame 1
if (_root.ficha[_parent.a][_parent.b] < 1) {
gotoAndPlay (3);
} else if (_root.ficha[_parent.a][_parent.b] > 1) {
gotoAndPlay (5);
}
Symbol 49 MovieClip Frame 2
gotoAndPlay(_currentframe - 1);
Symbol 49 MovieClip Frame 3
if (_root.ficha[_parent.a][_parent.b] == 1) {
gotoAndPlay (1);
} else if (_root.ficha[_parent.a][_parent.b] > 1) {
gotoAndPlay (5);
}
Symbol 49 MovieClip Frame 4
gotoAndPlay(_currentframe - 1);
Symbol 49 MovieClip Frame 5
if (_root.ficha[_parent.a][_parent.b] < 1) {
gotoAndPlay (3);
} else if (_root.ficha[_parent.a][_parent.b] == 1) {
gotoAndPlay (1);
}
Symbol 49 MovieClip Frame 6
gotoAndPlay(_currentframe - 1);
Symbol 50 MovieClip Frame 1
a = Math.floor(_y / 80);
b = Math.floor(_x / 45) + a;
if (b > 6) {
b = b - a;
a = 7 - a;
}
sup.gotoAndStop(a + 1);
inf.gotoAndStop(b + 1);
borde.gotoAndStop(a + 1);
stop();
Symbol 56 MovieClip Frame 1
if (b != undefined) {
sup.gotoAndStop(a + 1);
inf.gotoAndStop(b + 1);
borde.gotoAndStop(a + 1);
stop();
}
Symbol 56 MovieClip Frame 2
gotoAndPlay (1);