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);
第一階段的競賽已經結束,目前比賽正在第二階段,有些作品滿值得學習觀摩的:
20090322 diagonal snake Diagonal Snake
作者:tomee6

最特別之處在於它做出了類似貪食蛇的小遊戲,蛇會往滑鼠曲折移動,140字元也能做出遊戲,不愧是第一名的作品。
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);

20090322 Tunnel of Stripes Tunnel of Stripes
作者:piXelero

光影變化的確很有隧道的感覺。
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)}

20090322 Rotating black and white alien lifeform Rotating black and white alien lifeform
作者:pantaa

單純畫圓卻能創造很有藝術風味的變化。
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);}

20090322 Twister Twister
作者:kalisnik

把粒子處理得像在3D空間中旋轉。
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 

20090322 more fun with cardioids more fun with cardioids
作者:oskitar

很好的電腦線條繪圖藝術阿~

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)}
20090322 Numeric sequence Numeric sequence
作者:pantaa

文字欄位竟然也能拿來這樣玩!變成在3D空間中旋轉。
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

20090322 peacock peacock
作者:shauryashaurya

滿有趣的視覺效果,不看程式碼還真不知道怎麼做出來的。
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);

20090322 Oh no! My f****** horn! Oh no! My f****** horn!
作者:pantaa

同一個作者的好幾件作品都不錯,雖然標題怪怪的。
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

20090322 One Sine Day One Sine Day
作者:LorenBednar

感覺像細胞自動機,不過實際上是填色的技巧。
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);}}

20090322 ninja the mouse killing line 140 ninja the mouse killing line 140
作者:vitch

很棒的效果,程式碼幾乎找不到斷行,只能說功力實在太變態了。
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));

其它像是聲音類型的作品也滿有趣的,雖然電腦音不會多悅耳,但是創意無限阿!

相關閲讀



Posted by esabear at 樂多Roodo! │20:16 │回應(1)引用(0)Flash筆記
樂多分類:網路/3C 共同主題:Flash筆記 工具:編輯本文
標籤:比賽,flash
Ads by Roodo! 

引用URL

http://cgi.blog.roodo.com/trackback/8566447
回應文章

140字元...
真扯
比扯鈴還要扯..

Posted by 哈利菠菜 at 2009年09月1日 00:46