(defvar *self* nil)
(defvar *dimensions* nil)
(defvar *topology* :torus)
+(defvar *ticks* nil)
(defstruct turtle who color heading xcor ycor)
(defstruct patch color xcor ycor)
See http://ccl.northwestern.edu/netlogo/docs/dictionary.html#create-turtles"
(loop :for i :from 1 :to n :do (create-turtle)))
+(defun reset-ticks ()
+ "RESET-TICKS => RESULT
+
+ARGUMENTS AND VALUES:
+
+ RESULT: undefined
+
+DESCRIPTION:
+
+ Resets the tick counter to zero, sets up all plots, then updates all plots.
+
+ See http://ccl.northwestern.edu/netlogo/docs/dictionary.html#reset-ticks"
+ (setf *ticks* 0d0))
+
+(defun tick ()
+ "RESET-TICKS => RESULT
+
+ARGUMENTS AND VALUES:
+
+ RESULT: undefined
+
+DESCRIPTION:
+
+ Advances the tick counter by one and updates all plots.
+
+ If the tick counter has not been started yet with reset-ticks, an error results.
+
+ See http://ccl.northwestern.edu/netlogo/docs/dictionary.html#tick"
+
+ (when (not *ticks*) (error "reset-ticks must be called"))
+ (incf *ticks*))
+
+(defun ticks ()
+ "TICKS => CURRENT-TICKS
+
+ARGUMENTS AND VALUES:
+
+ CURRENT-TICKS: A positiv double, representing the current number of ticks
+
+DESCRIPTION:
+
+ Reports the current value of the tick counter. The result is always a number and never negative.
+
+ If the tick counter has not been started yet with reset-ticks, an error results.
+
+ See http://ccl.northwestern.edu/netlogo/docs/dictionary.html#ticks"
+ (when (not *ticks*) (error "reset-ticks must be called"))
+ *ticks*)
+
(defun create-world (&key dims)
"CREATE-WORLD &key DIMS => RESULT
(defprim-alias :if-else :ifelse)
(defsimpleprim :lt :command clnl-nvm:turn-left)
(defkeywordprim :nobody)
+(defsimpleprim :reset-ticks :command clnl-nvm:reset-ticks)
(defsimpleprim :random-float :reporter clnl-nvm:random-float)
(defsimpleprim :rt :command clnl-nvm:turn-right)
(defsimpleprim :show :command clnl-nvm:show)
+(defsimpleprim :tick :command clnl-nvm:tick)
+(defsimpleprim :ticks :reporter clnl-nvm:ticks)
(defsimpleprim :turtles :reporter clnl-nvm:turtles)
; Colors
(defsimplecommandtest "let 2" "let a 5 let b 6 crt (a + b)"
"4ABB6822402929878AB9E5A1084B9E4AE1F01D5B")
+
+(defsimplecommandtest "ticks 1" "reset-ticks tick"
+ "E1DE30F072D785E0D0B59F28B0F7853E3D3E0D8B")
+
+(defreportertestwithsetup "ticks 1" "reset-ticks tick tick" "ticks" "2"
+ "E1DE30F072D785E0D0B59F28B0F7853E3D3E0D8B")