Spaces:
Running
Running
| ## amahdy: Solution 1 - Teleporter? | |
| Optimze the code and move right all the way! | |
| ```javascript | |
| map.placeObject(6, 4, 'teleporter'); | |
| map.placeObject(map.getWidth()-11, map.getHeight()-5, 'teleporter'); | |
| var ts = map.getDynamicObjects(); | |
| ts[ts.length-2].setTarget(ts[ts.length-1]); | |
| break; | |
| ``` | |
| ## amahdy: Solution 2 - Wanna play? | |
| Needs some luck, try and error | |
| ```javascript | |
| if(t1.getType() != 'teleporter' | |
| || t2.getType() != 'teleporter') { | |
| map.setSquareColor(t1.getX(), t1.getY(), 'yellow'); | |
| map.setSquareColor(t2.getX(), t2.getY(), 'yellow'); | |
| }else { | |
| map.setSquareColor(t1.getX(), t1.getY(), '0'+i); | |
| map.setSquareColor(t2.getX(), t2.getY(), '0'+i); | |
| } | |
| ``` | |
| ## Jhack (giacgbj) | |
| Connect the first teleport on the player's right to the one on the exit's right. | |
| ```javascript | |
| var start; | |
| var end; | |
| for (j = 0; j < teleportersAndTraps.length; j++) { | |
| var t = teleportersAndTraps[j]; | |
| var x = t.getX(); | |
| var y = t.getY(); | |
| if (7 == x && 4 == y) | |
| { | |
| start = t; | |
| } else if (map.getWidth()-8 == x && map.getHeight()-5 == y) { | |
| end = t; | |
| } | |
| } | |
| start.setTarget(end); | |
| break; | |
| ``` | |
| ## PK | |
| Find nearest teleport to exit. Re-route all other teleports to it. | |
| There is no room for mistake. :) | |
| ```javascript | |
| var dist2 = function d2(o,x2,y2){ | |
| var dx = x2 - o.getX(); | |
| var dy = y2 - o.getY(); | |
| return dx*dx + dy*dy; | |
| }; | |
| var teleporters = teleportersAndTraps.filter(function(v){ | |
| return v.getType() == 'teleporter'; | |
| }); | |
| var x = map.getWidth(); | |
| var y = map.getHeight(); | |
| teleporters.sort(function(a, b){ | |
| return dist2(a,x,y) - dist2(b,x,y); | |
| }) | |
| var exit = teleporters[0]; | |
| for (var i = 1; i < teleporters.length; i++){ | |
| teleporters[i].setTarget(exit); | |
| } | |
| break; | |
| ``` | |
| ## Highlights | |
| Highlights mines and shows telepoerter's paths | |
| ```javascript | |
| t1_pos = map.getCanvasCoords( t1 ); | |
| t2_pos = map.getCanvasCoords( t2 ); | |
| if( t1.getType() == 'trap' ) { | |
| map.setSquareColor( t2.getX(), t2.getY(), 'red' ); | |
| } else if( t2.getType() != 'trap' ) { | |
| canvas.beginPath(); | |
| canvas.strokeStyle = 'blue'; | |
| canvas.lineWidth = 1; | |
| canvas.moveTo( t1_pos['x'] , t1_pos['y']); | |
| canvas.lineTo( t2_pos['x'] , t2_pos['y'] ); | |
| canvas.stroke(); | |
| } | |
| if( t2.getType() == 'trap' ) { | |
| map.setSquareColor( t1.getX(), t1.getY(), 'red' ); | |
| } | |
| ``` | |
| ## Redefine shuffle | |
| not shuffling for real | |
| function shuffle(o){ | |
| var ret = [] | |
| ret.push(o[0]); | |
| ret.push(o[o.length -2]); | |
| return ret; | |
| }; | |