miércoles, 9 de febrero de 2011

rayoQueCayo2Veces.as

Hubo una vez un Rayo que cayó dos veces en el mismo sitio; pero encontró que ya la primera había hecho suficiente daño, que ya no era necesario, y se deprimió mucho.
FIN
Como parte de mi aportación al colectivo La negra oveja decidí hacer una pieza un tanto críptica.
La obra está basada en el cuento El rayo que cayó dos veces, de Augusto Monterroso, pero traducido a otro lenguaje, no al de la imagen sino al del código, el de Action Script (tipo de programación orientada a objetos) para ser específicos. Un lenguaje que sirve como un medium para comunicarnos con las máquinas.
Cuando escribimos un script introducimos instrucciones que son traducidas a un formato que es entendido y escrito por las computadoras. En esta cadena de traición y traducción uno se pregunta ¿cómo contarle un cuento para dormir a un androide y que éste sueñe con ovejas eléctricas?
La programación orientada a objetos es una metáfora del mundo real. Hay una jerarquía de clases y categorías; las cosas están hechas de moléculas, que a su vez están hechas de átomos, hechos de electrones y protones, hechos de quarks, hechos de… cuerdas? ¿Piezas de código?
La pieza es completamente funcional, lo único que necesita es de un par de Clases (más códigos) para correr. Y aquí radica su apertura, la referencia a un script llamado Rayo nos hace pensar que existe un código donde están todas las especificaciones de un rayo real, su verdadera esencia; escrita con las instrucciones necesarias para existir.

package monterroso{
    import org.scripteratura.Microcuento;
    import org.scripteratura.Naturaleza.Fuerzas.Rayo;
    import flash.events.Event;

    public class rayoQueCayo2Veces extends Microcuento {
        private var loNecesario:Number;
        private var daño:Number=0;
        private var rayo:Rayo=new Rayo  ;

        public function rayoQueCayo2Veces():void {
            loNecesario=1000;
            caer(0,0);
            caer(0,0);
            addEventListener(Event.ADDED_TO_STAGE,encontrar);
        }
       
        private function caer(x:Number,y:Number):void {
            rayo.x=x;
            rayo.y=y;
            addChild(rayo);
            daño+=1000;
        }
       
        private function encontrar(e:Event):void {
            if (daño>loNecesario) {
                rayo.alegria=false;
            }
        }
    }
}