Author: gmilare
Date: Sat Mar 15 13:56:01 2008
New Revision: 17
Modified:
definitions/rules.lisp
documentation/feebs.tex
graphics/graphics.lisp
system.lisp
the-feebs-war.asd
Log:
Modified: definitions/rules.lisp
==============================================================================
--- definitions/rules.lisp (original)
+++ definitions/rules.lisp Sat Mar 15 13:56:01 2008
@@ -202,15 +202,14 @@
(total-time)))))
(prog1 nil ; in case that the move was eating something
(incf (feeb-score feeb) (get-feeb-parm 'points-for-slow-down)))
- (call-next-method))
- (call-next-method)))
+ (call-next-method))
+ (call-next-method)))
(defmethod make-move :around ((feeb feeb) (move (eql :move-forward)))
- (let ((thing (find-if #'fireball-p (get-forward-pos feeb))))
- (if thing
- (destroy-object feeb thing)
- (call-next-method))))
-
+ (aif (find-if #'fireball-p (get-forward-pos feeb))
+ (if (call-next-method) ; was the move successfull?
+ (destroy-object feeb it))
+ (call-next-method)))
;;; Eating
@@ -242,6 +241,8 @@
"Amount of energy lost after throwing a flame.")
(defmethod make-move :around ((feeb feeb) (move (eql :flame)))
- (when (>= (feeb-energy-reserve feeb) (get-feeb-parm 'flame-energy))
+ (when (and (feeb-ready-to-fire feeb)
+ (>= (feeb-energy-reserve feeb) (get-feeb-parm 'flame-energy)))
+ (setf (feeb-ready-to-fire feeb) nil)
(decf (feeb-energy-reserve feeb) (get-feeb-parm 'flame-energy))
(call-next-method)))
Modified: documentation/feebs.tex
==============================================================================
--- documentation/feebs.tex (original)
+++ documentation/feebs.tex Sat Mar 15 13:56:01 2008
@@ -169,7 +169,7 @@
in front of the feeb, and it will see it, so the feeb shouldn't move
forward. For a few turns, the feeb will not be able to
throw flames. Each turn, the flame moves forward destroing mushrooms and
-killing feebs it encounters, transforming them into carcass. If there
+killing feebs it encounters, transforming them into carcasses. If there
is a wall, the flame can reflect, and, if so, it will turn 180 degrees.
Once a feeb is killed (or starves), in it's place in the maze there will appear
Modified: graphics/graphics.lisp
==============================================================================
--- graphics/graphics.lisp (original)
+++ graphics/graphics.lisp Sat Mar 15 13:56:01 2008
@@ -39,8 +39,7 @@
((wallp elt)
(list " XX"))
((feeb-p (car elt))
- (list "F~1d~a"
- (position (feeb-name (car elt)) *feebs* :key #'feeb-name)
+ (list " F~a"
(print-direction (feeb-facing (car elt)))))
((fireball-p (car elt))
(list " *~a" (print-direction (fireball-direction (car elt)))))
Modified: system.lisp
==============================================================================
--- system.lisp (original)
+++ system.lisp Sat Mar 15 13:56:01 2008
@@ -133,8 +133,8 @@
(:method ((fireball fireball) x-pos y-pos)
(push fireball *fireballs-flying*)
- (setf (object-x-position object) x-pos
- (object-y-position object) y-pos))) ; don't place it yet, only after first move
+ (setf (object-x-position fireball) x-pos
+ (object-y-position fireball) y-pos))) ; don't place it yet, only after first move
;;; Reincarnating
@@ -147,7 +147,7 @@
(defgeneric destroy-object (object cause)
(:documentation "Called when CAUSE destroys OBJECT.
CAUSE could be :starve or a fireball (for feebs)
-or :dissipate (for fireballs)."
+or :dissipate (for fireballs).")
(:method (object cause)
(delete-object object (object-x-position object)
(object-y-position object)))
@@ -191,7 +191,7 @@
returned from MAKE-MOVE-CHOICE for the same object.")
(:method (object move)
- nil)
+ (warn "Unknown move ~a for object ~a." move object))
(:method (object (move (eql :turn-right)))
(setf (object-direction object)
@@ -209,7 +209,8 @@
(multiple-value-bind (stuff new-x new-y)
(get-forward-pos object)
(unless (wallp stuff)
- (change-object-pos object new-x new-y))))
+ (change-object-pos object new-x new-y)
+ t)))
(:method ((fireball fireball) (move (eql :dissipate)))
(destroy-object fireball :dissipate))
Modified: the-feebs-war.asd
==============================================================================
--- the-feebs-war.asd (original)
+++ the-feebs-war.asd Sat Mar 15 13:56:01 2008
@@ -10,7 +10,7 @@
:version "0.1"
:author "Gustavo Henrique Milaré <gugamilare(a)gmail.com>"
:licence "GPL"
-; :depends-on (lispbuilder-sdl lispbuilder-sdl-image lispbuilder-sdl-gfx)
+; :depends-on (lispbuilder-sdl)
:components
((:cl-source-file "package")
@@ -18,6 +18,8 @@
(:cl-source-file "system" :depends-on ("utils"))
(:cl-source-file "images" :depends-on ("system"))
(:cl-source-file "main" :depends-on ("images"))
+ ;; GPL
+ (:doc-file "licence")
(:module "definitions"
:depends-on ("main")
@@ -27,15 +29,12 @@
(:cl-source-file "extra")
(:cl-source-file "brains")))
- (:module "graphics"
- :depends-on ("main")
- :components
- ((:file "graphics"))))
-
- ;; GPL
- (:doc-file "licence")
+ (:module "graphics"
+ :depends-on ("main")
+ :components
+ ((:file "graphics")))
- ;; documentation
- (:module "documentation"
- :components
- (:doc-file "feebs.tex")))
+ ;; documentation
+ (:module "documentation"
+ :components
+ ((:doc-file "feebs.tex")))))