#BEGIN_PROPERTIES# { "version": "1.2.2", "commandsIntroduced": ["map.getDynamicObjects", "map.getCanvasCoords", "object.setTarget"], "music": "Tart", "mapProperties": { "showDrawingCanvas": true } } #END_PROPERTIES# /*************** * 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) { #START_OF_START_LEVEL# 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 (var 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); } #BEGIN_EDITABLE# // TODO find a way to remove the API docs // wouldn't want the 'good doctor' to find // out about map.getCanvasCoords()... #END_EDITABLE# } #END_OF_START_LEVEL# } function validateLevel(map) { map.validateExactlyXManyObjects(1, 'exit'); }