[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 -