Particle Puzzle
♥0 |
Line 122 |
Modified 2011-10-18 19:46:08 |
MIT License
archived:2017-03-20 11:25:51
ActionScript3 source code
/**
* Copyright gameegg ( http://wonderfl.net/user/gameegg )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/u2qF
*/
package {
import flash.geom.ColorTransform;
import flash.filters.BlurFilter;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Sprite;
import flash.geom.Point;
public class Nemo extends Sprite {
private var bitd:BitmapData;
private var bit:Bitmap;
private var box:Array = [];
private var bf:BlurFilter = new BlurFilter(32,32,3);
private var tf:ColorTransform = new ColorTransform(1,1,1,0.5);
private var zp:Point = new Point(0,0)
public function Nemo() {
bitd = new BitmapData(465,465,false,0x000000);
bit = new Bitmap(bitd);
addChild(bit);
for(var i:int = 0; i<232; ++i){
for(var j:int = 0; j<232; ++j){
var dot:Dot = new Dot( new Point(1+2*i,1+2*j) );
box.push(dot);
}
}
addEventListener("enterFrame",ef);
stage.addEventListener("mouseDown",md)
}
private function ef(e:Event):void{
bitd.colorTransform(bitd.rect,tf);
// bitd.applyFilter(bitd,bitd.rect,zp,bf);
for(var k:int=0;k<box.length;++k){
box[k].update();
bitd.setPixel( box[k].x, box[k].y, 0x229911);
}
}
private function md(e:MouseEvent):void {
for(var k:int=0;k<box.length;++k){
box[k].init();
}
}
}
}
import flash.geom.Point;
internal class Dot {
public var targetPoint:Point
public var x:Number=0;
public var y:Number=0;
public var a:Boolean=false;
public var c:Boolean=false;
public var end:Boolean=false;
public function Dot(itargetPoint:Point) {
targetPoint = new Point(itargetPoint.x, itargetPoint.y);
init();
}
public function update():void{
if(!end){
if((a&&c) || (!a&&!c)){
if(x < targetPoint.x) {
x++;
if(x >= targetPoint.x){
if(!a && !c) c = true
else if(a && c) end = true
}
}
else if(x >= targetPoint.x) {
x--;
if(x < targetPoint.x){
if(!a && !c) c = true
else if(a && c) end = true
}
}
}
if((a&&!c) || (!a&&c)){//a가 트루인놈은 이거먼저.
if(y < targetPoint.y) {
y++;
if(y >= targetPoint.y){
if(a && !c) c = true
else if(!a && c) end = true
}
}
else if(y >= targetPoint.y) {
y--;
if(y < targetPoint.y){
if(a && !c) c = true
else if(!a && c) end = true
}
}
}
}
else {
x = targetPoint.x;
y = targetPoint.y;
}
}
public function init():void{
end = false
a = false
c = false
if(Math.random()<0.5) x = -int(Math.random()*465);
else x = 465+int(Math.random()*465);
if(Math.random()<0.5) y = -int(Math.random()*465);
else y = 465+int(Math.random()*465);
if(Math.random()*8 < 2) {
x = -int(Math.random()*465);
y = int(Math.random()*465);
}
else if(Math.random()*8 < 4){
x = 465 + int(Math.random()*465);
y = int(Math.random()*465);
}
else if(Math.random()*8 < 6){
x = int(Math.random()*465);
y = 465+int(Math.random()*465);
}
else if(Math.random()*8 < 6){
x = int(Math.random()*465);
y = -int(Math.random()*465);
}
if(Math.random()<0.5) a=true
}
}