anonymous / untrusted-lvl17-solution.js secret
Created

Embed URL

HTTPS clone URL

SSH clone URL

You can clone with HTTPS or SSH.

Download Gist

Solution to level 17 in Untrusted: http://alex.nisnevich.com/untrusted/

View untrusted-lvl17-solution.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
/***************
* pointers.js *
***************
*
* You! How are you still alive?
*
* Well, no matter. Good luck getting through this
* maze of rooms - you'll never see me or the Algorithm again!
*/
 
function startLevel(map) {
function shuffle(o){ //v1.0 [http://bit.ly/1l6LGQT]
for(var j, x, i = o.length; i; j = Math.floor(Math.random() * i),
x = o[--i], o[i] = o[j], o[j] = x);
return o;
};
 
map.createFromGrid(
['+++++++++++++++++++++++++++++++++++++++++++++',
'++o *++++o *++++o *++++o *++++o *++++o *+++++',
'+* @ o++* o++* o++* o++* o++* o++++',
'++o *++++o *++++o *++++o *++++o *++++o *+++++',
'+++++++++++++++++++++++++++++++++++++++++++++',
'+++++* o++++* o++++* o++++* o++++* o++++* o++',
'++++o *++o *++o *++o *++o *++o *+',
'+++++* o++++* o++++* o++++* o++++* o++++* o++',
'+++++++++++++++++++++++++++++++++++++++++++++',
'++o *++++o *++++o *++++o *++++o *++++o *+++++',
'+* o++* o++* o++* o++* o++* o++++',
'++o *++++o *++++o *++++o *++++o *++++o *+++++',
'+++++++++++++++++++++++++++++++++++++++++++++',
'+++++* o++++* o++++* o++++* o++++* o++++* o++',
'++++o *++o *++o *++o *++o *++o *+',
'+++++* o++++* o++++* o++++* o++++* o++++* o++',
'+++++++++++++++++++++++++++++++++++++++++++++',
'++o *++++o *++++o *++++o *++++o *++++o *+++++',
'+* o++* o++* o++* o++* o++* E o++++',
'++o *++++o *++++o *++++o *++++o *++++o *+++++',
'+++++++++++++++++++++++++++++++++++++++++++++'],
{
'@': 'player',
'E': 'exit',
'+': 'block',
'o': 'teleporter',
'*': 'trap',
}, 2, 2);
 
var canvas = map.getCanvasContext();
 
var teleportersAndTraps = map.getDynamicObjects();
teleportersAndTraps = shuffle(teleportersAndTraps);
 
for (i = 0; i < teleportersAndTraps.length; i+=2) {
var t1 = teleportersAndTraps[i];
var t2 = teleportersAndTraps[i+1];
 
// Point each teleporter to either another teleporter
// or a trap
if (t1.getType() == 'teleporter') {
t1.setTarget(t2);
}
if (t2.getType() == 'teleporter') {
t2.setTarget(t1);
}
 
// TODO find a way to remove the API docs
// wouldn't want the 'good doctor' to find
// out about map.getCanvasCoords()...
}
}
 
function startLevel(map) {
map.createFromGrid(
['++++',
'+@E+',
'++++'],
{
'@': 'player',
'E': 'exit',
'+': 'block',
'o': 'teleporter',
'*': 'trap',
}, 2, 2);
foo = {'a':'b'
}
}
 
function validateLevel(map) {
map.validateExactlyXManyObjects(1, 'exit');
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.