; Purpose: To demonstrate incrementing a counter. ; Copyright © 2004 by Rupert Russell ; e-mail: r.russell@ballarat.edu.au ; URL: http://velorum.ballarat.edu.au/~rrussell/microworlds/ ; Created: October 29, 2004 ; ; This program is free software; you can redistribute it and/or modify ; it under the terms of the GNU General Public License as published by ; the Free Software Foundation; either version 2 of the License, or ; (at your option) any later version. ; ; This program is distributed in the hope that it will be useful, ; but WITHOUT ANY WARRANTY; without even the implied warranty of ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ; GNU General Public License for more details. ; ; You should have received a copy of the GNU General Public License ; along with this program; if not, write to the Free Software ; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ; --------------------------------------------------------------------- to setup make "counter 0 ; create the counter and set its initial value to 0 show_value_of_counter cg end to increment carefully [show_value_of_counter] [setup] ; check that the counter has been created ; if the counter has not been created then the ; command carefully will not cause an ; error but will run the procedure setup cg if :counter < 10 [ ; if the current value of :counter ; is less than 10 then make "counter :counter + 1 ; increment the :counter by 1 show_value_of_counter ; show the vale of the :counter ] stamp_turtles end to decrement carefully [show_value_of_counter] [setup] ; check that the counter has been created ; if the counter has not been created then the ; command carefully will not cause an error ; but will run the procedure setup if :counter > -10 [ make "counter :counter - 1 ; decrement the counter by 1 ] cg show_value_of_counter stamp_turtles end to show_value_of_counter ct if :counter = -10 [ insert ( sentence "Minimum "value "reached ) ; Minimum value reached ] if :counter = 10 [ insert ( sentence "Maximum "value "reached ) ; Maximum value reached ] ; insert the value of the counter in the current text box if (and :counter > -10 :counter < 10) [ insert ( sentence "The "counters "value "is " ) insert :counter ] end to stamp_turtles if :counter = 0 [ setshape "clear_sq stamp ] if :counter > 0 [ setshape "clear_sq stamp repeat :counter [ setshape "green_sq fd 18 stamp ] ] if :counter < 0 [ setshape "clear_sq stamp setshape "red_sq repeat abs :counter [ bk 18 stamp ] ] if :counter = 0 [ setshape "clear_sq stamp ] end to reset ct cg make "counter 0 show_value_of_counter stamp_turtles end