anchor.diff:  )
   
   (defun pickup-item ()
  -  (let ((player-x (car (player-position *player*)))
  -        (player-y (cdr (player-position *player*)))
  -       )
  -  
  -  (loop for i below (length *inventory*)
  -     do (if (equal (aref *inventory* i) nil)
  -              (progn
  -                (setf (aref *inventory* i) (aref *map* (map-index *rows* *columns* player-x player-y)))
  -                (setf (aref *map* (map-index *rows* *columns* player-x player-y))
  -                      nil))
  -              )))
  -  )
  +  (if (and (item-p (node-contents (get-node (player-position *player*)))) (<= (length *inventory*) 10))
  +      (progn
  +        (push (node-contents (get-node (player-position *player*))) *inventory*)
  +        (setf (node-contents (get-node (player-position *player*))) nil))
  +      nil))
   
   (defun view-inventory ()
     (loop for item across *inventory*
  
positive.code: (defun no-item
    NIL)
  
  (push #'make-potion *item-builders*)
  (push #'make-sword  *item-builders*)
  (push #'make-shield *item-builders*)
  (push #'no-item     *item-builders*)
  
  (defmethod view-item (item)
    "Empty"
  
negative.code: (defstruct (potion (:include item)) (power 15))
  (defstruct (sword  (:include item)) (durability 100) (power 5))
  (defstruct (shield (:include item)) (durability 100) (power 7))
  (defstruct node (contents nil) (visited nil))
  
  (defparameter *inventory* (make-array 10))
  (defparameter *item-builders* nil)
  (defparameter *player* (make-player :position (cons 3 3)))
  
  (setf (aref *inventory* 0) (make-sword))
  (setf (aref *inventory* 1) (make-shield))
  