NetLogo turtles: различия между версиями

Материал из Поле цифровой дидактики
Нет описания правки
Нет описания правки
 
(не показаны 4 промежуточные версии этого же участника)
Строка 1: Строка 1:
* [[Netlogo patches]]
* [[NetLogo patches]]
* [[Netlogo links]]
* [[NetLogo links]]
* [[Netlogo turtles]]
* [[NetLogo turtles]]
* [[Netlogo interface]]
* [[NetLogo widgets]]
 
== Пространство тестирования  ==
 
 
  create-turtles 50 [ setxy random-xcor random-ycor set color red set shape "bug" ]


==  Модель ==
<netlogo model="Turtles" />
<netlogo model="Turtles" />
== Базовые команды  к черепашкам ==
{{Шаблон:Turtles commands}}


Научимся создавать, расставлять и группировать черепах. Листинг программы -  
Научимся создавать, расставлять и группировать черепах. Листинг программы -  

Текущая версия от 10:13, 23 апреля 2026

Пространство тестирования

 create-turtles 50 [ setxy random-xcor random-ycor set color red set shape "bug" ]

Базовые команды к черепашкам

task realisation
Все turtles выполняют команду
ask turtles [ fd 1 ]
Выбрать turtles по условию
ask turtles with [color = red] [ set size 2 ]
Исключить текущую turtle из набора
ask turtles [ show other turtles ]
Turtles на текущем патче
ask turtles [ show turtles-here ]
Другие turtles на текущем патче
ask turtles [ show other turtles-here ]
Turtles на соседних патчах
ask turtles [ show turtles-on neighbors4 ]
Turtles в радиусе
ask turtles [ show turtles in-radius 3 ]
Проверить, есть ли соседи-черепахи
ask turtles [ if any? other turtles in-radius 2 [ set color red ] ]
Посчитать число соседей
ask turtles [ set label count other turtles in-radius 2 ]
Получить patch под turtle
ask turtles [ show patch-here ]
Получить patch впереди
ask turtles [ show patch-ahead 1 ]
Проверить, можно ли идти вперед
ask turtles [ if can-move? 1 [ fd 1 ] ]
Выбрать самую "богатую" turtle
turtles-own [energy]
ask max-one-of turtles [energy] [ set color yellow ]
Выбрать несколько turtles по максимуму
turtles-own [energy]
ask max-n-of 5 turtles [energy] [ set shape "star" ]
Случайная turtle из набора
ask one-of turtles with [color = blue] [ set color pink ]
Собрать список значений turtle-переменной
turtles-own [energy]
show [energy] of turtles
Среднее значение по turtles
turtles-own [energy]
show mean [energy] of turtles
Сумма значений по turtles
turtles-own [energy]
show sum [energy] of turtles
Отсортировать turtles по who
show sort-on [who] turtles
Сформировать набор из разных источников
let selected turtle-set turtles with [color = red] turtles with [shape = "car"]
ask selected [ set label who ]
Создать links со всеми остальными
ask turtle 0 [ create-links-with other turtles ]
Получить все links данной turtle
ask turtles [ show my-links ]


Научимся создавать, расставлять и группировать черепах. Листинг программы -

Создадим новый проект. У черепашек Netlogo есть свойства - номер, цвет, координаты и т.д. Кроме того, мы можем задавать черепашкам новые свойства - turtles-own. Свойства всегда задаются в начале программы. Например, зададим для черепашек свойство group. Свойство будет иметь 2 значения - ложь или истина. Принадлежит черепашка к группе или не принадлежит.

turtles-own [group]

Вообще внутри turtles-own [] можно перечислить множество свойств

Теперь создадим первую процедуру, которая будет очищать все имеющиеся объекты и значения. Далее следует программа с комментариями. Комментарии задаются двумя символами ;;

Создаем новых черепах

to setup

  • ca - очищаем значения
  • каждая черепашка располагается в случайной точке экрана
  • crt 50 [  ;; создаем 50 черепах и разбрасываем их по экрану
  • setxy random-xcor random-ycor
  • set group false
  • ]
  • черепахи рождаются по порядку и поворачиватся последовательно. Когда мы им потом даем команду разойтись, они образуют круг
  • cro number_of_turtles [fd max-pxcor - 2]
  • Этого же результата можно достичь, если мы используем команду layout-circle
  • end
to circle
 layout-circle turtles max-pxcor - 2
end

Мы умеем создавать черепашек и расставлять их по экрану. Теперь попробуем собрать черепашек одинакового цвета

Группируем черепах по цветам

to collect_color

  • Первая версия - черепашки объединяются, но делают много лишних движений
  ask other turtles with [color = [color] of myself] [face myself jump (distance myself) - 1] 

во второй версии задаем черепашкам свойство принадлежности к группе и в начале устанавливаем значение этого свойства в false

  • if group = false [ask other turtles with [(color = [color] of myself) and (group = false)]
 [  
 черепашка прыгает в сторону вызывающего агента
  • face myself jump (distance myself) - 1
 черепашка устанавливает свою принадлежность к группе в true - и теперь ее не будут вызывать
  • set group true create-link-to myself]]

end


На странице использованы Команды к черепахам NetLogo