[Squeak-ev] 15 Puzzle in EtoysLecture.pr

Bert Freudenberg bert at freudenbergs.de
Fre Apr 4 10:08:02 UTC 2008


On 04.04.2008, at 00:14, Markus Gälli wrote:
> Hallo Uwe
>
>>
>> ich brüte jetzt schon den halben Tag über deinem '15 Puzzle'.
>> http://www.emergent.de/pub/smalltalk/squeak/projects/EtoysLecture.pr

Oh oh. Das ist die Hohe Schule der Etoyskunst :)

>> Folgende Frage: Sowohl der äußere Rahmen als auch die inneren Felder
>> sind vom Typ 'Behälter'. Außerdem besitzt jedes 'innere Feld' eine  
>> Innschrift
>> (außer dem leeren Feld) und sind Schwesterinstanzen mit dem  
>> gleichen Skript.
>> Woher bekommt jedes Feld seine wechselnden Innschriften also Zahlen?
>
> TextMorph in inneres Feld, den Text mit "1" ersetzen (man kann dann  
> noch Spass haben mit dem Zentrieren dieser Zahl), den inneren Feld  
> Behälter in den äusseren Rahmen packen, ne runde Ecke geben (den  
> Textmorph auf "geschützt" stellen)  und dann 15 sogenannte  
> Schwesterinstanzen des inneren Felds anlegen. Diese landen so auch  
> im äusseren Rahmen.
> Natürlich hab ich dann ncoh 15 mal die "1" dastehen, die kann man  
> dann entweder "Hand am Arm" anpassen, oder mit dem Inspektor auf das  
> äussere Feld (Programmieren->Morf (autsch! Sollte demnächst einfach  
> Objekt heissen) erforschen) und ein wenig Smalltalk-Magie von 1-16  
> bringen:
>
> self submorphs withIndexDo: [:each :index | each submorphs first  
> newContents: index asString]
> ("self" bezieht sich in diesem "Forscher" (a.k. Explorer, ein  
> mächtiger Inspektor) damit eben auf das äussere Feld)
> Die Zahl der 16. Zelle dann wieder löschen, dort muss ja Platz sein.

Wobei der "Programmieren"-Haloknauf in der neuen Etoys-Version  
standardmäßig nicht angezeigt wird. Man kann das aber auch über die  
"Elementnummer" (ehemals "Eignerindex") skripten (oder eben 15 Zahlen  
tippen).

- Bert -