globals [grass] ;; sheep , wolves both breeds of turtle. breed [sheep a-sheep] ;; sheep own plural, use "a-sheep" singular. breed [wolves wolf] turtles-own [energy] ;; both wolves , sheep have energy patches-own [countdown] setup clear-all ask patches [ set pcolor green ] ;; check grass? switch. ;; if true, grass grows , sheep eat ;; if false, sheep don't need eat if water? [ if grass? [ ask patches [ set pcolor one-of [green brown blue] if-else pcolor =[green blue] [ set countdown grass-regrowth-time ] [ set countdown random grass-regrowth-time ] ;; initialize grass grow clocks randomly brown patches ] ] if grass? [ ask patches [ set pcolor one-of [green brown] if-else pcolor = green [ set countdown grass-regrowth-time ] [ set countdown random grass-regrowth-time ] ;; initialize grass grow clocks randomly brown patches ] ] ] set-default-shape sheep "sheep" create-sheep initial-number-sheep ;; create sheep, initialize variables [ set color white set size 1.5 ;; easier see set label-color blue - 2 set energy random (2 * sheep-gain-from-food) setxy random-xcor random-ycor ] set-default-shape wolves "wolf" create-wolves initial-number-wolves ;; create wolves, initialize variables [ set color black set size 2 ;; easier see set energy random (2 * wolf-gain-from-food) setxy random-xcor random-ycor ] display-labels set grass count patches [pcolor = green] ;;set water count patches [pcolor = blue] reset-ticks end go if not any? turtles [ stop ] ask sheep [ move if water? [ if pcolor = blue [ set energy energy = 0 death ;;sheep drowns ] ] if grass? [ set energy energy - 1 ;; deduct energy sheep if grass? switch on eat-grass ] death reproduce-sheep ] ask wolves [ move if water? [ if pcolor = blue [ set energy energy = 0 death ] ] set energy energy - 1 ;; wolves lose energy move catch-sheep death reproduce-wolves ] if grass? [ ask patches [ grow-grass ] ] set grass count patches [pcolor = green] tick display-labels end move ;; turtle procedure rt random 50 lt random 50 fd 1 end eat-grass ;; sheep procedure ;; sheep eat grass, turn patch brown if pcolor = green [ set pcolor brown set energy energy + sheep-gain-from-food ;; sheep gain energy eating ] end reproduce-sheep ;; sheep procedure if random-float 100 < sheep-reproduce [ ;; throw "dice" see if reproduce set energy (energy / 2) ;; divide energy between parent , offspring hatch 1 [ rt random-float 360 fd 1 ] ;; hatch offspring , move forward 1 step ] end reproduce-wolves ;; wolf procedure if random-float 100 < wolf-reproduce [ ;; throw "dice" see if reproduce set energy (energy / 2) ;; divide energy between parent , offspring hatch 1 [ rt random-float 360 fd 1 ] ;; hatch offspring , move forward 1 step ] end catch-sheep ;; wolf procedure let prey one-of sheep-here ;; grab random sheep if prey != nobody ;; did one? if so, [ ask prey [ die ] ;; kill set energy energy + wolf-gain-from-food ] ;; energy eating end death ;; turtle procedure ;; when energy dips below zero, die if energy < 0 [ die ] end grow-grass ;; patch procedure ;; countdown on brown patches: if reach 0, grow grass if pcolor = brown [ ifelse countdown <= 0 [ set pcolor green set countdown grass-regrowth-time ] [ set countdown countdown - 1 ] ] end display-labels ask turtles [ set label "" ] if show-energy? [ ask wolves [ set label round energy ] if grass? [ ask sheep [ set label round energy ] ] ] end
but when run ( have place on off switch water? in wolf sheep predation) runs if made no changes @ all. why this? how can fix this?
anything related water added code me.
you have 2 if statements inside first if water?
(in setup
), , both respond grass?
turn patches blue, execute send if
, turn either brown or green.
whenever confused, make smaller procedures. e.g.,
to color-patches if grass? [ let patch-colors [green brown] if water? [set patch-colors [green brown blue]] ask patches [set pcolor one-of patch-colors] ] end
one other problem, don't want if pcolor = [green blue]
, (i) false , (ii) trying set regrowth countdown on water patches.