Черепашки NetLogo

Материал из Letopisi.Ru — «Время вернуться домой»
(Различия между версиями)
Перейти к: навигация, поиск
(Группируем черепах по цветам)
 
(не показаны 17 промежуточных версий 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
+
end
+
  
  ;; мы умеем создавать черепашек и расставлять их по экрану.
+
==== Группируем черепах по цветам ====
  ;; Теперь попробуем собрать черепашек одинакового цвета
+
'''to collect_color'''
 +
*  Первая версия - черепашки объединяются, но делают много лишних движений
 +
<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
 
;; Первая версия - черепашки объединяются, но делают много лишних движений
 
;;ask other turtles with [color = [color] of myself]
 
  
;; во второй версии задаем черепашкам свойство принадлежности к группе и в начале устанавливаем значение этого свойства в false
+
На странице использованы [[Команды к черепахам NetLogo]]
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
+
  
===  Команды к черепашкам ===
 
* 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 ''(agent'') - расстояние до агента
 
** '''ask turtle 1 [show distance turtle 0]''' - возвращает расстояние
 
** '''ask turtle 1 [ show max-one-of turtles [distance myself] ]''' - возвращает имя агента
 
* 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]
 
  
 
[[Категория:NetLogo]]
 
[[Категория:NetLogo]]

Текущая версия на 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

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