:- use_module('pl-man-game/main'). s(D,O):-see(normal,D,O). :-dynamic estado/1. estado(derecha). change(EST):-retractall(estado(_)),assert(estado(EST)). do(ACT):-estado(EST),do1(EST,ACT). do1(derecha,get(down)):-s(down,'r'),change(izquierda). do1(derecha,get(down)):-s(down,'a'),change(izquierda). do1(derecha,get(down)):-s(down,'m'),change(izquierda). do1(derecha,get(up)):-s(up,'r'),change(izquierda). do1(derecha,get(up)):-s(up,'a'),change(izquierda). do1(derecha,get(up)):-s(up,'m'),change(izquierda). do1(derecha,get(right)):-s(right,'r'),change(izquierda). do1(derecha,get(right)):-s(right,'a'),change(izquierda). do1(derecha,get(right)):-s(right,'m'),change(izquierda). do1(derecha,move(none)):-s(right-up,'|'). do1(derecha,move(none)):-s(right,'|'). do1(derecha,move(none)):-s(right-down,'|'). do1(derecha,move(up)):-s(up,'.'),s(down,'#'). do1(derecha,move(down)):-s(down,'.'),s(right,'#'),s(right-up,' '). do1(derecha,move(up)):-s(down,'#'),s(right,'#'),s(left,' '). do1(derecha,move(up)):-s(right,'#'),s(right-up,' '). do1(derecha,move(up)):-s(up,'.'),s(right,'#'),change(arriba). do1(derecha,move(up)):-s(up,' '),s(right,'#'),change(arriba). do1(derecha,move(right)). do1(arriba,get(up)):-s(up,'r'),change(izquierda). do1(arriba,get(up)):-s(up,'a'),change(izquierda). do1(arriba,get(up)):-s(up,'m'),change(izquierda). do1(arriba,move(down)):-s(up,'#'),change(abajo). do1(arriba,move(up)). do1(abajo,get(down)):-s(down,'r'),change(izquierda). do1(abajo,get(down)):-s(down,'a'),change(izquierda). do1(abajo,get(down)):-s(down,'m'),change(izquierda). do1(abajo,move(down)). do1(izquierda,move(none)):-s(left-up,'|'). do1(izquierda,move(none)):-s(left-down,'|'). do1(izquierda,move(none)):-s(left,'|'). do1(izquierda,move(up)):-s(down,'#'),s(left,'#'). do1(izquierda,move(up)):-s(left-up,' '),s(right,'#'). do1(izquierda,move(down)):-s(left-down,' '),s(right,'#'). do1(izquierda,move(left)):-s(left-up,'#'),s(left-down,'#'),not(s(right,'#')),change(abrir1). do1(izquierda,move(left)). do1(abrir1,move(down)):-s(down,'.'),s(up,'#'),not(s(left,'|')). do1(abrir1,move(left)):-s(up,'#'),s(down,'#'). do1(abrir1,move(down)):-not(s(left,'|')),s(left-down,'#'),change(abrir2). do1(abrir1,use(left)):-s(left,'|'),change(abrir2). do1(abrir1,move(left)):-s(up,'#'). do1(abrir1,move(up)). do1(abrir2,move(left)):-s(left,'.'). do1(abrir2,move(right)):-s(left,'#'),s(up,'#'),change(coger). do1(abrir2,move(down)):-s(up,'#'). do1(abrir2,move(down)):-s(left-down,' '). do1(abrir2,move(down)):-s(left-down,'|'). do1(abrir2,move(down)):-not(s(left,'|')),s(left-down,'#'),s(up,' '),change(abrir2). do1(abrir2,use(left)):-s(left,'|'),change(abrir3). do1(abrir1,move(up)):-s(up,'.'),s(down,'#'),not(s(left,'|')). do1(abrir3,move(left)):-s(left,'.'). do1(abrir3,move(right)):-s(left,'#'),s(up,'#'),change(derecha). do1(abrir3,move(down)):-not(s(down,'#')). do1(abrir3,use(left)):-s(left,'|'),change(coger). do1(coger,move(down)):-s(down,' '),s(left,' '),not(s(up,'#')),not(s(right,'#')). do1(coger,move(up)):-s(up,'.'),s(down,'#'). do1(coger,move(right)):-s(up,'#'),not(s(left,'.')),not(s(right,'#')). do1(coger,move(down)):-s(right,'#'),s(up,'#'). do1(coger,move(down)):-s(right-down,' '),s(right,'#'),change(derecha). do1(coger,move(left)):-s(left,'.'),s(down,'#'). do1(coger,move(right)):-not(s(left,'.')),s(down,'#'),not(s(right,'#')). do1(coger,move(up)):-s(right,'#'),s(down,'#'). do1(coger,move(up)):-s(right-up,' '),s(right,'#'),change(derecha).