Lisp Game Programming <Step17 Information>
クラスをマクロ化していく中で、工夫が必要な点がでた
;; Step13 <Stage Class> <----------- step 14 correct
;; -----------------------------------------------------------------------------------------------
;(defclass stage ()
; ((%stage-flag :initarg :stage-flage :initform t :accessor stage-flag)
; (%stage-number :initarg :stage-number :initform 0 :accessor stage-number)
; (%title-loop :initarg :title-loop :initform t :accessor title-loop)
; (%start :initarg :start :initform t :accessor start))
; (:documentation "The Stage Class"))
(define-class stage ()
(stage-flag stage-number title-loop start) t)
:initform 0で設計したものを、マクロ化で:initform tにしたため、初期値tを0に設定しなおすことが必要になった
この場合、nilではなく0を返す以下のコードが使える
(or nil 0)
http://www46.atpages.jp/tatsuro3q/tips/common-lisp.html
なので、インスタンスを生成するコードでは以下のようなコードを記述する
(stage (make-instance 'stage :stage-number (or nil 0)))
また、しばらくネタ探し期間に突入!