FASE 5: Interactuando con el jugador (II) • Actividad 5.1: Renombrar el fichero aventura-fase4.pl. Ahora pasará a llamarse aventura-fase5.pl. • Actividad 5.2: Te habrás dado cuenta de que la posición del jugador es un valor que debe cambiar en el tiempo, durante la ejecución del programa. Para poder hacer eso, necesitaremos que posicionJugador sea un predicado dinámico. Para esto, debes seguir los siguientes pasos: 1) borra el hecho posicionJugador actual. 2) Crea una nueva regla, de las que se ejecutan al compilar el archivo, y declara en ella el predicado posicionJugador de aridad 1 como dinámico. • Actividad 5.3: Ahora que es dinámico, hay que crearlo al principio del programa y modificarlo cada vez que su valor cambie. Para el comienzo del programa, nos crearemos una regla que llamaremos inicializar que se ocupará de dar los valores de inicio a todos los predicados dinámicos que vayamos creando. En esta regla, haremos 2 cosas: 1) Eliminaremos de la BC cualquier valor anterior de posicionJugador que pueda haberse quedado de ejecuciones anteriores. Esto lo haremos usando abolish. 2) Añadiremos a la BC el predicado posicionJugador con el valor que debe tener al principio de la partida (el valor correspondiente al lugar de salida, o lugar 2). Esto lo haremos utilizando assert. % inicializar: Añade a la BC todos los predicados dinámicos % con sus valores iniciales. • Actividad 5.4: La inicialización de los predicados dinámicos debe ser lo primero. Por tanto, añade código a la regla empieza para que lo primero que se haga sea inicializar. Pistas para realizar las actividades: - Los predicados dinámicos se declaran con la sentencia dynamic predicado/aridad. - Si no sabes como utilizar algún comando o instrucción de PROLOG, puedes usar la ayuda con help(comando), o buscar ejemplos por Internet. - El predicado de sistema abolish(predicado/aridad) elimina de la Base de Conocimientos todos los predicados dinámicos que hayan con el nombre y la aridad indicados. - Recuerda que la aridad de un predicado es el número de argumentos que tiene. - El predicado de sistema assert(hecho) añade el hecho indicado a la Base de Conocimientos. Por ejemplo, assert(listo(juan)) hará que en la Base de Conocimientos aparezca el hecho listo(juan). - Nunca escribas 2 veces el mismo código a no ser que sea necesario. Procura hacer llamadas de unas reglas a otras para reutilizar el código que ya funciona. - Una vez hecho todo esto, comprueba que el programa funciona igual que en la fase anterior, pero ahora lo hace con predicados dinámicos.