<!---  Produced by FS2LSL (Flash Scratch to LSL),  John K. Bennett,  ATLAS Institute, University of Colorado at Boulder,  http://redwood.colorado.edu/jkb/fs2lsl/  -->
<program>
  <globvars>
    <stack x="10" y="5">
      <block spec="Declare Global Variables"/>
      <block spec="global comment: %s">
        <blockarg val="Listing 5.2: Bee"/>
      </block>
      <block spec="create global var: %g type: %m value: %t">
        <blockarg val="FLOWER_NAME"/>
        <blockarg val="string"/>
        <blockarg val="&quot;Flower&quot;"/>
      </block>
      <block spec="create global var: %g type: %m value: %t">
        <blockarg val="HIVE_NAME"/>
        <blockarg val="string"/>
        <blockarg val="&quot;Beehive&quot;"/>
      </block>
    </stack>
  </globvars>
  <functions/>
  <states>
    <state>
      <stacks>
        <stack x="24" y="120">
          <block spec="state %s">
            <blockarg val="default"/>
          </block>
          <block spec="when I enter this state"/>
          <block spec="set a timer for %n secs">
            <blockarg val="1"/>
          </block>
        </stack>
        <stack x="343" y="160">
          <block spec="when I am created"/>
          <block spec="set a timer for %n secs">
            <blockarg val="1"/>
          </block>
        </stack>
        <stack x="23" y="224">
          <block spec="when timer triggers"/>
          <block spec="sense object: %s key: %s type: %c range: %n arc: %s">
            <block varName="FLOWER_NAME" varScope="global"/>
            <blockarg val="NULL_KEY"/>
            <blockarg val="ACTIVE|PASSIVE"/>
            <blockarg val="10"/>
            <blockarg val="PI"/>
          </block>
          <block spec="set a timer for %n secs">
            <blockarg val="0"/>
          </block>
        </stack>
        <stack x="21" y="328">
          <block spec="when sensor triggers"/>
          <block spec="create local var: %g type: %m value: %t">
            <blockarg val="i"/>
            <blockarg val="integer"/>
            <blockarg val="none"/>
          </block>
          <block spec="create local var: %g type: %m value: %t">
            <blockarg val="name"/>
            <blockarg val="string"/>
            <block spec="detected %Z %s">
              <blockarg val="object"/>
              <blockarg val="0"/>
            </block>
          </block>
          <block spec="ifelse %b">
            <block spec=" %n %Q %n ">
              <block varName="name" varScope="local"/>
              <blockarg val="=="/>
              <block varName="FLOWER_NAME" varScope="global"/>
            </block>
            <stack>
              <block spec="comment: %s">
                <blockarg val="flower"/>
              </block>
              <block spec="for ( %s ; %s ; %n )">
                <blockarg val="i = 0"/>
                <block spec=" %n %Q %n ">
                  <block varName="i" varScope="local"/>
                  <blockarg val="&lt;"/>
                  <block spec="number of agents or touches"/>
                </block>
                <blockarg val="i++"/>
                <stack>
                  <block spec="set position to %s">
                    <block spec="detected %Z %s">
                      <blockarg val="position"/>
                      <block varName="i" varScope="local"/>
                    </block>
                  </block>
                  <block spec="set rotation to %s">
                    <block spec="detected %Z %s">
                      <blockarg val="rotation"/>
                      <block varName="i" varScope="local"/>
                    </block>
                  </block>
                  <block spec="wait %n secs">
                    <blockarg val="2"/>
                  </block>
                </stack>
              </block>
              <block spec="sense object: %s key: %s type: %c range: %n arc: %s">
                <block varName="HIVE_NAME" varScope="global"/>
                <block spec="null key"/>
                <blockarg val="ACTIVE|PASSIVE"/>
                <blockarg val="10"/>
                <block spec="pi"/>
              </block>
            </stack>
            <stack>
              <block spec="comment: %s">
                <blockarg val="hive"/>
              </block>
              <block spec="set position to %s">
                <block spec="detected %Z %s">
                  <blockarg val="position"/>
                  <blockarg val="0"/>
                </block>
              </block>
              <block spec="set rotation to %s">
                <block spec="detected %Z %s">
                  <blockarg val="rotation"/>
                  <blockarg val="0"/>
                </block>
              </block>
              <block spec="set a timer for %n secs">
                <blockarg val="10"/>
              </block>
            </stack>
          </block>
        </stack>
        <stack x="25" y="773">
          <block spec="when nothing is sensed"/>
          <block spec="set a timer for %n secs">
            <blockarg val="30"/>
          </block>
        </stack>
      </stacks>
    </state>
  </states>
</program>