Este programa es una animación processing que reproduce, en código morse, el mensaje propuesto por WWF es “APAGA LA LUZ TODO IRA BIEN”.
La palabra clave saveFrame() del final del programa graba la imagen actual para generar un video.
Puede ver el vídeo generado en: https://vimeo.com/400708482
Este programa reutiliza código de mi vieja página web, disponible en http://jgmoyay.apagada.com
/* ------------- RUTINA MORSE --------------------------------- */ /* ------------- COPYRIGHT J.G.M.Y. 2002 ---------------------- */ /* Juego caracteres morse. Incompleto. Debo añadir números */ String[] morse={ ".-","-...","-.-.","-..", ".","..-.","--.","....", "..",".---","-.-",".-..", "--","-.","--.--","---", ".--.","--.-",".-.","...", "-","..-","...-",".--", "-..-","-.--","--..", ".-.-.-","..--..","--..--", ".----","..---","...--", "....-",".....","-....", "-....","--...","---..", "----.","-----",".-..-." }; String definidos="abcdefghijklmnñopqrstuvwxyz.?!1234567890"+'"'; String morseSequence; String tomorse(String inText){ String st1=""; String st2=""; int f=0; int d=0; String t=""+inText; for (f=0;f<t.length();f++){ st1=""+(t.toLowerCase()).charAt(f); d=definidos.indexOf(st1); if (d>=0){ st2+=morse[d]; } else { st2+=t.charAt(f); } /* Esto genera un espacio entre letras, o tres entre palabras */ st2+=" "; } return st2; } String encodeMe="APAGA LA LUZ TODO IRA BIEN "; void setup(){ size(800,600); float dpi=96; float points=min(height/4,width/4)*72/dpi; textFont(createFont("Arial",points)); textSize(points); String morseText=tomorse(encodeMe); morseSequence=morseText; // replace word space with 6 spacing intervals. // an additional interval will come from the spacing after dash/dot morseSequence=morseSequence.replace(" ","000000"); // replace symbol space letter with 2 spacing intervals. // an additional interval will come from the spacing after dash/dot morseSequence=morseSequence.replace(" ","00"); // replace dash with 3 on intervals and 1 off interval. morseSequence=morseSequence.replace("-","1110"); // deplace dot with quick on-off sequence morseSequence=morseSequence.replace(".","10"); println(morseText); println(morseSequence); frameRate (4); } int blankCount=0; int currentChar=0; void draw(){ char status; int f=frameCount % morseSequence.length(); if (f==0) { currentChar=0; } status=morseSequence.charAt(f); if (status=='1'){ background(255); fill(0); blankCount=0; } else { background (0); fill(255); blankCount++; if (blankCount==3|blankCount==7) { currentChar++; } } textAlign(CENTER); text(encodeMe.charAt(currentChar),width/2,height/2+(textAscent()+textDescent())/2); saveFrame("Fotograma_"+nf(f,3)); }