package { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.text.*; import flash.utils.*; [SWF(backgroundColor="0x000000",width="600",height="600",frameRate="50")] public class LangtonsAnt extends Sprite { private var antDirection:Number = 1; private var antX:Number; private var antY:Number; private var antZ:Number; private var nextX:Number; private var nextY:Number; private var nextZ:Number; private var cellsX:Number = 50; private var cellsY:Number = 50; private var cellsZ:Number = 50; private var cellWidth:Number = 5; private var cellHeight:Number = 5; private var layerBitmapDatas:Array; private var layerBitmaps:Array; private var loopTimer:Timer; private var maxDirections:Number = 8; private var offColor:Number = 0x00000000; private var onColor:Number = 0xffffffff; private var displayText:TextField; private var displayFormat:TextFormat; private var iteration:Number = 0; private var gradientShape:Shape; private var spectrumBitmapData:BitmapData; public function LangtonsAnt() { addEventListener(Event.ADDED_TO_STAGE,init); } private function init(e:Event):void { removeEventListener(Event.ADDED_TO_STAGE,init); displayText = new TextField(); displayText.x = stage.stageWidth-65; displayText.y = 0; displayText.width = 65; displayText.height = 65; displayText.border = true; displayText.borderColor=0xcccccc; displayText.background = true; displayText.backgroundColor=0xffffff; addChild(displayText); antX = Math.floor(cellsX/2); antY = Math.floor(cellsY/2); antZ = Math.floor(cellsZ/2); layerBitmapDatas = []; layerBitmaps = []; for(var i:Number = 0;i= cellsY) antY -= cellsY; if(antX < 0) antX += cellsX; if(antX >= cellsX) antX -= cellsX; if(antZ < 0) antZ += cellsZ; if(antZ >= cellsZ) antZ -= cellsZ; displayText.text = "x: " + antX + "\ny: " + antY + "\nz: " + antZ + "\ni: " + iteration; iteration++; e.updateAfterEvent(); } private function setLayerAlphas():void { layerBitmaps[antZ].alpha = 1; if(layerBitmaps[antZ-1])layerBitmaps[antZ-1].alpha = .5; if(layerBitmaps[antZ+1])layerBitmaps[antZ+1].alpha = .5; if(layerBitmaps[antZ-2])layerBitmaps[antZ-2].alpha = .1; if(layerBitmaps[antZ+2])layerBitmaps[antZ+2].alpha = .1; /* if(layerBitmaps[antZ-3])layerBitmaps[antZ-3].alpha = .05; if(layerBitmaps[antZ+3])layerBitmaps[antZ+3].alpha = .05; if(layerBitmaps[antZ-4])layerBitmaps[antZ-4].alpha = .4; if(layerBitmaps[antZ+4])layerBitmaps[antZ+4].alpha = .4; if(layerBitmaps[antZ-5])layerBitmaps[antZ-5].alpha = .3; if(layerBitmaps[antZ+5])layerBitmaps[antZ+5].alpha = .3; if(layerBitmaps[antZ-6])layerBitmaps[antZ-6].alpha = .2; if(layerBitmaps[antZ+6])layerBitmaps[antZ+6].alpha = .2; if(layerBitmaps[antZ-7])layerBitmaps[antZ-7].alpha = .1; if(layerBitmaps[antZ+7])layerBitmaps[antZ+7].alpha = .1;*/ } } }