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 -


Antwort per Email an