Оторвитесь от своих унылых порноигрушек и посмотрите, какую ахуенную штуку я для вас нашел:
alexnisnevich.github.io/untrusted/А ну ка, кто дальше пройдет, а кто отсосет виртуальный член злобного интерпретатора?
UPD Уровень 13 - алгоритм поиска пути(пока баганый и не оптимальный, но это пока):
робот радостно находит путь и самостоятельно бежит по нему к ключу:
Код с комментами
var _cells = []; //костыль, что бы отмечать "посещенные" клетки
for(i=0;i<50;i++){
_cells[i] = [];
for(j=0;j<10;j++){
_cells[i][j]=false;
}
}
function findPath( _x, _y ){
if( map.getObjectTypeAt(_x, _y) == 'blueKey' )return true; //нашли ключик - збс
if( _x == me.getX() && _y == me.getY() )return false; //робота он считает за пустое место, так что проверяем отдельно
if( map.getObjectTypeAt(_x, _y) != 'empty' )return false;
if( _cells[_x][_y] )return false; //собственно, что бы не впасть в бесконечный цикл,
_cells[_x][_y] = true; //все время обходя уже посещенные клетки
if( findPath(_x+1,_y) ){
map.setSquareColor(_x, _y, '#f00'); //подсветим путь для пущей крысоты
return true;
}
if( findPath(_x,_y+1) ){
map.setSquareColor(_x, _y, '#f00');
return true;
}
if( findPath(_x-1,_y) ){
map.setSquareColor(_x, _y, '#f00');
return true;
}
if( findPath(_x,_y-1) ){
map.setSquareColor(_x, _y, '#f00');
return true;
}
return false;
}
if( findPath(me.getX()+1, me.getY()) ) me.move('right'); //вот тут еще надо запилить проверку на длину пути в каждую сторону
else if( findPath(me.getX(), me.getY()+1) ) me.move('down'); //и выбирать кротчайший, но это позже
else if( findPath(me.getX()-1, me.getY()) ) me.move('left');
else if( findPath(me.getX(), me.getY()-1) ) me.move('up');
map.setSquareColor(me.getX(), me.getY(), '#000'); //замажем подсветку пути на пройденных клетках