X-Git-Url: https://code.consxy.com/gitweb/gitweb.cgi?p=clnl;a=blobdiff_plain;f=src%2Fmain%2Fnvm.lisp;h=c203ebea5f9e0c933df21476a43a6b4758ab8356;hp=091bfe44c7244bb1dfe79eff23da52655e9de380;hb=d4ab3334d216c9963f9459d9e8870c6abafce8f1;hpb=4a9ed570e6d2c79ac7cac0a6a84d414ee658cd3e diff --git a/src/main/nvm.lisp b/src/main/nvm.lisp index 091bfe4..c203ebe 100644 --- a/src/main/nvm.lisp +++ b/src/main/nvm.lisp @@ -10,7 +10,7 @@ (defvar *self* nil) (defun show (n) - (format t "Showing: ~A~%" n)) + (format t "Showing: ~A~%" (dump-object n))) (defun create-turtle () (push @@ -44,6 +44,9 @@ collect next) (last copy)))) +(defun random-float (n) + (cl-nl.random:next-double n)) + (defun fd (n) (when (not (turtle-p *self*)) (error "Gotta call fd in turtle scope, dude")) (setf (turtle-xcor *self*) (+ (turtle-xcor *self*) (sin (* pi (/ (turtle-heading *self*) 180))))) @@ -56,11 +59,13 @@ (setf *turtles* nil) (setf *current-id* 0)) -(defun format-num (n) +(defgeneric dump-object (o)) +(defmethod dump-object ((n double-float)) (multiple-value-bind (int rem) (floor n) (if (eql 0d0 rem) (format nil "~A" int) (format nil "~F" n)))) +(defmethod dump-object ((o string)) o) (defun export-world () (format nil "~{~A~%~}" @@ -80,10 +85,10 @@ (format nil "\"~A\",\"~A\",\"~A\",\"~A\",\"~A\",\"\"\"default\"\"\",\"\"\"\"\"\",\"9.9\",\"{all-turtles}\",\"false\",\"1\",\"1\",\"\"\"up\"\"\"" (turtle-who turtle) - (format-num (turtle-color turtle)) - (format-num (turtle-heading turtle)) - (format-num (turtle-xcor turtle)) - (format-num (turtle-ycor turtle)) + (dump-object (turtle-color turtle)) + (dump-object (turtle-heading turtle)) + (dump-object (turtle-xcor turtle)) + (dump-object (turtle-ycor turtle)) )) (reverse *turtles*))) (format nil "~S" "PATCHES")