actions for fotograma 1
// Los píxeles mayores están abajo en la derecha, ejemplo:
// 12
// 34
PixelesdeLargo = 1;
// En F3 se repite:
function Variar () {
// trace("Variando");
PixelaModificar = "Pixel"+Puntero;
ColorDePixel = new Color(PixelaModificar);
// trace("Color: "+ColorDePixel.getRGB());
// ¿El pixel puede cambiar de color? ¿es blanco?
if (ColorDePixel.getRGB() == 0xFFFFFF) {
// Sí, cambiarlo:
ColorDePixel.setRGB(0);
// trace ("Se pintó el pixel "+PixelaModificar);
// Para juzgar: ¿El dibujo es repetido? o:
// ¿El dibujo tiene píxeles pintados en toda columna y fila?
// Averiguar la columna del pixel:
Columna = 1+(Puntero-1)%PixelesdeLargo;
// trace ("Columna: "+Columna);
// Esto se usa para evitar repeticiones de concatenaciones y simplificarlas:
ColumnaRelevante = "PintadosenC"+Columna;
// Incrementar contador de píxeles pintados en ella:
set (ColumnaRelevante, eval(ColumnaRelevante)+1);
// Averiguar la fila del pixel:
Fila = Math.ceil(Puntero/PixelesdeLargo);
// trace ("Fila: "+Fila);
// Esto se usa para evitar repeticiones de concatenaciones y simplificarlas:
FilaRelevante = "PintadosenF"+Fila;
// Incrementar contador de píxeles pintados en ella:
set (FilaRelevante, eval(FilaRelevante)+1);
// trace ("Pintados: "+ColordePixel1+" "+ColordePixel2+" "+ColordePixel3+" "+ColordePixel4);
// trace ("PintadosenC1: "+PintadosenC1);
// trace ("PintadosenC2: "+PintadosenC2);
// trace ("PintadosenF1: "+PintadosenF1);
// trace ("PintadosenF2: "+PintadosenF2);
// Para juzgar: ¿El dibujo tiene píxeles pintados en toda columna y fila?
Puntero2 = 0;
Repetido = "N";
do {
Puntero2 = Puntero2+1;
// ¿La columna Puntero2 no tiene algún pixel pintado?
if (eval("PintadosenC"+Puntero2)<1) {
// trace (eval("PintadosenC"+Puntero2)+ "< 1");
Repetido = "S";
} else if (eval("PintadosenF"+Puntero2)<1) {
// La fila Puntero2 no tiene algún pixel pintado.
// trace (eval("PintadosenF"+Puntero2)+ "< 1");
Repetido = "S";
}
} while (Repetido == "N" && Puntero2<PixelesdeLargo);
// Preparar Puntero para la próxima generación:
Puntero = MaxPosiciondePuntero;
// ¿El dibujo tiene píxeles pintados en toda columna y fila?
if (Repetido == "N") {
// trace (" Mostrando dibujo.");
ContadorDeDibujos = ContadorDeDibujos+1;
} else {
// No, el dibujo es repetido, no mostrarlo y hacer otro:
// trace (" Repetido, salteándolo.");
Variar();
}
} else {
// El pixel no puede cambiar de color, resetearlo:
ColorDePixel.setRGB(0xFFFFFF);
// trace ("Se reseteó el pixel "+PixelaModificar);
// Actualizar los valores de PintadosenC y PintadosenF:
// Averiguar la columna del pixel:
Columna = 1+(Puntero-1)%PixelesdeLargo;
// Esto se usa para evitar repeticiones de concatenaciones y simplificarlas:
ColumnaRelevante = "PintadosenC"+Columna;
// Disminuir contador de píxeles pintados en ella:
set (ColumnaRelevante, eval(ColumnaRelevante)-1);
// Averiguar la fila del pixel:
Fila = Math.ceil(Puntero/PixelesdeLargo);
// Esto se usa para evitar repeticiones de concatenaciones y simplificarlas:
FilaRelevante = "PintadosenF"+Fila;
// Disminuir contador de píxeles pintados en ella:
set (FilaRelevante, eval(FilaRelevante)-1);
// ¿Hay un pixel anterior?
if (Puntero>1) {
// Sí, apuntar a ese:
Puntero = Puntero-1;
// Continuar haciendo el dibujo:
// trace (" Haciendo dibujo, apuntando al pixel anterior.");
// trace ("SumadePintados: "+SumadePintados);
// trace ("SumadePintadosNuevos: "+SumadePintadosNuevos);
Variar();
} else {
// No, aumentar tamaño de hoja y reiniciar.
trace (ContadorDeDibujos);
gotoAndPlay (2);
}
}
}
actions for fotograma 2
ContadorDeDibujos = 0;
PixelesdeLargo = PixelesdeLargo+1;
// Colocados:
Pixeles = 0;
DistanciaEntrePixeles = 384/PixelesdeLargo;
PosicionX = 64-DistanciaEntrePixeles;
EnlaFilaActual = 0;
PosicionY = 0;
MaxPosiciondePuntero = PixelesdeLargo*PixelesdeLargo;
// Aquí MinPixelInferior es 3:
// 12
// 34
MinPixelInferior = PixelesdeLargo*(PixelesdeLargo-1)+1;
// Agregar y distribuir píxeles en blanco:
do {
Pixeles = Pixeles+1;
if (EnlaFilaActual<PixelesdeLargo) {
EnlaFilaActual = EnlaFilaActual+1;
PosicionX = PosicionX+DistanciaEntrePixeles;
} else {
PosicionX = 64;
EnlaFilaActual = 1;
PosicionY = PosicionY+DistanciaEntrePixeles;
}
// trace("El pixel "+Pixeles+" se colocó en "+PosicionX+", "+PosicionY);
attachMovie("mPixel", "Pixel"+Pixeles, Pixeles);
setProperty ("Pixel"+Pixeles, _x, PosicionX);
setProperty ("Pixel"+Pixeles, _y, PosicionY);
setProperty ("Pixel"+Pixeles, _width, DistanciaEntrePixeles);
setProperty ("Pixel"+Pixeles, _height, DistanciaEntrePixeles);
ColorDePixel = new Color("Pixel"+Pixeles);
ColorDePixel.setRGB(0xFFFFFF);
} while (Pixeles<MaxPosiciondePuntero);
// Pintar una diagonal /:
Incremento = PixelesdeLargo-1;
Puntero = PixelesdeLargo-Incremento;
do {
Puntero = Puntero+Incremento;
Col = new Color("Pixel"+Puntero);
Col.setRGB(0);
// trace("Se pintó el pixel "+Puntero);
} while (Puntero<MinPixelInferior);
// Asignar que en cada columna y fila hay 1 pixel pintado:
Puntero = 0;
do {
Puntero = Puntero+1;
set ("PintadosenC"+Puntero, 1);
set ("PintadosenF"+Puntero, 1);
} while (Puntero<PixelesdeLargo);
// El puntero debe estar abajo a la derecha:
Puntero = MaxPosiciondePuntero;
// El 1er dibujo mostrado no será la diagonal sino...
// ella con el pixel mayor pintado, así que...
// los dibujos producible siempre son +1 de lo que se dice aquí.
actions for fotograma 3
stop ();
actions for Vacío
onClipEvent (enterFrame) {
_level0.Variar();
}