Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Netlogo 生成具有随机大小和位置的河流_Netlogo - Fatal编程技术网

Netlogo 生成具有随机大小和位置的河流

Netlogo 生成具有随机大小和位置的河流,netlogo,Netlogo,我正在做一个较小的项目,有一个问题我找不到任何解决方案 我想随机生成河流。我的计划是随机生成一些大小和位置不同的河流。有人知道如何随机生成河流吗 我试过几种方法。我确实成功地生成了,但我希望它更像河流(直线),而不是“聚集” 我使用下面的代码来获得上面的图片 ; Generating random rivers. ca ask patches with [pycor = (random 16) or pxcor = (random 16)] [ set pcolor brown ask

我正在做一个较小的项目,有一个问题我找不到任何解决方案

我想随机生成河流。我的计划是随机生成一些大小和位置不同的河流。有人知道如何随机生成河流吗

我试过几种方法。我确实成功地生成了,但我希望它更像河流(直线),而不是“聚集”

我使用下面的代码来获得上面的图片

; Generating random rivers.
ca
ask patches with [pycor = (random 16) or pxcor = (random 16)]
[
  set pcolor brown
  ask patches in-radius random 3 [set pcolor brown]
]
谢谢你花时间

\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu强

编辑:

看来我取得了一些进展。这是我最接近我想要的

to setup   
 ca 
ask n-of 2 patches [
      spread-right
    ]
    ask n-of 2 patches[
      spread-left
    ]
    ask n-of 2 patches[
      spread-down
    ]
    ask n-of 2 patches[
      spread-up
    ]   
end 

to spread-right
   if pxcor < max-pxcor [
    ask n-of 1 neighbors with [ pxcor = [pxcor] of myself + 1] [
      set pcolor brown
      spread-right
    ]
  ]
end
to spread-left   
  if pxcor > min-pxcor [
    ask n-of 1 neighbors with [ pxcor = [pxcor] of myself - 1] [
      set pcolor brown
      spread-left
    ]
  ]
end

to spread-down 
  if pycor > min-pycor [
    ask n-of 1 neighbors with [pycor = [pycor] of myself - 1][
      set pcolor brown
      spread-down
    ]
  ]
end 

to spread-up 
  if pycor > max-pycor [
    ask n-of 1 neighbors with [pycor = [pycor] of myself + 1][
      set pcolor brown
      spread-up
    ]
  ]
end
设置
ca
询问2个补丁中的n个[
右转
]
询问2个补丁中的n个[
向左蔓延
]
询问2个补丁中的n个[
摊开
]
询问2个补丁中的n个[
摊开
]   
终止
向右传播
如果pxcormin pxcor[
用[pxcor=[pxcor]问我自己的n个邻居-1][
设置颜色为棕色
向左蔓延
]
]
终止
摊开
如果pycor>min pycor[
用[pycor=[pycor]自己的[1]询问n-1个邻居[
设置颜色为棕色
摊开
]
]
终止
摊开
如果pycor>max pycor[
用[pycor=[pycor]自己+1]询问n个邻居[
设置颜色为棕色
摊开
]
]
终止

你可以简单地用一只(半)随机行走的海龟四处走动,并给它行走的补丁上色。然后在某些地方使用扩展代码使其更厚。

多亏@Jumboman的建议,我用此代码解决了这个问题。根据世界的大小和特征的首选大小,可以更改设置的编号

to setup
  ca 
  ;Generating physical features.    
  ask n-of 5 patches[ sprout 1[
    set pcolor brown]
  ]

  let i 0
  while [ i < (max-pycor )][
    ask turtles [
      fd 1
      set pcolor black
      ifelse (random 20 <= 1)
      [
        rt one-of [-90 0 90]      
        forward 1
      ]
            [
        fd 1
        set pcolor brown
        fd 1
        set pcolor brown
      ]
      set pcolor brown
      set i i + 1]
  ]


  ask n-of max-pxcor patches with [pcolor = brown][
    ask patches in-radius 1 with [pcolor = black][
      set pcolor brown]
  ]

  ask turtles [die]
end 
设置
ca
;生成物理特征。
问n-5个补丁[萌芽1[
设置颜色[棕色]
]
让我0
而[i<(max pycor)][
问海龟[
fd 1
设置彩色黑色

如果有(随机20)NetLogo附带的模型库中的侵蚀模型可能是一个很好的例子。这个想法是你模拟水侵蚀土地,直到自然形成低洼的河流。它的代码有点挑剔,但可能简化版本适合你的目的?谢谢你,@Jasper!我就用它吧看看这个模型。我已经用另一种方法做了一些改进,你可以在更新的帖子中看到。这是一个好主意。我确实设法使它看起来像我想要的样子。我将改进我的代码,稍后在这里分享。