Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (defclass battle-entity ()
- ((name :accessor nm
- :initarg :nm)
- (health :accessor hp
- :initarg :hp)
- (attack :accessor atk
- :initarg :atk)))
- (defmethod doattack ((self battle-entity) (target battle-entity))
- (write-line (format nil "~a attacks ~a"
- (nm self) (nm target)))
- (damaged target (atk self))
- )
- (defmethod damaged ((self battle-entity) (damage integer))
- (format t "~a takes ~a damage"
- (nm self) damage))
- (setf (hp self) (- (hp self) damage))
- (defmethod status ((self battle-entity))
- (format t "~a HP: ~a~%"
- (nm self) (hp self)))
- (defun make-battle-entity (name health attack)
- (setf temp (make-instance 'battle-entity
- :nm name
- :hp health
- :atk attack))
- temp)
- (setf battlers (list (make-battle-entity "Player" 100 25)
- (make-battle-entity "Goblin" 60 5)
- (make-battle-entity "Troll" 500 80)
- (make-battle-entity "Hero" 100 560)))
- (setf a (nth 1 battlers) b (nth 2 battlers))
- (loop
- while (<= 0 (min (hp a) (hp b))) do
- (doattack a b)
- (status b)
- (doattack b a)
- (status a))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement