📄 ---final.nlogo
字号:
breeds [tt]tt-own [ trustworth intrest heard]patches-own [ neighbors-nowrap ;; agentset of patches that are neighbors without wrapping around ;; the edge of the world]globals [kornseveralseveral2several3 number naiv temp temp1 temp2 crap randommodexstartystart i j k l m n o p q r temp-list1]to setup-onecaset randommode 0set several 0set several2 0set several3 0 set number 35ifelse number < 19[set xstart -15set ystart -15][set xstart 0set ystart 0] set-default-shape tt "person" calc ask patches [ set pcolor grey - 3 set korn placett ifelse eight-mode? [set neighbors-nowrap neighbors with [abs (pxcor - pxcor-of myself) <= 1 and abs (pycor - pycor-of myself) <= 1]] [set neighbors-nowrap neighbors4 with [abs (pxcor - pxcor-of myself) <= 1 and abs (pycor - pycor-of myself) <= 1]] ] if Rumor [ask tt-at xstart ystart [ set color white]] do-plotsendto setup-random ca set randommode 1 set several 0 set several2 0 set several3 0 set number 35ifelse number < 19[set xstart -15set ystart -15][set xstart 0set ystart 0] set-default-shape tt "person" calc ask patches [ set pcolor grey - 3 set korn placett ifelse eight-mode? [set neighbors-nowrap neighbors with [abs (pxcor - pxcor-of myself) <= 1 and abs (pycor - pycor-of myself) <= 1]] [set neighbors-nowrap neighbors4 with [abs (pxcor - pxcor-of myself) <= 1 and abs (pycor - pycor-of myself) <= 1]] ] if Rumor [set temp 0 while [temp < 5] [ask tt-at random 35 random 35 [ set color white] set temp temp + 1]] do-plotsendto go ifelse Rumor [ifelse randommode = 0 [ ask tt-at xstart ystart [ set trustworth Rumor-trustworthy set intrest Rumor-intesting ifelse random 30 < (naiv + trustworth + intrest ) or (naiv + trustworth + intrest ) > 30 [set color magenta + 2 ifelse random 20 < (naiv - intrest) [if intrest < 10 and trustworth < 10 [set temp1 intrest + random 2 set temp2 trustworth + random 2]] [set temp1 intrest set temp2 trustworth] ask tt-on random-n-of round((naiv + intrest)/ 6 ) neighbors-nowrap [if color = (violet + 1 ) [set color white set intrest temp1 set trustworth temp2 set heard 1 ]]] [set color turquoise + 2]] while [any? (turtles with [color = white])] [ ask (turtles with [color = white]) [wait 0.2 spread]]] [while [any? (turtles with [color = white])] [ ask (turtles with [color = white]) [set trustworth Rumor-trustworthy set intrest Rumor-intesting set heard 1 wait 0.2 spread]]]] [ask tt [set shape "person graduate"]] do-plotsendto spread ifelse random 50 < (naiv + trustworth + intrest + ( heard * (naiv / 3))) or (naiv + trustworth + intrest + ( heard * (naiv / 3))) > 50 [set color magenta + 2 ifelse random 20 < (naiv - intrest) [if intrest < 10 and trustworth < 10 [set temp1 intrest + random 2 set temp2 trustworth + random 2]] [set temp1 intrest set temp2 trustworth] set crap 0 set crap ceiling ((naiv * intrest) / 40 ) ifelse eight-mode? [ifelse crap > 8 [set crap 0 set crap random 9] [ifelse count neighbors-nowrap = 5 [set crap 0 set crap random 6] [if count neighbors-nowrap = 3 [set crap 0 set crap random 4]]]] [ifelse crap > 4 [set crap 0 set crap random 5] [ifelse count neighbors-nowrap = 3 [set crap 0 set crap random 4] [if count neighbors-nowrap = 2 [set crap 0 set crap random 3]]]] ask tt-on random-n-of crap neighbors-nowrap [if color = (violet + 1 ) [set color white set intrest temp1 set trustworth temp2] if color = (turquoise + 2 ) [set heard (heard + 1) if heard = 2 [set several several + 1] if heard = 3 [set several2 several2 + 1] if heard = 4 [set several3 several3 + 1] set color white]]] [set color turquoise + 2] do-plotsendto calc set temp-list1 [] set j floor (35 / number) set m -17 set temp-list1 lput m temp-list1 set m m + j while [m < 18] [ set temp-list1 lput m temp-list1 set m m + j ] endto-report placett set i 0 set k 0 set l 0 set o 0 set n 0 set p 0 set q 0 set r 0 set i pxcor set k pycor set naiv 0 while [l < number] [ set n item l temp-list1 ifelse i = n ;and k = n [ while [p < number] [ set q item p temp-list1 ifelse k = q [set p number set o 1] [set p p + 1] ] set l number ] [set l l + 1] ] ifelse o = 1 [set korn 1] [set korn 0] if korn = 1 [;ask patches ;[korn = 1] ;[pxcor mod number = 0 and ; pycor mod number = 0] sprout-tt 1 [ set color violet + 1 set size (35 / number) - .1 set naiv random 20 set heard 0 ] ] report korn end to do-plots set-current-plot "Rumor Spread" plot ((count turtles with [color = magenta + 2] + count turtles with [color = turquoise + 2])/ (35 * 35)) * 100 set-current-plot "Proportions" set-current-plot-pen "Believers" plot (count turtles with [color = magenta + 2] / (35 * 35)) * 100 set-current-plot-pen "Non-believers" plot (count turtles with [color = turquoise + 2] / (35 * 35)) * 100 set-current-plot-pen "Havn't-heard" plot ((count turtles with [color = violet + 1])/ (35 * 35)) * 100 end@#$#@#$#@GRAPHICS-WINDOW23025660476171712.01101110111CC-WINDOW5704680799Command Center0BUTTON385212685setup-onesetup-oneNIL1TOBSERVERTNILSLIDER33407205440Rumor-intestingRumor-intesting0101011NILSLIDER33372205405Rumor-trustworthyRumor-trustworthy0101011NILSWITCH33337136370RumorRumor01-1000BUTTON58220162306NILgoNIL1TOBSERVERTNILSWITCH36137160170eight-mode?eight-mode?01-1000BUTTON3895147128setup-randomsetup-randomNIL1TOBSERVERTNILPLOT32490256639Rumor spreadno of persons%0.0100.00.0100.0truefalsePENS"default" 1.0 0 -13791810 truePLOT259490578639Proportionsno of persons%0.0500.00.0100.0truetruePENS"Believers" 1.0 0 -5825686 true"Non-believers" 1.0 0 -14835848 true"Havn't-heard" 1.0 0 -8630108 trueMONITOR581490
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -