Cellular automaton rule90
こんどはルール90。
始点は1つにしたほうがきれいなので変えました。
/**
* Copyright shamr0ck ( http://wonderfl.net/user/shamr0ck )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/eZeH
*/
// こんどはルール90。
// 始点は1つにしたほうがきれいなので変えました。
package {
import flash.display.Sprite;
import flash.display.BitmapData;
import flash.display.Bitmap;
public class FlashTest extends Sprite {
private var offColor:uint = 0x00cccc;
private var onColor:uint = 0xFFFFFF;
private var bmpData:BitmapData = new BitmapData(500, 500, false, offColor);
private var bmp:Bitmap = new Bitmap(bmpData);
public function FlashTest() {
// write as3 code here..
addChild(bmp);
this.firstDrawHandler();
}
private function firstDrawHandler():void{
/*for(var i:int = 0; i < bmpData.width; i++){
var n:int = Math.random() * 2;
if(n == 0){
bmpData.setPixel(i, 0, onColor);
}
}*/
bmpData.setPixel(250, 0, onColor);
drawHandler();
}
private function drawHandler():void{
// 01011010
for(var t:int = 1; t < bmpData.height; t++){
for(var j:int = 0; j < bmpData.width; j++){
if(bmpData.getPixel(j-1,t-1) == onColor){
//100 101 110 111
if(bmpData.getPixel(j,t-1) == onColor){
// 110 111
if(bmpData.getPixel(j+1,t-1) == onColor){
// 111
bmpData.setPixel(j,t, offColor);
}else if(bmpData.getPixel(j+1,t-1) == offColor){
// 110
bmpData.setPixel(j,t, onColor);
}
}else if(bmpData.getPixel(j,t-1) == offColor){
// 100 101
if(bmpData.getPixel(j+1,t-1) == onColor){
// 101
bmpData.setPixel(j,t, offColor);
//continue;
}else if(bmpData.getPixel(j+1,t-1) == offColor){
// 100
bmpData.setPixel(j,t, onColor);
}
}
}else if(bmpData.getPixel(j-1,t-1) == offColor){
// 000 001 010 011
if(bmpData.getPixel(j,t-1) == offColor){
// 000 001
if(bmpData.getPixel(j+1,t-1) == offColor){
// 000
bmpData.setPixel(j,t, offColor);
}else if(bmpData.getPixel(j+1,t-1) == onColor){
// 001
bmpData.setPixel(j,t, onColor);
}
}else if(bmpData.getPixel(j,t-1) == onColor){
// 010 011
if(bmpData.getPixel(j+1,t-1) == offColor){
// 010
bmpData.setPixel(j,t, offColor);
//continue;
}else if(bmpData.getPixel(j+1,t-1) == onColor){
// 011
bmpData.setPixel(j,t, onColor);
}
}
}
}
}
}
}
}