NetLogo turtles
Пространство тестирования
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
