anchor.diff:  (defun index (l row col)
     (nth col (nth row l)))
   
  +; this class represents a single cell in the game
  +(defclass cell-widget ()
  +  ((value :accessor value))
  +  (:metaclass qt-class)
  +  (:qt-superclass "QWidget")
  +  (:override ("paintEvent" paint-event)))
  +
  +; the paint method for the cell, it draws the cell to the screen
  +(defmethod paint-event ((this cell-widget) paint-event)
  +  (declare (ignore paint-event))
  +  (let ((painter (#_new QPainter this)))
  +    (format t "Paint!~%")
  +      (#_setPen painter (#_new QColor 242 177 121))
  +      (#_setBrush painter (#_new QBrush (#_new QColor 242 177 121)))
  +      (#_drawRect painter (#_new QRect 0 0 100 100))
  +      (#_setPen painter (#_new QColor 255 255 255))
  +      (#_setFont painter (#_new QFont "Arial" 28))
  +      (#_drawText painter (#_new QRect 0 0 100 100) 132 (write-to-string (value this)))
  +      (#_end painter)))
  +
  +; constructor for cell
  +(defmethod initialize-instance :after ((this cell-widget) &key val)
  +  (setf (value this) val)
  +  (new this))
  +
   ; make a board-widget class that derives from QWidget
   (defclass board-widget ()
     ((board :accessor board)
  
positive.code: (defmethod update-board ((this board-widget))
    (loop for row from 0 to 3 do
      (loop for col from 0 to 3 do
        (#_setText (index (board-labels this) row col) (write-to-string (index (board this) row col))))))
  
  ; these methods each move the board in a specific direction
  ; they return whether or not they made any change at all
  
negative.code: ; make a new window
  (defun main ()
    (with-main-window (window (make-instance 'board-widget))
      (#_setStyleSheet window "background-color: #C2B39A;")
      (#_setFixedSize window 450 450)))
  
  ; call the main function
  (setf *random-state* (make-random-state t))
  