Lisp Game Programming <Step12-2>
step12の2番目はenemyの爆発処理
メインループを16回回ったら、enemyのstateを2(explosion)から0(dead)にする
;; Step12 <Explode enemy>
;; -----------------------------------------------------------------------------------------------
(defvar *enemybom-sound-flag* nil)
(defgeneric Explode-enemy (foe))
(defmethod Explode-enemy (foe)
"enemy explosion while 16 times loop"
(dolist (enemy (enemy-list foe))
(when (= (state enemy) 2)
(when (eql *enemybom-sound-flag* nil)
(setf *enemybom-sound-flag* t)
(Play-sample *enemybom-sound*)) ; enemybom sound
(incf (explode-cnt enemy) 1)
(when (= (explode-cnt enemy) 16) ; enemy explode count 16
(setf (state enemy) 0
*enemybom-sound-flag* nil)))))