import junior.*; public class TestRectangle extends IcobjWorkspace { final static int startx = 100, starty = 100, num = 12; Instruction awaitDir(Brick brick,byte dir){ return new Seq(new Await("dir_"+dir),new Seq(new BrickMove(brick,dir),new Stop())); } Instruction awaitAllDir(Brick brick){ return new Merge(awaitDir(brick,Icobj.Left), new Merge(awaitDir(brick,Icobj.Right), new Merge(awaitDir(brick,Icobj.Down),awaitDir(brick,Icobj.Up)))); } Instruction brickBehavior(Brick brick){ Instruction await = new Loop(new Until("impact",awaitAllDir(brick),new Nothing())); Instruction detect = new Loop( new Seq( new If(new BrickDetect(brick), new Seq(new Generate("impact"),new Generate("dir_"+brick.direction)), new Nothing()), new Stop())); return new Merge(detect,await); } Instruction addBrick(Brick b,IcobjWorkspace w,Instruction i){ w.addIcobj(b); return new Merge(i,brickBehavior(b)); } Instruction addBall(Ball b,IcobjWorkspace w,Instruction i){ w.addIcobj(b); return new Merge(i,new Loop(new Seq(new BallMove(b),new Stop()))); } public void init(){ Instruction prog = new Nothing(); for(int i=0;i