Casting SPELs

Capítulo 3:
Construyendo el escenario de nuestro juego

En este juego, junto con las dos personas ya presentadas, hay también cuatro objetos que se pueden mover y con los cuales el jugador podrá hacer algunas cosas. A la botella de whiskey del mago ya la conocemos. Más tarde nos econtraremos con una rana, una cadena y un balde. A estos cuatro objetos los empaquetamos en una lista, la cual almacenamos con el nombre de objects.

objects: '[whiskey_bottle, bucket, chain, frog]$

Los corchetes se utilizan en Maxima para formar listas. Evidentemente, una lista no es un átomo, sino una sentencia formada por varios elementos. Puesto que Maxima está escrito el Lisp (LISt Processing), el uso de listas permite programar de forma flexible, a la vez que elegante. De todo esto haremos un uso intensivo muy pronto.

Por otro lado, al terminar la sentencia anterior con el símbolo del dólar, hacemos que se oculte la respuesta que nos pudiera dar Maxima; la cual tú mismo ya la intuyes, ¿o no?

Bueno, pues aquí está. Nuestro pequeño mundo en el que se desarrollará el juego.

Está formado por tres lugares diferentes: la sala de estar, el ático de la casa y el jardín.

En primer lugar vamos a definir el símbolo map, que va a contener cierta información sobre el lugar de nuestro juego.

map: '[[living_room, 
          "you are in the living_room of a wizards house. 
             there is a wizard snoring loudly on the couch. ",
          [west, door, garden],
          [upstairs, stairway, attic] ],
         
       [garden, 
          "you are in a beautiful garden. 
             there is a well in front of you. ",
          [east, door, living_room] ],
         
       [attic, 
          "you are in the attic of the wizards house. 
              there is a giant welding torch in the corner. ",
          [downstairs, stairway, living_room] ]]$

Como ves, map es una lista formada a su vez de tres listas. En cada una de ellas, el primer elemento es el nombre de un lugar y el segundo lo describe en dos frases. Los demás elementos son también listas que contienen claves indicando en qué dirección y cómo se traslada uno de un espacio a otro.

Al menos que esté durmiendo la mona, la botella de whiskey estará en la mano del mago.

La cadena y la rana están en el jardín y el balde en la sala de estar. Toda esta información se almacena en object_locations.

object_locations: '[[whiskey_bottle, living_room],
                    [bucket, living_room],
                    [chain, garden],
                    [frog, garden]]$

Cada objeto queda así asociado a un lugar. Cuando una lista como object_locations está formada con listas, la podemos llamar lista de asociación. El primer elemento de cada lista es la clave, a partir del cual tenemos acceso a los demás elementos de la lista. Enseguida lo veremos. De hecho, map es también una lista de asociación.

Muy bien. El caso es que ya tenemos definido nuestro tablero del juego y sus fichas. Tan solo falta dejar claro cómo empieza la primera jugada.

location: 'living_room$

Así pues, nos encontramos en la sala de estar del mago.

Introducción | Capítulo 1 | Capítulo 2 | Capítulo 3 | Capítulo 4 | Capítulo 5 | Capítulo 6 | Capítulo 7 | Agradecimientos | Licencia

© Mario Rodríguez Riotorto, 2006