Черепашки NetLogo

Материал из Letopisi.Ru — «Время вернуться домой»
(Различия между версиями)
Перейти к: навигация, поиск
(Группируем черепах по цветам)
 
(не показаны 19 промежуточных версий 1 участника)
Строка 1: Строка 1:
Научимся создавать, расставлять и группировать черепах.  
+
=== Урок 1. Создаем и группируем черепах ===
 +
Научимся создавать, расставлять и группировать черепах. Листинг программы - [[Черепашки NetLogo/Test-turtle.nlogo]]
 +
 
 
Создадим новый проект. У черепашек Netlogo есть свойства - номер, цвет, координаты и т.д.  
 
Создадим новый проект. У черепашек Netlogo есть свойства - номер, цвет, координаты и т.д.  
 
Кроме того, мы можем задавать черепашкам новые свойства - turtles-own. Свойства всегда задаются в начале программы.  
 
Кроме того, мы можем задавать черепашкам новые свойства - turtles-own. Свойства всегда задаются в начале программы.  
Например, зададим для черепашек свойство group.  
+
Например, зададим для черепашек свойство group. Свойство будет иметь 2 значения - ложь или истина. Принадлежит черепашка к группе или не принадлежит.  
  
 
turtles-own [group]
 
turtles-own [group]
Строка 10: Строка 12:
 
Теперь создадим первую процедуру, которая будет очищать все имеющиеся объекты и значения. Далее следует программа с комментариями. Комментарии задаются двумя символами ;;   
 
Теперь создадим первую процедуру, которая будет очищать все имеющиеся объекты и значения. Далее следует программа с комментариями. Комментарии задаются двумя символами ;;   
  
to setup
+
==== Создаем новых черепах ====
ca ;; очищаем значения
+
to setup
;; каждая черепашка располагается в случайной точке экрана
+
* ca - очищаем значения
crt 50 [      ;; создаем 50  черепах и разбрасываем их по экрану
+
* каждая черепашка располагается в случайной точке экрана
setxy random-xcor random-ycor
+
* crt 50 [      ;; создаем 50  черепах и разбрасываем их по экрану
set color one-of remove gray  remove green base-colors
+
* setxy random-xcor random-ycor
set group false
+
* set group false
  ]
+
* ]
  ;; черепахи рождаются по порядку и поворачиватся последовательно. Когда мы им потом даем команду разойтись, они образуют круг
+
* черепахи рождаются по порядку и поворачиватся последовательно. Когда мы им потом даем команду разойтись, они образуют круг
  ;; cro  number_of_turtles [fd max-pxcor - 2]
+
* cro  number_of_turtles [fd max-pxcor - 2]
  ;; Этого же результата можно достичь, если мы используем команду layout-circle
+
* Этого же результата можно достичь, если мы используем команду layout-circle
end  
+
* end  
  
 +
to circle
 +
* layout-circle turtles max-pxcor - 2
 +
end
  
 +
Мы умеем создавать черепашек и расставлять их по экрану. Теперь попробуем собрать черепашек одинакового цвета
  
  to circle
+
==== Группируем черепах по цветам ====
  layout-circle turtles max-pxcor - 2
+
'''to collect_color'''
  end
+
* Первая версия - черепашки объединяются, но делают много лишних движений
 +
  <nowiki>  ask other turtles with [color = [color] of myself] [face myself jump (distance myself) - 1] </nowiki>
  
  ;; мы умеем создавать черепашек и расставлять их по экрану.
+
во второй версии задаем черепашкам свойство принадлежности к группе и в начале устанавливаем значение этого свойства в false
  ;; Теперь попробуем собрать черепашек одинакового цвета
+
* <nowiki>if group = false [ask other turtles with [(color = [color] of myself) and (group = false)]  </nowiki>
 +
<nowiki> [  </nowiki>
 +
  черепашка прыгает в сторону вызывающего агента
 +
*  face myself jump (distance myself) - 1
 +
  черепашка устанавливает свою принадлежность к группе в true - и теперь ее не будут вызывать
 +
* <nowiki> set group true create-link-to myself]]  </nowiki>
 +
end
  
  
to collect_color
+
На странице использованы [[Команды к черепахам NetLogo]]
;; Первая версия - черепашки объединяются, но делают много лишних движений
+
;;ask other turtles with [color = [color] of myself]
+
  
;; во второй версии задаем черепашкам свойство принадлежности к группе и в начале устанавливаем значение этого свойства в 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]]
* back (bk)
+
* <breeds>-at команда к породе
+
** ask cats-at 1 1
+
* <breeds>-here
+
** ask turtle 1 [show count cats-here] - '''посчитать черепашек породы кот'''
+
* <breeds>-on
+
* can-move? ''dist'' - могу ли двигаться на указанное расстояние, не занято ли это место
+
* clear-turtles (ct)
+
* create-<breeds>
+
* create-ordered-<breeds>
+
* create-ordered-turtles (cro)
+
* create-turtles (crt)
+
* die умереть
+
** Например, ask turtles with [color = red] [die] - все красные черепахи умерли
+
* distance
+
* distancexy
+
* downhill
+
* downhill4
+
* dx
+
* dy
+
* face повернуться в сторону агента
+
** Например, ask turtle 0 [ask other turtles with [color = [color] of myself] [face myself jump 1]]
+
*** Черепаха говорит всем черепаха одинакового с ней цвета повернуться к ней лицом и сделать прыжок в ее сторону. 
+
* facexy повернуться в сторону точки
+
** facexy 50 50
+
* forward (fd)
+
* hatch
+
* hatch-<breeds>
+
* hide-turtle (ht)
+
* home
+
* inspect
+
* is-<breed>?
+
* is-turtle?
+
* jump
+
* left (lt)
+
* move-to
+
* myself
+
* nobody
+
* no-turtles
+
* of
+
* other
+
* patch-ahead
+
* patch-at
+
* patch-at-heading-and-distance
+
* patch-here
+
* patch-left-and-ahead
+
* patch-right-and-ahead
+
* pen-down (pd)
+
* pen-erase (pe)
+
* pen-up (pu)
+
* random-xcor
+
* random-ycor
+
* right (rt)
+
* self
+
* set-default-shape
+
* __set-line-thickness
+
* setxy
+
* shapes
+
* show-turtle (st)
+
* sprout
+
* sprout-<breeds>
+
* stamp
+
* stamp-erase
+
* subject
+
* subtract-headings
+
* tie
+
* towards
+
* towardsxy
+
* turtle
+
* turtle-set
+
* turtles
+
* turtles-at
+
* turtles-here
+
* turtles-on
+
* turtles-own
+
* untie
+
* uphill
+
* uphill4
+
* who - ID агента - черепахи или связи
+
** ask turtles [set label [who] of self]
+
** ask patches [set label [who] of self]
+

Текущая версия на 15:29, 7 мая 2009

[править] Урок 1. Создаем и группируем черепах

Научимся создавать, расставлять и группировать черепах. Листинг программы - Черепашки NetLogo/Test-turtle.nlogo

Создадим новый проект. У черепашек 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

Персональные инструменты
Инструменты
Акция час кода 2018

организаторы проекта