NetLogo turtles/Zhitkova
NetLogo patches NetLogo links NetLogo turtles NetLogo widgets
Пространство тестирования
Базовые команды к черепашкам
| 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 - очищаем значения
clear-all
;; каждая черепашка располагается в случайной точке экрана
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
