Author: gmilare
Date: Sat Feb 16 14:59:50 2008
New Revision: 14
Added:
definitions/
documentation/
graphics/
the-feebs-war.asd (contents, props changed)
Removed:
brains.lisp
extra.lisp
feebs.asd
feebs.tex
graphics.lisp
mazes.lisp
rules.lisp
Modified:
images.lisp
main.lisp
package.lisp
system.lisp
Log:
Modified: images.lisp
==============================================================================
--- images.lisp (original)
+++ images.lisp Sat Feb 16 14:59:50 2008
@@ -1,6 +1,6 @@
;;; -*- Common Lisp -*-
-#| Copyright (c) 2007 Gustavo Henrique Milar�
+#| Copyright (c) 2007,2008 Gustavo Henrique Milar�
This file is part of The Feebs War.
@@ -19,7 +19,7 @@
|#
-(in-package :feebs)
+(in-package :the-feebs-war)
;;; This file is an extension of system.lisp which handles vision
Modified: main.lisp
==============================================================================
--- main.lisp (original)
+++ main.lisp Sat Feb 16 14:59:50 2008
@@ -1,6 +1,6 @@
;;; -*- Common Lisp -*-
-#| Copyright (c) 2007 Gustavo Henrique Milar�
+#| Copyright (c) 2007,2008 Gustavo Henrique Milaré
This file is part of The Feebs War.
@@ -19,7 +19,7 @@
|#
-(in-package :feebs)
+(in-package :the-feebs-war)
Modified: package.lisp
==============================================================================
--- package.lisp (original)
+++ package.lisp Sat Feb 16 14:59:50 2008
@@ -1,6 +1,6 @@
;;; -*- Common Lisp -*-
-#| Copyright (c) 2007 Gustavo Henrique Milar��
+#| Copyright (c) 2007,2008 Gustavo Henrique Milaré
This file is part of The Feebs War.
@@ -30,95 +30,96 @@
;; Graphics ported to X11 by Fred Gilham 8-FEB-1998.
-(defpackage :feebs
+(defpackage :the-feebs-war
+ (:nicknames :feebs)
(:use :common-lisp)
;; Export everything we want the players to get their hands on.
(:export ;; Slots accessors
- name facing
- x-position y-position peeking line-of-sight
- energy-reserve
- score kills
- ready-to-fire
- aborted last-move
-
- my-square left-square right-square rear-square
-
- ;; Images
- feeb-image-p feeb-image-name
- feeb-image-facing feeb-image-peeking
- fireball-image-p fireball-image-direction
-
- ;; Parameters
- get-feeb-parm change-feeb-parm
- list-parameter-settings
-
- game-length
-
- ;; Pontuation
- points-for-killing points-for-dying
- points-for-slow-down
-
- ;; Energy
- flame-energy mushroom-energy carcass-energy
- maximum-energy
- starting-energy
- carcass-rot-probability
- carcass-guaranteed-lifetime
-
- ;; Game quantities
- maze-x-size
- maze-y-size
- number-of-mushrooms
-
- ;; Probabilities
- fireball-guaranteed-lifetime
- fireball-dissipation-probability
- fireball-reflection-probability
- flame-no-recovery-time
- flame-recovery-probability
-
- ;; Difficulty variables
- slow-feeb-noop-switch
- slow-feeb-noop-factor
- reference-time
- sense-location-p
- may-get-maze-map-p
-
- ;; Settings
- define-feeb delete-feeb
- feebs
- change-layout
- get-maze-map
-
- ;; Constants
- north south east west
-
- ;; Some layouts (can be find in mazes.lisp)
- *maze-0* *maze-1* *maze-2*
- *maze-3* *maze-4* *maze-5*
- make-template generate-maze
-
- ;; Graphics
- create-graphics
-
- ;; Extras
-
- ;; Directional arithmetic
- left-of right-of behind-of
- relative-facing
-
- forward-dx forward-dy
- left-dx left-dy
- right-dx right-dy
- behind-dx behind-dy
+ name facing
+ x-position y-position peeking line-of-sight
+ energy-reserve
+ score kills
+ ready-to-fire
+ aborted last-move
+
+ my-square left-square right-square rear-square
+
+ ;; Images
+ feeb-image-p feeb-image-name
+ feeb-image-facing feeb-image-peeking
+ fireball-image-p fireball-image-direction
+
+ ;; Parameters
+ get-feeb-parm change-feeb-parm
+ list-parameter-settings
+
+ game-length
+
+ ;; Pontuation
+ points-for-killing points-for-dying
+ points-for-slow-down
+
+ ;; Energy
+ flame-energy mushroom-energy carcass-energy
+ maximum-energy
+ starting-energy
+ carcass-rot-probability
+ carcass-guaranteed-lifetime
+
+ ;; Game quantities
+ maze-x-size
+ maze-y-size
+ number-of-mushrooms
+
+ ;; Probabilities
+ fireball-guaranteed-lifetime
+ fireball-dissipation-probability
+ fireball-reflection-probability
+ flame-no-recovery-time
+ flame-recovery-probability
+
+ ;; Difficulty variables
+ slow-feeb-noop-switch
+ slow-feeb-noop-factor
+ reference-time
+ sense-location-p
+ may-get-maze-map-p
+
+ ;; Settings
+ define-feeb delete-feeb
+ feebs
+ change-layout
+ get-maze-map
+
+ ;; Constants
+ north south east west
+
+ ;; Mazes
+ *maze-0* *maze-1* *maze-2*
+ *maze-3* *maze-4* *maze-5*
+ make-template generate-maze
+
+ ;; Graphics
+ create-graphics
+
+ ;; Extras
+
+ ;; Directional arithmetic
+ left-of right-of behind-of
+ relative-facing
+
+ forward-dx forward-dy
+ left-dx left-dy
+ right-dx right-dy
+ behind-dx behind-dy
+
+ ;; Others
+ wallp chance
+
+ ;; Graphics for alpha release
+ simple-play))
- ;; Others
- wallp chance
-
- ;; Graphics for alpha release
- simple-play))
-
-(in-package :feebs)
+(in-package :the-feebs-war)
;;; Directions
@@ -207,13 +208,6 @@
;;; Current feeb playing
+
(defvar *playing-feeb* nil)
(defvar *feebs-to-be* ())
-
-(defmacro aif (test then &optional else)
- `(let ((it ,test))
- (if it ,then ,else)))
-
-(defmacro awhen (test &rest body)
- `(let ((it ,test))
- (when it ,@body)))
Modified: system.lisp
==============================================================================
--- system.lisp (original)
+++ system.lisp Sat Feb 16 14:59:50 2008
@@ -1,6 +1,6 @@
;;; -*- Common Lisp -*-
-#| Copyright (c) 2007 Gustavo Henrique Milar�
+#| Copyright (c) 2007,2008 Gustavo Henrique Milaré
This file is part of The Feebs War.
@@ -19,7 +19,7 @@
|#
-(in-package :feebs)
+(in-package :the-feebs-war)
;;; We start defining the main system rules by defining the classes
@@ -39,13 +39,13 @@
(x-position :reader x-position :accessor feeb-x-position)
(y-position :reader y-position :accessor feeb-y-position)
(line-of-sight :accessor feeb-line-of-sight :reader line-of-sight
- :initform 0)
+ :initform 0)
(energy-reserve :accessor feeb-energy-reserve :reader energy-reserve)
(ready-to-fire :accessor feeb-ready-to-fire :reader ready-to-fire
- :initform t)
+ :initform t)
(aborted :accessor feeb-aborted :reader aborted)
(last-move :accessor feeb-last-move :reader last-move
- :initform :dead)
+ :initform :dead)
;; These are available for the system
(brain :accessor feeb-brain :initarg :brain)
@@ -57,11 +57,11 @@
(turns-since-flamed :accessor feeb-turns-since-flamed :initform 0)
(proximity :accessor feeb-proximity :initform (make-proximity))
(vision :accessor feeb-vision
- :initform (make-array (list (max *maze-y-size* *maze-x-size*))))
+ :initform (make-array (list (max *maze-y-size* *maze-x-size*))))
(vision-left :accessor feeb-vision-left
- :initform (make-array (list (max *maze-y-size* *maze-x-size*))))
+ :initform (make-array (list (max *maze-y-size* *maze-x-size*))))
(vision-right :accessor feeb-vision-right
- :initform (make-array (list (max *maze-y-size* *maze-x-size*))))))
+ :initform (make-array (list (max *maze-y-size* *maze-x-size*))))))
(defclass fireball (object)
((owner :accessor fireball-owner :initarg :owner)
@@ -89,23 +89,23 @@
(defun delete-object (thing x y)
(setf (aref *maze* x y)
- (delete thing (aref *maze* x y))))
+ (delete thing (aref *maze* x y))))
(defun place-object (thing x j)
(push thing (aref *maze* x j)))
(defun change-object-pos (obj x y)
(delete-object obj (object-x-position obj)
- (object-y-position obj))
+ (object-y-position obj))
(place-object obj x y)
(setf (object-x-position obj) x
- (object-y-position obj) y))
+ (object-y-position obj) y))
(defun get-forward-pos (object)
(let ((new-x (+ (forward-dx (object-direction object))
- (object-x-position object)))
- (new-y (+ (forward-dy (object-direction object))
- (object-y-position object))))
+ (object-x-position object)))
+ (new-y (+ (forward-dy (object-direction object))
+ (object-y-position object))))
(values (aref *maze* new-x new-y) new-x new-y)))
@@ -124,7 +124,7 @@
(:method (object x-pos y-pos)
(place-object object x-pos y-pos)
(setf (object-x-position object) x-pos
- (object-y-position object) y-pos))
+ (object-y-position object) y-pos))
(:method ((feeb feeb) x-pos y-pos)
(setf (feeb-last-move feeb) :dead)
@@ -134,7 +134,7 @@
(: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
+ (object-y-position object) y-pos))) ; don't place it yet, only after first move
;;; Reincarnating
@@ -150,18 +150,18 @@
or :dissipate (for fireballs)."
(:method (object cause)
(delete-object object (object-x-position object)
- (object-y-position object)))
+ (object-y-position object)))
(:method ((fireball fireball) cause)
(setf *fireballs-flying*
- (delete fireball *fireballs-flying*))
+ (delete fireball *fireballs-flying*))
(call-next-method))
(:method ((feeb feeb) cause)
(setf *dead-feebs* (nconc *dead-feebs* (list feeb))
- *feebs* (delete feeb *feebs*))
+ *feebs* (delete feeb *feebs*))
(let* ((x (feeb-x-position feeb))
- (y (feeb-y-position feeb)))
+ (y (feeb-y-position feeb)))
(push (list 0 x y) *carcasses*)
(place-object :carcass x y))
(call-next-method)))
@@ -176,11 +176,11 @@
(:documentation "Lets object make its move choice.")
(:method ((feeb feeb))
(funcall (feeb-brain feeb)
- feeb
- (feeb-proximity feeb)
- (feeb-vision feeb)
- (feeb-vision-left feeb)
- (feeb-vision-right feeb))))
+ feeb
+ (feeb-proximity feeb)
+ (feeb-vision feeb)
+ (feeb-vision-left feeb)
+ (feeb-vision-right feeb))))
@@ -195,21 +195,21 @@
(:method (object (move (eql :turn-right)))
(setf (object-direction object)
- (right-of (object-direction object))))
+ (right-of (object-direction object))))
(:method (object (move (eql :turn-left)))
(setf (object-direction object)
- (left-of (object-direction object))))
+ (left-of (object-direction object))))
(:method (object (move (eql :turn-around)))
(setf (object-direction object)
- (behind (object-direction object))))
+ (behind (object-direction object))))
(:method (object (move (eql :move-forward)))
(multiple-value-bind (stuff new-x new-y)
- (get-forward-pos object)
+ (get-forward-pos object)
(unless (wallp stuff)
- (change-object-pos object new-x new-y))))
+ (change-object-pos object new-x new-y))))
(:method ((fireball fireball) (move (eql :dissipate)))
(destroy-object fireball :dissipate))
@@ -218,19 +218,19 @@
(setf (feeb-turns-since-flamed feeb) 0)
(create-object
(make-instance 'fireball :direction (feeb-facing feeb)
- :owner feeb)
+ :owner feeb)
(feeb-x-position feeb) (feeb-y-position feeb)))
(:method ((feeb feeb) (move (eql :eat-mushroom)))
(let ((x (feeb-x-position feeb))
- (y (feeb-y-position feeb)))
+ (y (feeb-y-position feeb)))
(when (find :mushroom (aref *maze* x y))
- (delete-object :mushroom x y)
- t)))
+ (delete-object :mushroom x y)
+ t)))
(:method ((feeb feeb) (move (eql :eat-carcass)))
(when (find :carcass (aref *maze* (feeb-x-position feeb)
- (feeb-y-position feeb)))
+ (feeb-y-position feeb)))
t))
(:method ((feeb feeb) (move (eql :peek-left)))
@@ -242,3 +242,4 @@
(setf (feeb-peeking feeb) move)))
) ; end of make-move generic function
+
Added: the-feebs-war.asd
==============================================================================
--- (empty file)
+++ the-feebs-war.asd Sat Feb 16 14:59:50 2008
@@ -0,0 +1,39 @@
+;;; -*- Common Lisp -*-
+
+(defpackage :feebs-system
+ (:use :cl :asdf))
+
+(in-package :feebs-system)
+
+(defsystem the-feebs-war
+ :description "The Feebs War is a continuation of Planet of the Feebs."
+ :version "0.1"
+ :author "Gustavo Henrique Milaré <gugamilare(a)gmail.com>"
+ :licence "GPL"
+; :depends-on (lispbuilder-sdl lispbuilder-sdl-image lispbuilder-sdl-gfx)
+
+ :components
+ (:cl-source-file "package")
+ (:cl-source-file "system" :depends-on ("package"))
+ (:cl-source-file "images" :depends-on ("system"))
+ (:cl-source-file "main" :depends-on ("images" "system"))
+
+ (:module "definitions"
+ :components
+ (:cl-source-file "utils")
+ (:cl-source-file "rules" :depends-on ("main"))
+ (:cl-source-file "mazes" :depends-on ("package" "utils"))
+ (:cl-source-file "extra" :depends-on ("package"))
+ (:cl-source-file "brains" :depends-on ("package")))
+
+ (:module "graphics"
+ :components
+ (:file "graphics" :depends-on ("main")))
+
+ ;; GPL
+ (:doc-file "licence")
+
+ ;; documentation
+ (:module "documentation"
+ :components
+ (:doc-file "feebs.tex")))