Оторвитесь от своих унылых порноигрушек и посмотрите, какую ахуенную штуку я для вас нашел:
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'); //замажем подсветку пути на пройденных клетках
var player = map.getPlayer();
var fuck = 0;
if ((player.getColor() == "#f00")&(fuck ==0)){
player.setColor('#0f0')
fuck = 1;
}
if ((player.getColor() == "#0f0")&(fuck ==0)){
player.setColor('#ff0');
fuck = 1;
}
if ((player.getColor() == "#ff0")&(fuck ==0)){
player.setColor('#f00');
fuck = 1;
}
Это ж дварфы в матрице, лол.
так красивее:
if ((player.getColor() == "#f00"){
player.setColor('#0f0');
return;
}
else if ((player.getColor() == "#0f0"){
player.setColor('#ff0');
return;
}
else if ((player.getColor() == "#ff0"){
player.setColor('#f00');
return;
}
upd: теоретически в элсы оно пойти не должно, так что ретерны тоже можно убрать, но лень проверять.
upd2: кто на 13 уровне напишет решение с автопоиском пути, а не с управлением от положения юзверя, тому дам печеньку:З
Первый уровень - создал второй выход
Второй уровень - убрал одну стену
Третий уровень - создал второй выход
Четвёртый уровень - подсветил мины(не совсем понял как я это сделал, хотел подсветить пол)
Пятый уровень - поставил дроиду обманную цель (сначала хотел лабиринт, но обманная цель делается быстрее)
Шестой уровень - пришлось знатно поебстись. В итоге собрал из телефона мультиотмычку, рандомно меняющую цвет при использовании.
Глава вторая
Седьмой уровень - тут все очевидно, размер окошка намекает, что нужно перегенерировать лес каждый раз, когда он мешает пройти.
Восьмой уровень - построил мост. Наверное, можно было решить изящнее.
to be continued...
Лол, а я построил дрону яму.
Код мультиотмычки, меняющей цвет последовательно, в камментах выше. Веб хуй, у тебя там лишняя скобка!
На седьмом левеле телефоном поменял направление движения плота.
Десятый уровень - перепрограммировал робота тем же способом, чтобы он вынес мне ключ. Пока нет ограничения времени, рандом отлично справляется.
>На седьмом левеле телефоном поменял направление движения плота.
Да это как-то красивше, чем строить мост из плотов.
Выполняет любую работу при количестве итераций — > ∞
Потом нужно будет не полениться написать нормальный алгоритм поиска пути, это выглядит интересным
>Веб хуй, у тебя там лишняя скобка!
Ну епта, пиписькой набирал, очепятался:<
Маде ин жопа
Тоже багованный, но с третьей попытки сгенерился лабиринт, который был пройден.
И да, я нихуя не пони, что за еботня тут творится с глобальными и локальными переменными, поэтому направление запоминал через цвет игрока.
Рано или поздно такое должно было произойти...
При повторном прохождении 17 левела я додумался подсветить трапов:
быдлокод
С удивлением обнаружил, что шаффл может вывалить (и как правило вываливает) вовсе непроходимый вариант. А телепорт сразу к выходу - выпасть снова попытки с десятой.