Life
♥0 |
Line 60 |
Modified 2010-01-03 22:46:51 |
MIT License
archived:2017-03-20 04:59:52
ActionScript3 source code
/**
* Copyright flashrod ( http://wonderfl.net/user/flashrod )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/7EBg
*/
package {
import flash.display.*;
import flash.events.*;
public class Life extends Sprite {
private var W:int=46,H:int=46,T:int=10,i:int,j:int,r:int,u:int,v:int,p:Array=[],q:Array=[],t:Array,f:Array=[[0,1,0],[1,0,0],[1,1,1]];
public function Life() {
for (j=0; j<H; ++j) {
p[j]=[];
q[j]=[];
for (i=0; i<W; ++i)
p[j][i]=0;
}
addEventListener(Event.ENTER_FRAME,function(e:Event):void {
for (j=0; j<H; ++j) {
for (i=0; i<W; ++i) {
r=0;
for (v=-1; v<2; ++v)
for (u=-1; u<2; ++u)
if (u||v)
r+=g(i+u,j+v);
q[j][i]=p[j][i]?((r==2||r==3)?1:0):((r==3)?1:0);
}
}
t=p;
p=q;
q=t;
graphics.clear();
for (j=0; j<H; ++j) {
for (i=0; i<W; ++i) {
if (p[j][i]) {
graphics.beginFill(0);
graphics.drawRect(i*T,j*T,T,T);
}
}
}
});
stage.addEventListener(MouseEvent.MOUSE_MOVE,function(e:MouseEvent):void {
u=e.stageX/T;
v=e.stageY/T;
for (j=0; j<f.length; ++j)
for (i=0; i<f[j].length; ++i)
s(u+i,v+j,g(u+i,v+j)|f[j][i]);
});
}
private function g(x:int,y:int):int {
if (y< 0) y+=H;
if (y>=H) y-=H;
if (x< 0) x+=W;
if (x>=W) x-=W;
return p[y][x];
}
private function s(x:int,y:int,v:int):void {
if (y< 0) y+=H;
if (y>=H) y-=H;
if (x< 0) x+=W;
if (x>=W) x-=W;
p[y][x]=v;
}
}
}