anchor.diff:  ;;;
   ;;; This is a simple GUI for CL-Sokoban, see http://www.cliki.net/CL-Sokoban 
   
  -(load "3rd-party/sokoban")
  -(load "3rd-party/levels")
  +(load (eql:in-home "examples/sokoban/3rd-party/sokoban"))
  +(load (eql:in-home "examples/sokoban/3rd-party/levels"))
   
   (defpackage :eql-sokoban
     (:use :common-lisp :util :eql :cl-sokoban)
  
positive.code: (defun draw-items (type)
    (let* ((char (type-char type))
  	 (size (maze-dimensions *maze*))
  	 (y 0)
  	 (curr (assoc* type *items*)))
      (flet ((hide ()
  	     (unless (eql :wall type)
  	       (dolist (item curr)
  		 (qfun* (first curr) "QGraphicsItem" "setVisible" nil)))))
        (hide)
        (dolist (row (maze-text *maze*))
  	(let ((x 0))
  	  (do-string (curr-char row)
  	    (when (char= char curr-char)
  	      (do- (qfun* (first curr) "QGraphicsItem")
  		("setPos" (list x y))
  		("setVisible" t))
  	      (setf curr (rest curr)))
  	    (incf x (first *item-size*))))
  	(incf y (second *item-size*)))
        (hide))))
  
negative.code:   (draw-items :wall))
  
  (defun create-items ()
    (labels ((add (type)
  	     (let ((item (create-item type)))
  	       (push item (cdr (assoc type *items*)))
  	       (qfun *scene* "addItem" item)))
  	   (add* (types)
  	     (dolist (type types)
  	       (add type))))
      (dolist (types *items*)
        (dolist (item (cdr types))
  	(qdel item)))
      (setf *items* (mapcar #'(lambda (x) (list (cdr x))) +item-types+)) ; reset
      (dolist (row (maze-text *maze*))
        (do-string (char row)
  	(unless (char= #\Space char)
  	  (let ((type (char-type char)))
  	    (cond ((find type '(:player :player2))
  		   (add* '(:player :player2)))
  		  ((find type '(:object :object2))
  		   (add* '(:object :object2 :goal)))
  		  ((eql :wall type)
  		   (add :wall)))))))))
  
  (defun create-item (type)
    (let* ((char (type-char type))
  	 (file (in-home (format nil "examples/sokoban/pics/~(~a~).png" type)))
  	 (item (if (probe-file file)
  		   (qnew "QGraphicsPixmapItem(QPixmap)" (qnew "QPixmap(QString)" file))
  		   (let ((item (qnew "QGraphicsTextItem"))) ; simple text item dummies (when pics are missing)
  		     (qfun item "setHtml"
  			   (format nil "<span style='font-family:monospace; font-size:12pt; font-weight:bold; color:~a;'>~c"
  				   (case type
  