From gugamilare at gmail.com Wed Aug 4 00:55:01 2010 From: gugamilare at gmail.com (Gustavo) Date: Tue, 3 Aug 2010 21:55:01 -0300 Subject: [the-feebs-war-devel] document reviewed Message-ID: Hello, XIE Wensheng, I'm sorry for not approving your post, but it's been so much time that I've lost the admin password. As you can see, the project is a little dead :S I might work on it again at the end of this year or beginning of the next one, but no promises. > > The document file has been reviewed and some spelling errors are corrected. > Thank you for reviewing the .tex file, I'll take a look at it and commit later, and sorry for the spell mistakes. > > > One question: > > > > Why the parameter ?fireball-guaranteed-lifetime is not used in the program? > > How to use it? > It's a bug, I missed it, thanks for reporting. Now it is (hopefully) fixed and committed (fortunately I remember the svn password :) In case you wonder, these are the changes: in systems.lisp, create a slot named lifetime: (defclass object () ((direction :accessor object-direction :initarg :direction) (x-position :accessor object-x-position :initarg :x-position) (y-position :accessor object-y-position :initarg :y-position) (lifetime :accessor object-lifetime :initarg :lifetime :initform 0))) add a method for make-move: (defmethod make-move :after (object move) (incf (object-lifetime object))) and, in definitions/rules.lisp, make these changes: (def-feeb-parm 'fireball-guaranteed-lifetime 3 "Number of turns that a fireball is guaranteed not to dissipate, unless it encounters a wall.") (defmethod make-move-choice ((fireball fireball)) (cond ((wallp (get-forward-pos fireball)) (if (chance (get-feeb-parm 'fireball-reflection-probability)) :turn-around :dissipate)) ((and (>= (object-lifetime fireball) (get-feeb-parm 'fireball-guaranteed-lifetime)) (chance (get-feeb-parm 'fireball-dissipation-probability))) :dissipate) (t :move-forward))) Regards, Gustavo. -------------- next part -------------- An HTML attachment was scrubbed... URL: From WenSheng.Xie at harman.com Wed Aug 4 07:48:56 2010 From: WenSheng.Xie at harman.com (Xie, WenSheng) Date: Wed, 4 Aug 2010 02:48:56 -0500 Subject: [the-feebs-war-devel] document reviewed In-Reply-To: Message-ID: <01ABDC2862013643A3A04D0E114D9BBE02148E2588@HICGWSEX01.ad.harman.com> Hi, Gustavo: Great to hear that you are thinking of working on this project later on. It's fun to practice my lisp with this project. What's your plan to make it a network/web-based multi-user game? Further, I modify the graphics/graphics.lisp slightly to make clearer display: (in red below) (in-package :the-feebs-war) (defun print-direction (dir) (case dir (0 #\N) (1 #\E) (2 #\S) (3 #\W))) (defun print-map () (format t "~%") ;add this line (dotimes (y *maze-y-size*) (dotimes (x *maze-x-size*) (let ((elt (aref *maze* x y))) (apply 'format t (cond ((wallp elt) (list " XX")) ((feeb-p (car elt)) (list " F~a" (print-direction (feeb-facing (car elt))))) ((fireball-p (car elt)) (list " *~a" (print-direction (fireball-direction (car elt))))) ((eq (car elt) :mushroom) (list " mm")) ((eq (car elt) :carcass) (list " cc")) (t (list " ")))))) (format t "~%")) (format t "~%")) ;add this line (defun simple-play (&optional layout) (if layout (change-layout layout)) (make-auto-feebs (- 10 (length *feebs-to-be*))) (initialize-feebs) (start-round) (loop until (finish-game-p) do (play-one-turn) (print-map) (sleep 0.7)) (format t "Game Over!!~%~%Scores:~%~%") (let ((scores nil)) (dolist (feeb *feebs*) (push (list (feeb-name feeb) (feeb-score feeb)) scores)) ;collect living feebs' scores (dolist (feeb *dead-feebs*) (push (list (feeb-name feeb) (feeb-score feeb)) scores)) ;collect dead feebs' scores (sort scores #'> :key #'second) ;sort the scores in decreasing order (dolist (score scores) (format t "~30@<~a:~> ~@d~%" (first score) (second score))))) ;print out scores Please check if there are helpful when you have time. Best regards, XIE Wensheng ________________________________ From: Gustavo [mailto:gugamilare at gmail.com] Sent: Wednesday, August 04, 2010 8:55 AM To: the-feebs-war-devel at common-lisp.net Subject: Re: [the-feebs-war-devel] document reviewed Hello, XIE Wensheng, I'm sorry for not approving your post, but it's been so much time that I've lost the admin password. As you can see, the project is a little dead :S I might work on it again at the end of this year or beginning of the next one, but no promises. The document file has been reviewed and some spelling errors are corrected. Thank you for reviewing the .tex file, I'll take a look at it and commit later, and sorry for the spell mistakes. One question: Why the parameter 'fireball-guaranteed-lifetime is not used in the program? How to use it? It's a bug, I missed it, thanks for reporting. Now it is (hopefully) fixed and committed (fortunately I remember the svn password :) In case you wonder, these are the changes: in systems.lisp, create a slot named lifetime: (defclass object () ((direction :accessor object-direction :initarg :direction) (x-position :accessor object-x-position :initarg :x-position) (y-position :accessor object-y-position :initarg :y-position) (lifetime :accessor object-lifetime :initarg :lifetime :initform 0))) add a method for make-move: (defmethod make-move :after (object move) (incf (object-lifetime object))) and, in definitions/rules.lisp, make these changes: (def-feeb-parm 'fireball-guaranteed-lifetime 3 "Number of turns that a fireball is guaranteed not to dissipate, unless it encounters a wall.") (defmethod make-move-choice ((fireball fireball)) (cond ((wallp (get-forward-pos fireball)) (if (chance (get-feeb-parm 'fireball-reflection-probability)) :turn-around :dissipate)) ((and (>= (object-lifetime fireball) (get-feeb-parm 'fireball-guaranteed-lifetime)) (chance (get-feeb-parm 'fireball-dissipation-probability))) :dissipate) (t :move-forward))) Regards, Gustavo. -------------- next part -------------- An HTML attachment was scrubbed... URL: From gugamilare at gmail.com Wed Aug 4 14:00:58 2010 From: gugamilare at gmail.com (Gustavo) Date: Wed, 4 Aug 2010 11:00:58 -0300 Subject: [the-feebs-war-devel] document reviewed In-Reply-To: <01ABDC2862013643A3A04D0E114D9BBE02148E2588@HICGWSEX01.ad.harman.com> References: <01ABDC2862013643A3A04D0E114D9BBE02148E2588@HICGWSEX01.ad.harman.com> Message-ID: 2010/8/4 Xie, WenSheng > Hi, Gustavo: > > > > Great to hear that you are thinking of working on this project later on. > It became a matter of honor :) > > > It?s fun to practice my lisp with this project. > > > > What?s your plan to make it a network/web-based multi-user game? > Well, I actually didn't have this plan, but that is a nice idea. Back in 2008 my thoughts were to use the mailing list for communication and someone would run the program. If the graphics part is created "modularly enough", it should be possible to change the backend - one backend would be the machine itself running the game and the other would be a wrapper around a web socket. Security is complicated, thought. The file defining the feeb's brain would not be allowed to have any internal symbol from the package :the-feebs-war nor to create or use any packages, restricted to the exported symbols from :feebs and :cl, and perhaps :alexandria. Timeouts would be used to prevent users from creating infinite loops, but any user would still be able to exhaust the memory (or the stack), now I don't know how to prevent this. I'll only set up a server if there are enough users interested in it, though, you are the first in 2 years. > > > Further, I modify the graphics/graphics.lisp slightly to make clearer > display: (in red below) > > > > (in-package :the-feebs-war) > > > > (defun print-direction (dir) > > (case dir > > (0 #\N) > > (1 #\E) > > (2 #\S) > > (3 #\W))) > > > > (defun print-map () > > * (format t "~%") ;add this line* > > (dotimes (y *maze-y-size*) > > (dotimes (x *maze-x-size*) > > (let ((elt (aref *maze* x y))) > > (apply 'format t > > (cond > > ((wallp elt) > > (list " XX")) > > ((feeb-p (car elt)) > > (list " F~a" > > (print-direction (feeb-facing (car elt))))) > > ((fireball-p (car elt)) > > (list " *~a" (print-direction (fireball-direction (car > elt))))) > > ((eq (car elt) :mushroom) > > (list " mm")) > > ((eq (car elt) :carcass) > > (list " cc")) > > (t (list " ")))))) > > (format t "~%")) > > * (format t "~%")) ;add this line* > > > > (defun simple-play (&optional layout) > > (if layout > > (change-layout layout)) > > (make-auto-feebs (- 10 (length *feebs-to-be*))) > > (initialize-feebs) > > (start-round) > > * (loop until (finish-game-p)* > > * do* > > * (play-one-turn)* > > * (print-map)* > > * (sleep 0.7))* > > * (format t "Game Over!!~%~%Scores:~%~%")* > > * (let ((scores nil))* > > * (dolist (feeb *feebs*)* > > * (push (list (feeb-name feeb) (feeb-score feeb)) scores)) ;collect > living feebs' scores* > > * (dolist (feeb *dead-feebs*)* > > * (push (list (feeb-name feeb) (feeb-score feeb)) scores)) ;collect > dead feebs' scores* > > * (sort scores #'> :key #'second) ;sort > the scores in decreasing order* > > * (dolist (score scores)* > > * (format t "~30@<~a:~> ~@d~%" (first score) (second score))))) > ;print out scores* > > > > Please check if there are helpful when you have time. > I'll definitely change the repository to git. It is easier to create and apply patches, and I'm more used to it than to svn. > > > Best regards, > > XIE Wensheng > > > ------------------------------ > > *From:* Gustavo [mailto:gugamilare at gmail.com] > *Sent:* Wednesday, August 04, 2010 8:55 AM > *To:* the-feebs-war-devel at common-lisp.net > *Subject:* Re: [the-feebs-war-devel] document reviewed > > > > Hello, XIE Wensheng, > > I'm sorry for not approving your post, but it's been so much time that I've > lost the admin password. > > As you can see, the project is a little dead :S > > I might work on it again at the end of this year or beginning of the next > one, but no promises. > > > > The document file has been reviewed and some spelling errors are corrected. > > > Thank you for reviewing the .tex file, I'll take a look at it and commit > later, and sorry for the spell mistakes. > > > > One question: > > > > Why the parameter ?fireball-guaranteed-lifetime is not used in the program? > > How to use it? > > > It's a bug, I missed it, thanks for reporting. Now it is (hopefully) fixed > and committed (fortunately I remember the svn password :) > > In case you wonder, these are the changes: in systems.lisp, create a slot > named lifetime: > > (defclass object () > ((direction :accessor object-direction :initarg :direction) > (x-position :accessor object-x-position :initarg :x-position) > (y-position :accessor object-y-position :initarg :y-position) > (lifetime :accessor object-lifetime :initarg :lifetime :initform > 0))) > > > add a method for make-move: > > (defmethod make-move :after (object move) > (incf (object-lifetime object))) > > > and, in definitions/rules.lisp, make these changes: > > (def-feeb-parm 'fireball-guaranteed-lifetime 3 > "Number of turns that a fireball is guaranteed not to dissipate, > unless it encounters a wall.") > > (defmethod make-move-choice ((fireball fireball)) > (cond > ((wallp (get-forward-pos fireball)) > (if (chance (get-feeb-parm 'fireball-reflection-probability)) > :turn-around > :dissipate)) > ((and (>= (object-lifetime fireball) > (get-feeb-parm 'fireball-guaranteed-lifetime)) > (chance (get-feeb-parm 'fireball-dissipation-probability))) > :dissipate) > (t :move-forward))) > > > Regards, > Gustavo. > > _______________________________________________ > the-feebs-war-devel mailing list > the-feebs-war-devel at common-lisp.net > http://common-lisp.net/cgi-bin/mailman/listinfo/the-feebs-war-devel > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From gugamilare at gmail.com Sat Aug 7 14:07:14 2010 From: gugamilare at gmail.com (Gustavo) Date: Sat, 7 Aug 2010 11:07:14 -0300 Subject: [the-feebs-war-devel] document reviewed In-Reply-To: References: <01ABDC2862013643A3A04D0E114D9BBE02148E2588@HICGWSEX01.ad.harman.com> Message-ID: Xie, WenSheng I committed your changes. Thank you for your contribution :) Gustavo. 2010/8/4 Gustavo > > > 2010/8/4 Xie, WenSheng > > Hi, Gustavo: >> >> >> >> Great to hear that you are thinking of working on this project later on. >> > > It became a matter of honor :) > >> >> >> It?s fun to practice my lisp with this project. >> >> >> >> What?s your plan to make it a network/web-based multi-user game? >> > > Well, I actually didn't have this plan, but that is a nice idea. Back in > 2008 my thoughts were to use the mailing list for communication and someone > would run the program. > > If the graphics part is created "modularly enough", it should be possible > to change the backend - one backend would be the machine itself running the > game and the other would be a wrapper around a web socket. > > Security is complicated, thought. The file defining the feeb's brain would > not be allowed to have any internal symbol from the package :the-feebs-war > nor to create or use any packages, restricted to the exported symbols from > :feebs and :cl, and perhaps :alexandria. Timeouts would be used to prevent > users from creating infinite loops, but any user would still be able to > exhaust the memory (or the stack), now I don't know how to prevent this. > > I'll only set up a server if there are enough users interested in it, > though, you are the first in 2 years. > >> >> >> Further, I modify the graphics/graphics.lisp slightly to make clearer >> display: (in red below) >> >> >> >> (in-package :the-feebs-war) >> >> >> >> (defun print-direction (dir) >> >> (case dir >> >> (0 #\N) >> >> (1 #\E) >> >> (2 #\S) >> >> (3 #\W))) >> >> >> >> (defun print-map () >> >> * (format t "~%") ;add this line* >> >> (dotimes (y *maze-y-size*) >> >> (dotimes (x *maze-x-size*) >> >> (let ((elt (aref *maze* x y))) >> >> (apply 'format t >> >> (cond >> >> ((wallp elt) >> >> (list " XX")) >> >> ((feeb-p (car elt)) >> >> (list " F~a" >> >> (print-direction (feeb-facing (car elt))))) >> >> ((fireball-p (car elt)) >> >> (list " *~a" (print-direction (fireball-direction (car >> elt))))) >> >> ((eq (car elt) :mushroom) >> >> (list " mm")) >> >> ((eq (car elt) :carcass) >> >> (list " cc")) >> >> (t (list " ")))))) >> >> (format t "~%")) >> >> * (format t "~%")) ;add this line* >> >> >> >> (defun simple-play (&optional layout) >> >> (if layout >> >> (change-layout layout)) >> >> (make-auto-feebs (- 10 (length *feebs-to-be*))) >> >> (initialize-feebs) >> >> (start-round) >> >> * (loop until (finish-game-p)* >> >> * do* >> >> * (play-one-turn)* >> >> * (print-map)* >> >> * (sleep 0.7))* >> >> * (format t "Game Over!!~%~%Scores:~%~%")* >> >> * (let ((scores nil))* >> >> * (dolist (feeb *feebs*)* >> >> * (push (list (feeb-name feeb) (feeb-score feeb)) scores)) ;collect >> living feebs' scores* >> >> * (dolist (feeb *dead-feebs*)* >> >> * (push (list (feeb-name feeb) (feeb-score feeb)) scores)) ;collect >> dead feebs' scores* >> >> * (sort scores #'> :key #'second) ;sort >> the scores in decreasing order* >> >> * (dolist (score scores)* >> >> * (format t "~30@<~a:~> ~@d~%" (first score) (second score))))) >> ;print out scores* >> >> >> >> Please check if there are helpful when you have time. >> > > I'll definitely change the repository to git. It is easier to create and > apply patches, and I'm more used to it than to svn. > >> >> >> Best regards, >> >> XIE Wensheng >> >> >> ------------------------------ >> >> *From:* Gustavo [mailto:gugamilare at gmail.com] >> *Sent:* Wednesday, August 04, 2010 8:55 AM >> *To:* the-feebs-war-devel at common-lisp.net >> *Subject:* Re: [the-feebs-war-devel] document reviewed >> >> >> >> Hello, XIE Wensheng, >> >> I'm sorry for not approving your post, but it's been so much time that >> I've lost the admin password. >> >> As you can see, the project is a little dead :S >> >> I might work on it again at the end of this year or beginning of the next >> one, but no promises. >> >> >> >> The document file has been reviewed and some spelling errors are >> corrected. >> >> >> Thank you for reviewing the .tex file, I'll take a look at it and commit >> later, and sorry for the spell mistakes. >> >> >> >> One question: >> >> >> >> Why the parameter ?fireball-guaranteed-lifetime is not used in the >> program? >> >> How to use it? >> >> >> It's a bug, I missed it, thanks for reporting. Now it is (hopefully) fixed >> and committed (fortunately I remember the svn password :) >> >> In case you wonder, these are the changes: in systems.lisp, create a slot >> named lifetime: >> >> (defclass object () >> ((direction :accessor object-direction :initarg :direction) >> (x-position :accessor object-x-position :initarg :x-position) >> (y-position :accessor object-y-position :initarg :y-position) >> (lifetime :accessor object-lifetime :initarg :lifetime :initform >> 0))) >> >> >> add a method for make-move: >> >> (defmethod make-move :after (object move) >> (incf (object-lifetime object))) >> >> >> and, in definitions/rules.lisp, make these changes: >> >> (def-feeb-parm 'fireball-guaranteed-lifetime 3 >> "Number of turns that a fireball is guaranteed not to dissipate, >> unless it encounters a wall.") >> >> (defmethod make-move-choice ((fireball fireball)) >> (cond >> ((wallp (get-forward-pos fireball)) >> (if (chance (get-feeb-parm 'fireball-reflection-probability)) >> :turn-around >> :dissipate)) >> ((and (>= (object-lifetime fireball) >> (get-feeb-parm 'fireball-guaranteed-lifetime)) >> (chance (get-feeb-parm 'fireball-dissipation-probability))) >> :dissipate) >> (t :move-forward))) >> >> >> Regards, >> Gustavo. >> >> _______________________________________________ >> the-feebs-war-devel mailing list >> >> the-feebs-war-devel at common-lisp.net >> http://common-lisp.net/cgi-bin/mailman/listinfo/the-feebs-war-devel >> >> > -------------- next part -------------- An HTML attachment was scrubbed... URL: