[Squeakland] Etoys - create duplicate (not sibling) from a
script?
Scott Wallace
scott.wallace at squeakland.org
Thu Jan 31 02:04:07 PST 2008
Hi, Mark,
You're right that there's no direct programatic way using tiles alone =
to obtain a proper "duplicate" (as opposed to a "sibling,") except (as =
Pierre-Andr=E9 suggests) by using "do menu item - duplicate," which, =
unsatisfactorily, leaves the clone in the "hand" rather than allowing =
you programatically to place it where you wish.
However, by using a one-line textual script, you can get the desired =
effect.
The trick is to devote a "Player-valued" variable to "remember" the =
newly-created thing, so that you can send messages to it to set it up =
the way you want.
In the example below, Robot has been given a player-valued variable =
named "theDuplicate." The one-line textual script creates a duplicate =
of the Robot and places it into the "theDuplicate" variable. Each =
time this script is run, a new copy of the robot is made, and placed =
into the originating robot's "theDuplicate" variable.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: pastedGraphic.jpg
Type: image/jpeg
Size: 27286 bytes
Desc: not available
Url : http://squeakland.org/pipermail/squeakland/attachments/20080131/6aad5=
701/pastedGraphic-0002.jpg
-------------- next part --------------
In order for the newborn to be seen on the screen, it needs to be put =
somewhere visible, and this is done by "including" it in the desired =
container, and positioning it appropriately; all of this can be done =
with normal tiles.
Thus, for example, the following script first invokes the textual one- =
liner to create a copy, then adds the copy to the container, and, =
finally, positions the copy at an offset to the upper-right of the =
original robot.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: pastedGraphic.jpg
Type: image/jpeg
Size: 58520 bytes
Desc: not available
Url : http://squeakland.org/pipermail/squeakland/attachments/20080131/6aad5=
701/pastedGraphic-0003.jpg
-------------- next part --------------
Hope this helps!
Cheers,
-- Scott
On Jan 30, 2008, at 7:55 PM, Mark Nelson wrote:
> Thanks for the tip. That's getting closer to what I need, but in my
> application the robots need to be able to 'reproduce' without any user
> interaction. Having a robot 'in hand' isn't going to work for this
> purpose.
>
> The robots autonomously explore their environment collecting
> food/energy and once they have acquired enough energy, they reproduce
> (generate a copy of themselves). I have the reproduction algorithm
> working fine with the 'copy' tile, but I have the problem that the
> embedded sensors of the child robot seem to be linked back to the
> parent's sensors, rather than the child's own sensors.
>
> If you have any other ideas along these lines, please let me know.
> Thanks,
> --Mark
>
> On Jan 30, 2008 12:13 PM, Dreyfuss Pierre-Andr=E9 (EDU)
> <pierre-andre.dreyfuss at edu.ge.ch> wrote:
>> Hi,
>> you have to use do menu item tile in the category miscellanous and =
>> choose duplicate as item.
>>
>> This seems create a copy in the hand.
>>
>>
>> If you want just create a new robot this will work. But there is no =
>> handle on the new created object this way.
>>
>> however once dropped it can be designated as the first element of =
>> the morph containing it.
>>
>>
>>
>>
>> Regards
>>
>>
>> -------- Message d'origine--------
>> De: squeakland-bounces at squeakland.org de la part de Mark Nelson
>> Date: mer. 30/01/2008 15:35
>> =C0: squeakland at squeakland.org
>> Objet : [Squeakland] Etoys - create duplicate (not sibling) from a =
>> script?
>>
>>
>> Hi,
>>
>>> From an Etoys SCRIPT, how can I create a 'duplicate' of a player
>> (equivalent to clicking on the green halo icon), rather than creating
>> a 'sibling/clone' of a player (equivalent to SHIFT-clicking on the
>> green halo icon)? The 'copy' tile available under the miscellaneous
>> category seems to create a clone; the textual equivalent of
>> ''Playfield include Ellipse's copy' is 'self include: Ellipse
>> getNewClone'. What I need is the textual equivalent that would
>> create a 'duplicate' rather than a 'clone'.
>>
>> [Why do I care? In the course that I'm currently teaching, we've
>> created a 'robot' with embedded 'sensors' (the 'robots' and =
>> 'sensors'
>> are created from individual Ellipse morphs; the sensors then get
>> embedded in the robot). The robot's actions depend on differences
>> between left and right sensor values. If I now make a 'duplicate' of
>> the robot using the green halo icon, the new robot works as expected.
>> However, if I make a 'clone' of the robot (either by SHIFT-clicking
>> the green halo icon, or by using the 'copy' tile in a script, the new
>> robot seems to pick up the sensor values from the original robot,
>> rather than from its own sensors.]
>>
>> Thanks in advance,
>> --Mark Nelson
>>
>>
>> _______________________________________________
>> Squeakland mailing list
>> Squeakland at squeakland.org
>> http://squeakland.org/mailman/listinfo/squeakland
>>
>>
>
> _______________________________________________
> Squeakland mailing list
> Squeakland at squeakland.org
> http://squeakland.org/mailman/listinfo/squeakland
More information about the Squeakland
mailing list