;;; -*- lexical-binding: t -*- ;; ;; -------------------------------------------------------------------------- (require 'cl-lib) (cl-pushnew "." load-path :test #'string=) (require 'luki-lisp) ;; -------------------------------------------------------------------------- (-> 'eieio) (-> 'bad-borderless) (-> 'bad-box) (-> 'bad-elem) (-> 'bad-write) ;; -------------------------------------------------------------------------- (defclass food (elem) ((name :initform "food") (c :initarg :c :type integer :initform ?\$))) ;; -------------------------------------------------------------------------- (cl-defmethod bad-init ((f food) &optional dst) ; NOTE: OK (when (cl-typep dst 'borderless) (~ (w h) dst (~ (min-x min-y max-x max-y) f (let ((brd (if (box-p dst) 1 0))) (setf min-x brd) (setf min-y brd) (setf max-x (- w brd 1)) (setf max-y (- h brd 1))))))) (cl-defmethod bad-update ((f food) &optional dst) ; NOTE: OK (when (cl-typep dst 'borderless) (~ (x y max-x max-y c) f (unless (& max-x max-y) (bad-init f dst)) (~ (w) dst (bad-write-index dst (+ x (* w y)) c))))) ;; -------------------------------------------------------------------------- (<- 'bad-snake-food)