Random 如何让海龟在某个地方结冰?

Random 如何让海龟在某个地方结冰?,random,netlogo,Random,Netlogo,我想要一只乌龟在界面屏幕上随机移动,但如果它落在“危险补丁”上,我需要它冻结。如果海龟没有降落在“危险地带”,它会继续移动。有人能帮我解决这个问题吗?Levi,在设置中,您需要给每只海龟一个变量,指示海龟是否冷冻。你应该决定你想要什么颜色的补丁表示“危险!” 在每一步中,如果海龟没有被冻住,它可以迈出一步,然后检查它所在的补丁的颜色,看看它现在是否应该被冻住 当每只乌龟都冻僵了,停下来 下面的代码将实现这一点 globals [ danger-color ] turtles-own [

我想要一只乌龟在界面屏幕上随机移动,但如果它落在“危险补丁”上,我需要它冻结。如果海龟没有降落在“危险地带”,它会继续移动。有人能帮我解决这个问题吗?

Levi,在设置中,您需要给每只海龟一个变量,指示海龟是否冷冻。你应该决定你想要什么颜色的补丁表示“危险!”

在每一步中,如果海龟没有被冻住,它可以迈出一步,然后检查它所在的补丁的颜色,看看它现在是否应该被冻住

当每只乌龟都冻僵了,停下来

下面的代码将实现这一点


globals [  danger-color ]

turtles-own [
  frozen?       ;; each turtle needs its own true-false switch for whether it's frozen.
                ;; this is a true/false variable so the name ends with "?"
]

to setup
  clear-all           

  ;; pick a color you like for dangerous areas. I picked red.
  set danger-color red         

  ;; set the bottom half of the viewing area to the danger color
  no-display
     ask patches with [pycor < 0] [set pcolor danger-color ]
  display

  ;; create 2 big yellow turtles that are not frozen and move them up
  create-turtles 2 [ 
    set color yellow 
    set size 3 
    setxy random-pxcor 10    ;; put them somewhere on top half of the screen
    set frozen? FALSE        ;; initially all turtles are not frozen
  ]

  reset-ticks              
end

to go

  ;; see if there is any point in continuing to run
  if not any? turtles with [frozen? = FALSE] [stop ]

  ask turtles with [ frozen? = FALSE ]       
    [ 
      set heading random 360 
      forward 1  

      ;; and check to see if maybe NOW we should be frozen
      if  pcolor = danger-color   
      [ 
        set frozen? TRUE  
        set color blue
      ]
    ]


  tick
end

全局[危险色]
乌龟自己的[
冻结?;每只海龟都需要自己的真假开关来判断它是否冻结。
;这是一个真/假变量,因此名称以“”结尾
]
设置
清除所有
;; 为危险区域选择您喜欢的颜色。我选了红色的。
将危险设置为红色
;; 将观察区域的下半部分设置为危险颜色
无显示
使用[pycor<0][set pcolor danger color]询问贴片
显示
;; 创造2只没有被冻结的大黄海龟,并将它们向上移动
创造海龟2[
设置颜色为黄色
3号套餐
setxy random pxcor 10;;将它们放在屏幕上半部分的某个位置
设置为冻结?FALSE;;最初所有海龟都没有冻结
]
重置滴答声
结束
外带
;; 看看继续跑步是否有意义
如果没有?乌龟与[冷冻?=错误][停止]
向海龟询问[冷冻?=错误]
[ 
设置航向随机360
转发1
看看我们现在是否应该被冻住
如果P颜色=危险颜色
[ 
冻结?是吗
设置颜色为蓝色
]
]
打上钩
结束
请注意,我可以只使用“红色”而不是定义危险颜色,这样可以节省一些击键次数,但也会使代码更难更新和理解

如果pcolor=danger color可以清楚地显示您测试的目的、位置 如果pcolor=red,则不太明显。相信我,一个月后你回来的时候 对于代码,您将感激您这样做的事实

使用这样一个变量也意味着,如果你改变了你关于什么颜色应该代表危险的想法,你只需要在代码中的一个地方改变它,你知道它在哪里。将“红色”硬编码到程序的多个位置会使您很难找到要更新的位置,并且几乎保证您将错过一个

如果不清楚,请发表评论,我会尽力更好地解释


享受NetLogo带来的乐趣!谢谢你在这里寻找答案

你的问题真的很难理解。如果你想增加你的问题被回答的机会,请提供完整的描述和一些代码。