Генерация рек со случайным размером и местоположением - PullRequest
0 голосов
/ 09 марта 2020

Я работаю над небольшим проектом, и у меня есть одна проблема, для которой я не могу найти решения.

Я хочу случайным образом генерировать реки . Мой план состоит в том, чтобы случайным образом генерировать несколько рек с различными размерами и местами. Кто-нибудь знает, как генерировать реки случайным образом?

Я пробовал несколько вещей. Мне удалось сгенерировать this , но я хочу, чтобы он больше походил на реки (прямые линии) и был менее "сгруппирован".

Я использовал следующий код, чтобы получить картинку выше.

; 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]
]

Спасибо, что нашли время!

_______________________________________________________________________________

РЕДАКТИРОВАТЬ:

Я сделал некоторый прогресс, похоже, это . Это самое близкое, что мне удалось получить к тому, что я хочу.

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

Ответы [ 2 ]

1 голос
/ 09 марта 2020

Вы можете просто использовать (полу) случайную черепаху, чтобы ходить и раскрашивать участки, по которым она ходит. Затем используйте разложенный код, чтобы в некоторых местах он стал толще.

0 голосов
/ 11 марта 2020

Благодаря предложению @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 
...