[Squeakland] Making a Copy of an eToy from a script and using the mouse pointer to activate an eToy script
karl
karl.ramberg at chello.se
Mon Nov 13 12:01:55 PST 2006
Offray Vladimir Luna Cárdenas skrev:
> Hey Scott!! :)
>
> Thanks for your quick answer and sorry for my late response.
>
> Scott Wallace escribió:
>
> [...]
>
>
>> When you execute "Car's copy", the result will be the creation of a
>> copy of Car (strictly speaking a "sibling", viz. a fellow instance of
>> the same class as Car.)
>>
>> However, if you don't *place* that copy somewhere, you won't see it.
>> The standard idiom for placing an object somewhere via script is to
>> tell the *container* in which you place it to "include" it.
>>
>> Here's a typical usage pattern:
>>
>>
>> ------------------------------------------------------------------------
>>
>>
>>
>> ------------------------------------------------------------------------------
>>
>>
>>
>
> This works pretty good. I use the world as a container and now I have a
> lot of stars in the wold. At the beginning I thought it was not working
> because all starts were copied over the original one, but then I
> realized what was happening. There is still something I don't know how
> to do: how can I send a message to a particular copy. Suppose I have
> copied a Car and I have a script for the original one to make the car
> go forward and now I wan to make the recent copy to use that script.
> There is some natural number in each of the copies' names. Can I use it
> as a reference for the copies scripts to enable them?
>
You have to keep a reference to the player.Assign it to a variable.
>>> Pdt: It seems that we're reaching some kind of stress point of the
>>> eToys. Would be nice to have the possibility to go from them to their
>>> code, but the scripts of the eToys seem to have only a code view, but is
>>> not usable for writing new code.
>>>
>> Hmm, well, etoy objects are first-class Smalltalk objects, and etoy
>> scripts are real, first-class Smalltalk methods, belonging to real,
>> first-class Smalltalk classes, and if you switch any script's Scriptor
>> to textual mode (by clicking on the checkbox in the Scriptor's
>> header,) you can enter any Smalltalk code you wish there.
>>
>
> [...]
>
>
>> Textual coding can actually be done using two kinds of scripts:
>>
>> First, as mentioned above, you can write textual code for any existing
>> "etoy script" that you see in a Viewer by switching its Scriptor to
>> textual mode via the checkbox.
>>
>
> Thanks. I had not notice this possibility because when I go from tile to
> code mode in the scriptor and change a parameter (for example increase
> "self forward: 5" to 10) with the script ticking I see no change and I
> hope some similar behavior as I had seen in the tile mode, in which a
> change in the parameter has an instantaneous response in the behavior
> of the object in the script changed was ticking. Today I probed pressing
> [Alt] + [d] and I see the changes. There is still a problem I can't
> figure out a work around. When I come back from code mode to tile mode
> in the scriptor the script is exactly the same, none of the changes made
> in code mode are stored. May be the problem is related on how the script
> behaves in tile and code modes and the user expecting a more
> similar/coherent behavior, and not with the possibilities of the eToys
> system.
>
You can only go from tile to script, not the other way around. Hopefully
some day it can be done.Karl
>
>> Secondly [and this is not so well known] you can open a conventional
>> Smalltalk browser on the class of an etoy "object", and using that
>> Browser you can not only see and edit the etoy scripts, you can also
>> add any other methods you wish, including methods with multiple
>> arguments (whereas etoy scripts are limited to 0 or 1 argument,)
>> mid-method returns, and many other things that you can't directly
>> obtain using tiles alone. To get such a Browser, in the Viewer's menu
>> choose "more..." and from the auxiliary menu that pops up, choose
>> "browse class."
>>
>
> On this point this is what I get:
>
> browser class
>
> There is a #guión1 (#script1) but I don't know how to change scripts
> code or add new scripts. Any pointer to the documentation?
>
>
>
>> A plausible practice is to use tile scripting for everything in a
>> project that *can* be readily done using tile scripts, then to
>> supplement this with conventional Smalltalk code in one or two places
>> where necessary.
>>
>>
> [...]
>
>> I'm not claiming that this is the ideal way to transition from e-toy
>> tile-scripting to full-scale Smalltalk, if that's what your goal is --
>> indeed, it may lead to false expectations; I just wanted to make sure
>> you're aware of the availability of these two ways of blending
>> tile-scripting with writing unrestricted Smalltalk code. It would be
>> interesting to hear of experiences people have had with this kind of
>> hybrid approach.
>>
>
> Yep, the idea is some kind of transition from e-toy tile-scripting to
> Smalltalk (may be not full scale yet, but with the idea of that scale in
> some moment of the process). I have bought the book "Squeak: learning
> with robots" from Steffane, because of its pedagogical advantages
> providing the robots as a way to "see" the effect of code (loops,
> conditionals, etc.), but others will come to Squeak from eToys and
> Bookmorphs (for interactive educational material), so making a bridge
> between them and Smalltalk would be a nice path to follow. I will keep
> you informed on the process of this approach ... and bothered with the
> questions it raise ;-)
>
>
>> Cheers,
>>
>> -- Scott
>>
>>
>
> Cheers also from the country of the birds (well the second one). Anytime
> you want come, you must be aware: mi casa es tu casa (my home is your home),
>
> Offray
>
> _______________________________________________
> Squeakland mailing list
> Squeakland at squeakland.org
> http://squeakland.org/mailman/listinfo/squeakland
>
>
karl
More information about the Squeakland
mailing list