2009年03月25日
【比賽】Tweetcoding:140個字元的程式,又能做出怎樣的Flash?
Flash程式競賽有越來越微型化的傾向,以前有 4K Game 比賽,先前的 25lines.com 舉辦了25行程式碼的比賽,後來又陸陸續續辦了幾次,參賽作品越來越令人驚豔…25行程式碼看似相當少,但 gskinner 決定舉行一個更短的程式競賽,一下子縮減到限制在140個字元內,這麼少的長度,光是加一句addEventListener就用去了十分之一強,放在文章裡頂多2行,140字元到底能做出什麼?當然做出來的一定不如25lines的成品,但是仍然有程式高手做出很棒的作品,創意五花八門,有的還可以和滑鼠、聲音,甚至攝影機做互動。
比賽規則很簡單:
#tweetcoding: code something cool in <=140 characters of AS3
獎品:Adobe Flash CS4軟體一套
比賽連結:tweetcoding
前置動作是將一些常用函式宣告成短變數,用140字元的程式碼取代/*src*/,注意要在軟體設定中將Strict Mode(嚴謹模式)關閉,目的是為了省掉一些宣告動作,縮短程式碼。
前置宣告:
g=graphics;
mt=g.moveTo;
lt=g.lineTo;
ls=g.lineStyle;
m=Math;
r=m.random;
s=m.sin;
i=0; // frame counter
o={}; // 用來儲存其它變數
function f(e){/*src*/}
addEventListener("enterFrame",f);
第一階段的競賽已經結束,目前比賽正在第二階段,有些作品滿值得學習觀摩的:
if(!i++){g.clear();mt(5,5);o={x:5,y:5};}a=''+o.x+o.y;b=o[a];ls(b?b:i/42,7<<b);b?i=0:o[a]=23;lt(o.x+=o.x<mouseX?5:-5,o.y+=o.y<mouseY?5:-5);
g.clear();a=mouseX;b=mouseY;c=++i%8/8+10;d=(i&8)<<4; for(j=64;j--;){ls(c*=1.1,d-=0x50580); g.drawCircle(a=5+a-a/50+s(i/16),b=5+b-b/50,c)}
a=mouseX/999;x=y=200;i+=.01;g.clear();g.beginFill(0);for(c=500;c--;)
{d=m.sqrt(m.abs(s(i)*500-c))*8;g.drawCircle(s(i-c*a)*d,s(c*a)*d,c/50);}
g.clear();for(c=999;c--;mt(c,k=275))if(!i)o[c]=r(); else ls(1,lt(c,k),l=o[c], g.drawCircle(k+l*c*s(i+c)/9+99*s(i*.1)*s(2-2*l),k-l*k,.5));i+=.1
p=mouseX;i+=1e-4;k=370;a=1e2;y=x=2e2;q=0; g.clear();for(;k--;){l=p*k+i*q;u=m.cos(-l);v=s(p*k+i*y); lt(h=a*u*(1+u),j=a*s(l)*(1+v));ls(0,0,.1)}
if(i%8==0) {t=addChild(new TextField);t.text=i;t.x=s(i/30)*i/4; t.y=s(1.6-i/30)*i/4;t.z=i/2;}rotationY=s(i++/99)*150;x=y=200
if(i<1){j=o.x;k=o.y;z=j=k=200;g.beginFill(79,.7);}i+=.1;p=m.PI/2; c=m.pow;mt(j,k);j+=i*c(m.cos(p-i),3);k+=i*c(s(3*p-i),3);g.curveTo(z,z,j,k);
i+=4;if(i<220) {m=addChild(new Sprite);m.rotationX=i*2;k=m.graphics; k.lineStyle(1);k.drawCircle(0,i,i/2);x=y=i;}rotationY+=2;rotationX+=.9
g.clear();ls(1,.5);d=50;for (i=0;i<d*2;i++) {for (j=0;j<d*2;j++) {g.beginFill(0x3A698B,(s(i*j * (mouseX/25)/d)));g.drawRect(i*5,j*5,5,5);}}
g.clear();o[++i]={x:mouseX,y:mouseY,a:o[i-1],b:9};for each(p in o)! p.a||(ls(p.b--),l=p.a,mt(p.x-=(p.x-l.x)/6,p.y-=(p.y-l.y)/6),lt(l.x,l.y));
其它像是聲音類型的作品也滿有趣的,雖然電腦音不會多悅耳,但是創意無限阿!
相關閲讀
引用URL
http://cgi.blog.roodo.com/trackback/8566447
回應文章 

140字元...
真扯
比扯鈴還要扯..
囧
Posted by 哈利菠菜
at 2009年09月1日 00:46









