Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (defclass battleentity ()
- ((name :accessor nm
- :initarg :nm)
- (health :accessor hp
- :initarg :hp)
- (attack :accessor atk
- :initarg :atk)))
- (defmethod doattack ((self battleentity) (target battleentity))
- (write-line (format nil "~a attacks ~a"
- (nm self) (nm target)))
- (damaged target (atk self)))
- (defmethod damaged ((self battleentity) (damage integer))
- (write-line (format nil "~a takes ~a damage"
- (nm self) damage))
- (setf (hp self) (- (hp self) damage)))
- (defmethod status ((self battleentity))
- (write-line (format nil "~a HP: ~a~%"
- (nm self) (hp self))))
- (defun makebattleentity (name health attack)
- (setf temp (make-instance 'battleentity
- :nm name
- :hp health
- :atk attack))
- temp)
- (setf battlers (list (makebattleentity "Player" 100 25)
- (makebattleentity "Goblin" 60 5)
- (makebattleentity "Troll" 500 80)
- (makebattleentity "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