Advertisement
Guest User

maze solver

a guest
Jan 6th, 2014
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 15.72 KB | None | 0 0
  1. $mazestart=_maze_start.getid();
  2. $mazeend=_maze_end.getid();
  3. $mazecalcbegin=getsimtime();
  4. $mazepiece=-1;
  5. $mazeoverflow=0;
  6. $mazepathA=new SimGroup();
  7. $mazepathB=new SimGroup();
  8. $mazepathC=new SimGroup();
  9. $mazesolution="A";
  10. $mazeafterstart=-1;
  11. $mazepart=0;
  12. $mazecalculating=0;
  13. function bp(%text,%time){
  14.     %time=%time || 3;
  15.     %bp="<color:ffff00><just:center>" @ %text;
  16.     for(%i=0;%i<ClientGroup.getCount();%i++){
  17.         %client=ClientGroup.getObject(%i);
  18.         %client.bottomPrint(%bp,%time,1);
  19.     }
  20. }
  21. function pyth(%a,%b){
  22.     %x1=getword(%a,0);
  23.     %y1=getword(%a,1);
  24.     %z1=getword(%a,2);
  25.     %x2=getword(%b,0);
  26.     %y2=getword(%b,1);
  27.     %z2=getword(%b,2);
  28.     return msqrt(mpow(%x2-%x1,2)+mpow(%y2-%y1,2)+mpow(%z2-%z1,2));
  29. }
  30. function newMazePart(%x,%y,%back,%brick,%dirfromback){
  31.     %part=new ScriptObject(MazePart);
  32.     %part.x=%x;
  33.     %part.y=%y;
  34.     %part.brick=%brick;
  35.     if(!isObject(%brick))
  36.         error("ERROR: newMazePart; %brick is not an object!");
  37.     if(!%x)
  38.         error("ERROR: newMazePart; %x is 0!");
  39.     if(!%y)
  40.         error("ERROR: newMazePart; %y is 0!");
  41.     %part.back=%back;
  42.     if(%dirfromback$="up")
  43.         %part.back.up=%part;
  44.     else if(%dirfromback$="down")
  45.         %part.back.down=%part;
  46.     else if(%dirfromback$="left")
  47.         %part.back.left=%part;
  48.     else if(%dirfromback$="right")
  49.         %part.back.right=%part;
  50.     else
  51.         error("something went wrong in newmazepart: %dirfromback is not a direction");
  52.     //return %part;
  53. }
  54. function getDirToBrick(%pa,%pb )
  55. {
  56.     %x1=getWord(%pa,0);
  57.     %x2=getWord(%pb,0);
  58.     %y1=getWord(%pa,1);
  59.     %y2=getWord(%pb,1);
  60.     if(%x2-%x1>0)
  61.         return "right";
  62.     else if(%x2-%x1<0)
  63.         return "left";
  64.     else if(%y2-%y1>0)
  65.         return "up";
  66.     else if(%y2-%y1<0)
  67.         return "down";
  68. }
  69. function maze::calculateStart()
  70. {
  71.     $mazepart=0;
  72.     _maze_bot.spawnHoleBot();
  73.     $mazestart=_maze_start.getid();
  74.     $mazeend=_maze_end.getid();
  75.     $mazepiece=-1;
  76.     $mazeoverflow=0;
  77.     $mazecalcbegin=getsimtime();
  78.     $mazepathA=new SimGroup();
  79.     $mazepathB=new SimGroup();
  80.     $mazepathC=new SimGroup();
  81.     $mazesolution="A";
  82.     $mazeafterstart=-1;
  83.     $mazecalculating=1;
  84.     bp("Finding starting point");
  85.     %stop=0;
  86.     for(%x=1;%x<=9;%x++){
  87.         for(%y=1;%y<=9;%y++){
  88.             %section="_maze_" @ %x @ "_" @ %y;
  89.             %section=%section.getid();
  90.             if(isObject(%section)){
  91.                 %ray=containerRayCast(_maze_start.position,%section.position,$TypeMasks::FxBrickObjectType);
  92.                 %ray=getWord(%ray,0);
  93.                 if(isObject(%ray)&&%ray==%section&&!%stop&&pyth(%section.position,_maze_start.position)==3.5){
  94.                     %stop=1;
  95.                     %foo=new ScriptObject(MazePart);
  96.                     %foo.brick=$mazestart;
  97.                     %x2=getWord($mazestart.position,0);
  98.                     %y2=getWord($mazestart.position,1);
  99.                     %dir=getDirToBrick(%section.position,$mazestart.position);
  100.                     $mazestart=%section;
  101.                     bp("Found.");
  102.                     %a=newMazePart(%x,%y,%foo,%section,%dir);
  103.                     $mazepiece=%a;
  104.                     $mazeafterstart=%a;
  105.                     maze::calculateEnd();
  106.                     %section.setcolorfx(4);
  107.                 }
  108.             }
  109.         }
  110.     }
  111. }
  112. function maze::calculateEnd()
  113. {
  114.     %stop=0;
  115.     bp("Finding ending point");
  116.     for(%x=1;%x<=9;%x++){
  117.         for(%y=1;%y<=9;%y++){
  118.             %section="_maze_" @ %x @ "_" @ %y;
  119.             %section=%section.getid();
  120.             if(isObject(%section)){
  121.                 %section.setcolorfx(3);
  122.                 %ray=containerRayCast(_maze_end.position,%section.position,$TypeMasks::FxBrickObjectType);
  123.                 %ray=getWord(%ray,0);
  124.                 if(isObject(%ray)&&%ray==%section&&!%stop&&pyth(%section.position,_maze_end.position)==3.5){
  125.                     %stop=1;
  126.                     $mazeend=%section;
  127.                     bp("Found.<br>Start:" SPC $mazestart.getname() SPC "End:" SPC $mazeend.getname());
  128.                     calculatePart();
  129.                     %section.setColorFx(4);
  130.                 }
  131.                 %section.schedule(1000,0,setcolorfx,0);
  132.             }
  133.         }
  134.     }
  135. }
  136. function stopfx(%this){
  137.     if($mazecalculating)
  138.         %this.setColorFx(3);
  139. }
  140. function isHere(%x,%y){
  141.     for(%i=0;%i<$mazepath[$mazesolution].getCount();%i++){
  142.         %obj=$mazepath[$mazesolution].getObject(%i);
  143.         if(%obj.x==%x && %obj.y == %y)
  144.             return 1;
  145.     }
  146.     return 0;
  147. }
  148. function calculatePart(){
  149.     $mazeoverflow++;
  150.     if($mazeoverflow>2500){
  151.         //echo("BUFFER OVERFLOW\nSTOPPING CALCULATION");
  152.         bp("BUFFER OVERFLOW!<br>This means it took too long to calculate the maze solution. It might have gotten stuck in an infinite loop!",6);
  153.         return;
  154.     }
  155.     bp("Analyzing maze...");
  156.     %part=$mazepiece;
  157.     %posx=getword(%part.brick.position,0);
  158.     %posy=getword(%part.brick.position,1);
  159.     %posz=getword(%part.brick.position,2);
  160.     %x=%part.x;
  161.     %y=%part.y;
  162.     %back=%part.back;
  163.     %brick=%part.brick;
  164.     %brick.setColorFx(3);
  165.     %ways=0;
  166.     //echo("working piece" SPC %x SPC %y);
  167.     //echo(%posx SPC %posy SPC %posz);
  168.     // echo(containerRayCast(%back.position,%posx+1000 SPC %posy SPC %posz,$TypeMasks:FxBrickObjectType));
  169.     switch$($mazesolution){
  170.         case "A":
  171.             if(%x+1<=9){
  172.                 if (getword(containerRayCast(%brick.position,%posx+1000 SPC %posy SPC %posz,$TypeMasks::FxBrickObjectType),0)==("_maze_" @ %x+1 @ "_" @ %y).getid()){
  173.                     %nx=%x+1;
  174.                     %ny=%y;
  175.                     if(!(%nx>9||%nx<1||%ny>9||%ny<1)){
  176.                         %newbrick=("_maze_" @ %nx @ "_" @ %ny).getid();
  177.                         if(!(%back.x==%nx&&%back.y==%ny)&&!%part.right.used&&!isHere(%nx,%ny)){
  178.                             %newpart=newMazePart(%nx,%ny,%part,%newbrick,getDirToBrick(%brick.position,%newbrick.position));
  179.                             $mazepiece=%newpart;
  180.                             //echo("can go right");
  181.                             %ways++;
  182.                         }
  183.                     }
  184.                 }
  185.             }
  186.             if(%x-1>0){
  187.                 if (getword(containerRayCast(%brick.position,%posx-1000 SPC %posy SPC %posz,$TypeMasks::FxBrickObjectType),0)==("_maze_" @ %x-1 @ "_" @ %y).getid()){
  188.                     %nx=%x-1;
  189.                     %ny=%y;
  190.                     if(!(%nx>9||%nx<1||%ny>9||%ny<1)){
  191.                         %newbrick=("_maze_" @ %nx @ "_" @ %ny).getid();
  192.                         if(!(%back.x==%nx&&%back.y==%ny)&&!%part.left.used&&!isHere(%nx,%ny)){
  193.                             %newpart=newMazePart(%nx,%ny,%part,%newbrick,getDirToBrick(%brick.position,%newbrick.position));
  194.                             $mazepiece=%newpart;
  195.                             //echo("can go left");
  196.                             %ways++;
  197.                         }
  198.                     }
  199.                 }
  200.             }
  201.             if(%y+1<=9){
  202.                 if (getword(containerRayCast(%brick.position,%posx SPC %posy+1000 SPC %posz,$TypeMasks::FxBrickObjectType),0)==("_maze_" @ %x @ "_" @ %y+1).getid()){
  203.                     %nx=%x;
  204.                     %ny=%y+1;
  205.                     if(!(%nx>9||%nx<1||%ny>9||%ny<1)){
  206.                         %newbrick=("_maze_" @ %x @ "_" @ %y+1).getid();
  207.                         if(!(%back.x==%nx&&%back.y==%ny)&&!%part.up.used&&!isHere(%nx,%ny)){
  208.                             %newpart=newMazePart(%nx,%ny,%part,%newbrick,getDirToBrick(%brick.position,%newbrick.position));
  209.                             $mazepiece=%newpart;
  210.                             //echo("can go up");
  211.                             %ways++;
  212.                         }
  213.                     }
  214.                 }
  215.             }
  216.             if(%y-1>0){
  217.                 if (getword(containerRayCast(%brick.position,%posx SPC %posy-1000 SPC %posz,$TypeMasks::FxBrickObjectType),0)==("_maze_" @ %x @ "_" @ %y-1).getid()){
  218.                     %nx=%x;
  219.                     %ny=%y-1;
  220.                     if(!(%nx>9||%nx<1||%ny>9||%ny<1)){
  221.                         %newbrick=("_maze_" @ %nx @ "_" @ %ny).getid();
  222.                         if(!(%back.x==%nx&&%back.y==%ny)&&!%part.down.used&&!isHere(%nx,%ny)){
  223.                             %newpart=newMazePart(%nx,%ny,%part,%newbrick,getDirToBrick(%brick.position,%newbrick.position));
  224.                             $mazepiece=%newpart;
  225.                             //echo("can go down");
  226.                             %ways++;
  227.                         }
  228.                     }
  229.                 }
  230.             }
  231.         case "B":
  232.             if(%x-1>0){
  233.                 if (getword(containerRayCast(%brick.position,%posx-1000 SPC %posy SPC %posz,$TypeMasks::FxBrickObjectType),0)==("_maze_" @ %x-1 @ "_" @ %y).getid()){
  234.                     %nx=%x-1;
  235.                     %ny=%y;
  236.                     if(!(%nx>9||%nx<1||%ny>9||%ny<1)){
  237.                         %newbrick=("_maze_" @ %nx @ "_" @ %ny).getid();
  238.                         if(!(%back.x==%nx&&%back.y==%ny)&&!%part.left.used&&!isHere(%nx,%ny)){
  239.                             %newpart=newMazePart(%nx,%ny,%part,%newbrick,getDirToBrick(%brick.position,%newbrick.position));
  240.                             $mazepiece=%newpart;
  241.                             //echo("can go left");
  242.                             %ways++;
  243.                         }
  244.                     }
  245.                 }
  246.             }
  247.             if(%x+1<=9){
  248.                 if (getword(containerRayCast(%brick.position,%posx+1000 SPC %posy SPC %posz,$TypeMasks::FxBrickObjectType),0)==("_maze_" @ %x+1 @ "_" @ %y).getid()){
  249.                     %nx=%x+1;
  250.                     %ny=%y;
  251.                     if(!(%nx>9||%nx<1||%ny>9||%ny<1)){
  252.                         %newbrick=("_maze_" @ %nx @ "_" @ %ny).getid();
  253.                         if(!(%back.x==%nx&&%back.y==%ny)&&!%part.right.used&&!isHere(%nx,%ny)){
  254.                             %newpart=newMazePart(%nx,%ny,%part,%newbrick,getDirToBrick(%brick.position,%newbrick.position));
  255.                             $mazepiece=%newpart;
  256.                             //echo("can go right");
  257.                             %ways++;
  258.                         }
  259.                     }
  260.                 }
  261.             }
  262.             if(%y+1<=9){
  263.                 if (getword(containerRayCast(%brick.position,%posx SPC %posy+1000 SPC %posz,$TypeMasks::FxBrickObjectType),0)==("_maze_" @ %x @ "_" @ %y+1).getid()){
  264.                     %nx=%x;
  265.                     %ny=%y+1;
  266.                     if(!(%nx>9||%nx<1||%ny>9||%ny<1)){
  267.                         %newbrick=("_maze_" @ %x @ "_" @ %y+1).getid();
  268.                         if(!(%back.x==%nx&&%back.y==%ny)&&!%part.up.used&&!isHere(%nx,%ny)){
  269.                             %newpart=newMazePart(%nx,%ny,%part,%newbrick,getDirToBrick(%brick.position,%newbrick.position));
  270.                             $mazepiece=%newpart;
  271.                             //echo("can go up");
  272.                             %ways++;
  273.                         }
  274.                     }
  275.                 }
  276.             }
  277.             if(%y-1>0){
  278.                 if (getword(containerRayCast(%brick.position,%posx SPC %posy-1000 SPC %posz,$TypeMasks::FxBrickObjectType),0)==("_maze_" @ %x @ "_" @ %y-1).getid()){
  279.                     %nx=%x;
  280.                     %ny=%y-1;
  281.                     if(!(%nx>9||%nx<1||%ny>9||%ny<1)){
  282.                         %newbrick=("_maze_" @ %nx @ "_" @ %ny).getid();
  283.                         if(!(%back.x==%nx&&%back.y==%ny)&&!%part.down.used&&!isHere(%nx,%ny)){
  284.                             %newpart=newMazePart(%nx,%ny,%part,%newbrick,getDirToBrick(%brick.position,%newbrick.position));
  285.                             $mazepiece=%newpart;
  286.                             //echo("can go down");
  287.                             %ways++;
  288.                         }
  289.                     }
  290.                 }
  291.             }
  292.         case "C":
  293.             if(%y+1<=9){
  294.                 if (getword(containerRayCast(%brick.position,%posx SPC %posy+1000 SPC %posz,$TypeMasks::FxBrickObjectType),0)==("_maze_" @ %x @ "_" @ %y+1).getid()){
  295.                     %nx=%x;
  296.                     %ny=%y+1;
  297.                     if(!(%nx>9||%nx<1||%ny>9||%ny<1)){
  298.                         %newbrick=("_maze_" @ %x @ "_" @ %y+1).getid();
  299.                         if(!(%back.x==%nx&&%back.y==%ny)&&!%part.up.used&&!isHere(%nx,%ny)){
  300.                             %newpart=newMazePart(%nx,%ny,%part,%newbrick,getDirToBrick(%brick.position,%newbrick.position));
  301.                             $mazepiece=%newpart;
  302.                             //echo("can go up");
  303.                             %ways++;
  304.                         }
  305.                     }
  306.                 }
  307.             }
  308.             if(%x+1<=9){
  309.                 if (getword(containerRayCast(%brick.position,%posx+1000 SPC %posy SPC %posz,$TypeMasks::FxBrickObjectType),0)==("_maze_" @ %x+1 @ "_" @ %y).getid()){
  310.                     %nx=%x+1;
  311.                     %ny=%y;
  312.                     if(!(%nx>9||%nx<1||%ny>9||%ny<1)){
  313.                         %newbrick=("_maze_" @ %nx @ "_" @ %ny).getid();
  314.                         if(!(%back.x==%nx&&%back.y==%ny)&&!%part.right.used&&!isHere(%nx,%ny)){
  315.                             %newpart=newMazePart(%nx,%ny,%part,%newbrick,getDirToBrick(%brick.position,%newbrick.position));
  316.                             $mazepiece=%newpart;
  317.                             //echo("can go right");
  318.                             %ways++;
  319.                         }
  320.                     }
  321.                 }
  322.             }
  323.             if(%x-1>0){
  324.                 if (getword(containerRayCast(%brick.position,%posx-1000 SPC %posy SPC %posz,$TypeMasks::FxBrickObjectType),0)==("_maze_" @ %x-1 @ "_" @ %y).getid()){
  325.                     %nx=%x-1;
  326.                     %ny=%y;
  327.                     if(!(%nx>9||%nx<1||%ny>9||%ny<1)){
  328.                         %newbrick=("_maze_" @ %nx @ "_" @ %ny).getid();
  329.                         if(!(%back.x==%nx&&%back.y==%ny)&&!%part.left.used&&!isHere(%nx,%ny)){
  330.                             %newpart=newMazePart(%nx,%ny,%part,%newbrick,getDirToBrick(%brick.position,%newbrick.position));
  331.                             $mazepiece=%newpart;
  332.                             //echo("can go left");
  333.                             %ways++;
  334.                         }
  335.                     }
  336.                 }
  337.             }
  338.             if(%y-1>0){
  339.                 if (getword(containerRayCast(%brick.position,%posx SPC %posy-1000 SPC %posz,$TypeMasks::FxBrickObjectType),0)==("_maze_" @ %x @ "_" @ %y-1).getid()){
  340.                     %nx=%x;
  341.                     %ny=%y-1;
  342.                     if(!(%nx>9||%nx<1||%ny>9||%ny<1)){
  343.                         %newbrick=("_maze_" @ %nx @ "_" @ %ny).getid();
  344.                         if(!(%back.x==%nx&&%back.y==%ny)&&!%part.down.used&&!isHere(%nx,%ny)){
  345.                             %newpart=newMazePart(%nx,%ny,%part,%newbrick,getDirToBrick(%brick.position,%newbrick.position));
  346.                             $mazepiece=%newpart;
  347.                             //echo("can go down");
  348.                             %ways++;
  349.                         }
  350.                     }
  351.                 }
  352.             }
  353.     }
  354.     if(getword(containerRayCast(%brick.position,_maze_end.position,$TypeMasks::FxBrickObjectType),0)==_maze_end.getid() && pyth(%brick.position,_maze_end.position)==3.5){
  355.         //echo("found ending");
  356.         %p1=new ScriptObject(){
  357.             x=%x;
  358.             y=%y;
  359.         };
  360.         $mazepath[$mazesolution].add(%p1);
  361.         %p2=new ScriptObject(){
  362.             ending=1;
  363.         };
  364.         $mazepath[$mazesolution].add(%p2);
  365.         %time=getsimtime();
  366.         if ($mazesolution$="C"){
  367.             $mazecalculating=0;
  368.             bp("Found ending!<br>Moves:<br>A:" SPC $mazepathA.getCount() @ "; B:" SPC $mazepathB.getCount() @ "; C:" SPC $mazepathC.getCount());
  369.             %ma=$mazepathA.getCount();
  370.             %mb=$mazepathB.getCount();
  371.             %mc=$mazepathC.getCount();
  372.             if(%ma<%mb&&%ma<%mc)
  373.                 $mazesolution="A";
  374.             else if(%mb<%ma&&%mb<%mc)
  375.                 $mazesolution="B";
  376.             else if(%mc<%ma&&%mc<%mb)
  377.                 $mazesolution="C";
  378.             else
  379.                 $mazesolution="A";
  380.             schedule(3000,0,calculateTime,%time);
  381.             schedule(6000,0,workMaze);
  382.             for(%x=1;%x<=9;%x++){
  383.                 for(%y=1;%y<=9;%y++){
  384.                     %section="_maze_" @ %x @ "_" @ %y;
  385.                     %section=%section.getid();
  386.                     if(isObject(%section)){
  387.                         %section.setcolorfx(0);
  388.                     }
  389.                 }
  390.             }
  391.             for(%i=0;%i<$mazepath[$mazesolution].getCount();%i++){
  392.                 %obj=$mazepath[$mazesolution].getObject(%i);
  393.                 if(isObject(%obj)){
  394.                     if(%obj.ending){
  395.                         //_maze_end.setColorFx(3);
  396.                     }else{
  397.                         ("_maze_" @ %obj.x @ "_" @ %obj.y).setColorFx(3);
  398.                     }
  399.                 }
  400.             }
  401.         }else{
  402.             //echo("finished solution" SPC $mazesolution);
  403.             bp("Finished solution" SPC $mazesolution SPC "with" SPC $mazepath[$mazesolution].getCount() SPC "moves");
  404.             $mazepiece=$mazeafterstart;
  405.             for(%x=1;%x<=9;%x++){
  406.                 for(%y=1;%y<=9;%y++){
  407.                     %section="_maze_" @ %x @ "_" @ %y;
  408.                     %section=%section.getid();
  409.                     if(isObject(%section)){
  410.                         %section.setcolorfx(3);
  411.                     }
  412.                 }
  413.             }
  414.             $mazestart.setColorFx(4);
  415.             $mazeend.setColorFx(4);
  416.             switch$($mazesolution){
  417.                 case "A":
  418.                     $mazesolution="B";
  419.                 case "B":
  420.                     $mazesolution="C";
  421.             }
  422.             schedule(1000,0,calculatePart);
  423.         }
  424.         return;
  425.     }
  426.     %brick.setColorFx(0);
  427.     //echo("ways" SPC %ways);
  428.         //echo(">>>COUNT" SPC $mazepath[$mazesolution].getCount() SPC "<<<");
  429.     if(%ways==0&&%part.back.back.brick==_maze_start.getid()){
  430.         //echo("DONE!");
  431.         bp("Could not find a possible solution to the maze!");
  432.         $mazepart=0;
  433.         stopAllFx();
  434.         schedule(1000,0,stopAllFx);
  435.         return;
  436.     }
  437.     if(%ways==0){
  438.         //echo("dead end");
  439.         %part.used=1;
  440.         $mazepiece=%part.back;
  441.         %part.brick.setColorFx(2);
  442.         schedule(50,0,stopfx,%part.brick);
  443.         //echo("going back");
  444.         $mazepath[$mazesolution].remove($mazepath[$mazesolution].getObject($mazepath[$mazesolution].getCount()-1));
  445.     }else{
  446.         %pobj=new ScriptObject();
  447.         %pobj.x=%x;
  448.         %pobj.y=%y;
  449.         $mazepath[$mazesolution].add(%pobj);
  450.         //echo("going" SPC getDirToBrick(%brick.position,$mazepiece.brick.position));
  451.     }
  452.     if($mazepiece!=%part)
  453.         //schedule(50,0,calculatePart);
  454.         calculatePart();
  455. }
  456. function stopAllFx(){
  457.     for(%x=1;%x<=9;%x++){
  458.         for(%y=1;%y<=9;%y++){
  459.             %section="_maze_" @ %x @ "_" @ %y;
  460.             %section=%section.getid();
  461.             if(isObject(%section)){
  462.                 %section.setcolorfx(0);
  463.             }
  464.         }
  465.     }
  466. }
  467. package maze{
  468.     function fxDTSBrick::onBotReachBrick(%this,%bot){
  469.         if(%bot.spawnBrick.getId()==_maze_bot.getId() && $mazepart>=1){
  470.             workMaze();
  471.         }
  472.         return parent::onBotReachBrick(%this,%bot);
  473.     }
  474. };
  475. deactivatepackage(maze);
  476. activatepackage(maze);
  477. function workMaze(){
  478.     %part=$mazepart++;
  479.     %obj=$mazepath[$mazesolution].getobject(%part);
  480.     if(isObject(%obj)){
  481.         if(!%obj.ending){
  482.             _maze_bot.hbot.gotobrick("maze_" @ %obj.x @ "_" @ %obj.y);
  483.             %obj2=$mazepath[$mazesolution].getObject(%part-1);
  484.             if(isObject(%obj2))
  485.                 ("_maze_" @ %obj2.x @ "_" @ %obj2.y).getId().setColorFx(0);
  486.             //schedule(750,0,workMaze,%part++);
  487.         }else{
  488.             _maze_bot.hbot.gotobrick("maze_end");
  489.             schedule(750,0,bp,"Finished! Maze solved!");
  490.             for(%x=1;%x<=9;%x++){
  491.                 for(%y=1;%y<=9;%y++){
  492.                     %section="_maze_" @ %x @ "_" @ %y;
  493.                     %section=%section.getid();
  494.                     if(isObject(%section)){
  495.                         %section.setcolorfx(0);
  496.                     }
  497.                 }
  498.             }
  499.         }
  500.     }
  501. }
  502. function calculateTime(%time)
  503. {
  504.     bp("Time it took to calculate:<br>" @ (%time-$mazecalcbegin)/1000 @ " seconds." NL "Using solution" SPC $mazesolution @ ".");
  505. }
  506. //calculateStart();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement