lychees's picture
Upload 569 files
87b3b3a

amahdy: Solution 1 - Teleporter?

Optimze the code and move right all the way!

        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

        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.

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. :)

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

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; };