[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