Praktische Fragen zu EToys

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

Praktische Fragen zu EToys

Klaus Füller-4

Fragen zu EToys

    - Wie bekomme ich die Mausposition in einem Script?
    - Wie kann ich ein Skript triggern, wenn das Objekt gedreht wird?
    - Wie verhindert man einen Resize?
    - Wie kann man einen eigenen Morph-Typ dem Objekt-Manager zufügen?
    - Was macht man genau mit einem Skriptfenster?
    - Wie kann ich eigenes Vokabular definieren? Ich will einen Morph
      (z.B. "Koordinatensystem") definieren. Der soll "skalieren" u.ä.
      "verstehen"
    - Wie sorgt man dafür, dass Größenänderungen an die Submorphs
      weitergegeben werden?
    - Umgekehrt: Wie sorgt man dafür, dass ein Resize im Submorph an den
      Besitzer weitergegeben wird ODER wie sorgt man dafür, dass man einen
      Submorph nicht selektieren kann.
    - Wenn ich Morphs zusammensetze: Welche Koordinate verwende ich?
      Offensichtlich verwendet man in drawOn absolute Screenkoordinaten.
      Wenn ich aber mit addMorph einen Morph hinzufüge, erscheint dieser
      an einer 'position' relativ zur oberen linken Ecke des Morphs.

Fragen zu Squeak

    - Wie kann ich sauber meine eigene Arbeit so speichern, dass ich sie
      wieder in ein neues Image laden kann? Das betrifft eigene Klassen
      und Morphs.


Reply | Threaded
Open this post in threaded view
|

Re: Praktische Fragen zu EToys

Esther Mietzsch
Hallo Klaus,

Am Sunday 21 November 2004 22:48 schrieb Klaus Füller:

> Fragen zu EToys
>
>     - Wie bekomme ich die Mausposition in einem Script?
>     - Wie kann ich ein Skript triggern, wenn das Objekt gedreht wird?
>     - Wie verhindert man einen Resize?
>     - Wie kann man einen eigenen Morph-Typ dem Objekt-Manager zufügen?
>     - Was macht man genau mit einem Skriptfenster?
>     - Wie kann ich eigenes Vokabular definieren? Ich will einen Morph
>       (z.B. "Koordinatensystem") definieren. Der soll "skalieren" u.ä.
>       "verstehen"
>     - Wie sorgt man dafür, dass Größenänderungen an die Submorphs
>       weitergegeben werden?
>     - Umgekehrt: Wie sorgt man dafür, dass ein Resize im Submorph an den
>       Besitzer weitergegeben wird ODER wie sorgt man dafür, dass man einen
>       Submorph nicht selektieren kann.
>     - Wenn ich Morphs zusammensetze: Welche Koordinate verwende ich?
>       Offensichtlich verwendet man in drawOn absolute Screenkoordinaten.
>       Wenn ich aber mit addMorph einen Morph hinzufüge, erscheint dieser
>       an einer 'position' relativ zur oberen linken Ecke des Morphs.

Dazu scheint ja nun so spontan gar niemandem etwas einzufallen.
Mir jedenfalls fällt da auch nach Denken nichts ein.
>
> Fragen zu Squeak
>
>     - Wie kann ich sauber meine eigene Arbeit so speichern, dass ich sie
>       wieder in ein neues Image laden kann? Das betrifft eigene Klassen
>       und Morphs.

Geht das nicht ganz gut, wenn man ein Projekt speichert?

Gruß
Esther

Reply | Threaded
Open this post in threaded view
|

Re: Praktische Fragen zu EToys

Klaus Füller-4
Esther Mietzsch wrote:
> Hallo Klaus,
>
> Am Sunday 21 November 2004 22:48 schrieb Klaus Füller:
>
>>Fragen zu EToys
...
>>    - Wie kann ich eigenes Vokabular definieren? Ich will einen Morph
>>      (z.B. "Koordinatensystem") definieren. Der soll "skalieren" u.ä.
>>      "verstehen"
...
(Bitte schaut noch einmal am Ende dieser Mail. Ich begründe dort noch
einmal, warum ich eigenes Vokabular definieren will...)

Das ist die Kernfrage, ich kann sie nun genauer stellen:

Eine Morph-Klasse kommuniziert mit dem EToy-System über die
Klassenmethode #additionsToViewerCategories. Diese Methode gibt eine
Liste von Einträgen mit, wie sie im "Viewer" erscheinen sollen. Das
verstehe ich.

Allerdings gelingt es mit nicht, Änderungen an dieser Liste vorzunehmen.
Neueinträge erscheinen nicht im Viewer; Geänderte Einträge verschwinden
aus dem Viewer. Das hängt mit der Sprachunterstützung zusammen.
Neuerdings gibt es eine andere Möglichkeit, dass ein Morph über ein
"Vocabulary" (oder ist es ein "EToyVocabulary"?) irgendwie dem Viewer
sagt ... und da versiegt meine Intuition.

Ein Hinweis gibt es von Ned Konz in squeak-dev am 24.Juni 04. Ich
verstehe den zweiten Teil aber nicht richtig.

Zusammenfassung: Ich will einen Morph erfinden, der neue Einträge im
Viewer macht, die man in "Kacheln" verwenden kann, um Programme zu
schreiben. Ich möchte das in der / für die neuste Version schreiben,
wenn #additionsToViewerCategories veraltet ist, will ich es überhaupt
nicht verwenden.

Was will ich damit?

Mir ist immer noch nicht ganz klar, ob die Scripting-Umgebung in Squeak
dem Einstein-Spruch folgt "Make it as simple as possible *but not
simpler* . Mir ist nicht klar, wie ich beispielsweise eine Schleife
programmieren lassen kann. Beispielsweise könnte ich die Schülerinnen
Programme schreiben lassen, die Wertetabellen und Säulendiagramme von
Funktionen anzeigen.

HILFE!

klaus



Reply | Threaded
Open this post in threaded view
|

Re: Praktische Fragen zu EToys

Andreas Gerdes
Klaus,

ich glaube, was  additionsToViewer etc. angeht, bist du auf der
squeak-dev-Liste besser aufgehoben - du schreibst ja selbst, du willst
einen Morph erfinden...

Ich hab grad mal selbst experimentiert. Einer eigenen Morphklasse einen
Slot hinzuzufügen, ist kein Problem, einer bestehenden Klasse eine neue
Viewer-Kategorie, auch nicht, aber da dann einen Slot oder einen Befehl
hineinzubekommen, geht nicht, jedenfalls nicht beim SketchMorph.
Hm...

 > Das hängt mit der Sprachunterstützung zusammen.

Inwiefern? Was weißt du noch zu dem Thema?
Kann hier jemand mal den Begriff Vokabular/EToy-Vokabular etwas näher
erläutern?

Zu deiner letzten Mail:

 >- Wie bekomme ich die Mausposition in einem Script?
Playfield hat in der Viewer-Kategorie playfield die aktuellen
Mauskoordinaten.

 >- Wie kann ich ein Skript triggern, wenn das Objekt gedreht wird?

Indem du in seinem Owner (einem Spielfeld/Playfield) einen Test "Objekts
richtung ~= Objekts alteRichtung" einbaust? - wobei Objekts alteRichtung
eine Instanzvariable von Objekt ist - Instanzvariablen sind auch der
Schlüssel zur Schleifenprogrammierung.

 >- Wie verhindert man einen Resize?
Im Menü aller Morphe findest du "be locked/geschützt" und "resist being
picked up/verankert"

 >- Wie kann man einen eigenen Morph-Typ dem Objekt-Manager zufügen?

http://minnow.cc.gatech.edu/squeak/2998:
Add a class side method #descriptionForPartsBin (browse implementors).
This method returns a description of how to create and present a new
morph. If you want several different entries in the Objects Tool, you
can use #supplementaryPartsDescriptions.
Wirf auch einen Blick in die Kategorie Morphic-Demo.

 >- Was macht man genau mit einem Skriptfenster?*

ich glaub, es unterscheidet sich vom Spielfeld vor allem dadurch, dass
es eigene, *private* Stop-Step-Go buttons hat. So kannst du mehrere
unabhängige Skriptingbereiche in einem Projekt oder zb GeeMailMorph haben.

 >   - Wie sorgt man dafür, dass Größenänderungen an die Submorphs
 >     weitergegeben werden?
 >   - Umgekehrt: Wie sorgt man dafür, dass ein Resize im Submorph an den
 >     Besitzer weitergegeben wird ODER

Du musst wohl neue Morphklassen ableiten, die sich in ihrer Step-Methode
entsprechend verhalten.
Oder aber du befasst dich mit layoutPolicy/Tablelayouts (z.B. im Menü
eines Rechtecks, gibt ein Tutorial dazu auf Squeakmap), vielleicht
reicht das ja schon?


 >wie sorgt man dafür, dass man einen Submorph nicht selektieren kann.

Schwierig - selektieren von Morphs explizit zu verbieten... ist
irgendwie nicht squeaklike - ALLES in Squeak lässt sich selektieren,
inspizieren, kopieren -


 >- Wenn ich Morphs zusammensetze: Welche Koordinate verwende ich?
 >     Offensichtlich verwendet man in drawOn absolute Screenkoordinaten.
 >     Wenn ich aber mit addMorph einen Morph hinzufüge, erscheint dieser
 >     an einer 'position' relativ zur oberen linken Ecke des Morphs.

Das scheint nur so. Wenn du deinem Morph *keine* layoutPolicy zuweist
und ihn *vor* dem addMorph:xyz schon verschiebst, erscheint der neu
hinzugefügte xyz an 0/0 auf dem Screen.
Im Morph-Protokoll geometry findest du alles, was du für
relative/globale Koordinaten brauchst.

 >  - Wie kann ich eigenes Vokabular definieren? Ich will einen Morph
 >    (z.B. "Koordinatensystem") definieren. Der soll "skalieren" u.ä.
 >    "verstehen"

Zuerst mal geht's doch darum, eine *Message* "skalieren: faktor" zu
implementieren?

Schon mal Diego Gomez' Plotmorph probiert (bekommst du über
Weltmenü->Öffnen->SqueakMap-Packageloader)

Was hast du eigentlich vor?
Willst du mit EToy einen Graph-Editor bauen? KRASS...
Mich würd auch interessieren, wo, mit welcher Altersgruppe etc. du
Squeak einsetzt.

Viele Grüße
Andreas
       



Klaus Füller schrieb:

> Esther Mietzsch wrote:
>
>> Hallo Klaus,
>>
>> Am Sunday 21 November 2004 22:48 schrieb Klaus Füller:
>>
>>> Fragen zu EToys
>
> ...
>
>>>    - Wie kann ich eigenes Vokabular definieren? Ich will einen Morph
>>>      (z.B. "Koordinatensystem") definieren. Der soll "skalieren" u.ä.
>>>      "verstehen"
>
> ...
> (Bitte schaut noch einmal am Ende dieser Mail. Ich begründe dort noch
> einmal, warum ich eigenes Vokabular definieren will...)
>
> Das ist die Kernfrage, ich kann sie nun genauer stellen:
>
> Eine Morph-Klasse kommuniziert mit dem EToy-System über die
> Klassenmethode #additionsToViewerCategories. Diese Methode gibt eine
> Liste von Einträgen mit, wie sie im "Viewer" erscheinen sollen. Das
> verstehe ich.
>
> Allerdings gelingt es mit nicht, Änderungen an dieser Liste vorzunehmen.
> Neueinträge erscheinen nicht im Viewer; Geänderte Einträge verschwinden
> aus dem Viewer. Das hängt mit der Sprachunterstützung zusammen.
> Neuerdings gibt es eine andere Möglichkeit, dass ein Morph über ein
> "Vocabulary" (oder ist es ein "EToyVocabulary"?) irgendwie dem Viewer
> sagt ... und da versiegt meine Intuition.
>
> Ein Hinweis gibt es von Ned Konz in squeak-dev am 24.Juni 04. Ich
> verstehe den zweiten Teil aber nicht richtig.
>
> Zusammenfassung: Ich will einen Morph erfinden, der neue Einträge im
> Viewer macht, die man in "Kacheln" verwenden kann, um Programme zu
> schreiben. Ich möchte das in der / für die neuste Version schreiben,
> wenn #additionsToViewerCategories veraltet ist, will ich es überhaupt
> nicht verwenden.
>
> Was will ich damit?
>
> Mir ist immer noch nicht ganz klar, ob die Scripting-Umgebung in Squeak
> dem Einstein-Spruch folgt "Make it as simple as possible *but not
> simpler* . Mir ist nicht klar, wie ich beispielsweise eine Schleife
> programmieren lassen kann. Beispielsweise könnte ich die Schülerinnen
> Programme schreiben lassen, die Wertetabellen und Säulendiagramme von
> Funktionen anzeigen.
>
> HILFE!
>
> klaus
>
>
>

Reply | Threaded
Open this post in threaded view
|

Re: Praktische Fragen zu EToys

Klaus Füller-4
Andreas Gerdes wrote:

> Klaus,
>
> ich glaube, was  additionsToViewer etc. angeht, bist du auf der
> squeak-dev-Liste besser aufgehoben - du schreibst ja selbst, du willst
> einen Morph erfinden...
>
> Ich hab grad mal selbst experimentiert. Einer eigenen Morphklasse einen
> Slot hinzuzufügen, ist kein Problem, einer bestehenden Klasse eine neue
> Viewer-Kategorie, auch nicht, aber da dann einen Slot oder einen Befehl
> hineinzubekommen, geht nicht, jedenfalls nicht beim SketchMorph.
> Hm...
>
>  > Das hängt mit der Sprachunterstützung zusammen.
>
> Inwiefern? Was weißt du noch zu dem Thema?
> Kann hier jemand mal den Begriff Vokabular/EToy-Vokabular etwas näher
> erläutern?
Ich habe das aus dem Archiv von Squeak-dev:
http://lists.squeakfoundation.org/pipermail/squeak-dev/2002-June/040953.html
>
> Zu deiner letzten Mail:
>
>  >- Wie bekomme ich die Mausposition in einem Script?
> Playfield hat in der Viewer-Kategorie playfield die aktuellen
> Mauskoordinaten.
Klar! Das Playfield weiß, wo die Maus steht!
...
>
>  >   - Wie sorgt man dafür, dass Größenänderungen an die Submorphs
>  >     weitergegeben werden?
>  >   - Umgekehrt: Wie sorgt man dafür, dass ein Resize im Submorph an den
>  >     Besitzer weitergegeben wird ODER
>
> Du musst wohl neue Morphklassen ableiten, die sich in ihrer Step-Methode
> entsprechend verhalten.
Das habe ich inzwischen gemacht. Ich veranlasse bei den Kindern einen
entsprechenden resize
> Oder aber du befasst dich mit layoutPolicy/Tablelayouts (z.B. im Menü
> eines Rechtecks, gibt ein Tutorial dazu auf Squeakmap), vielleicht
> reicht das ja schon?
Das muss ich mir noch genauer anschauen.

>  >wie sorgt man dafür, dass man einen Submorph nicht selektieren kann.
>
> Schwierig - selektieren von Morphs explizit zu verbieten... ist
> irgendwie nicht squeaklike - ALLES in Squeak lässt sich selektieren,
> inspizieren, kopieren -
Das muss ich berücksichtigen. Ich habe aber herausgefunden, dass ich bei
dem eingebetteten Morph nur dafür sorgen muss, dass #containsPoint immer
false zurückgibt. Ich brauche das für eine Physik-Simulation. Dort sind
die Koordinatenachsen aneinander gekoppelt und man sollte eine Achse
nicht isoliert drehen können.

>
>
>  >- Wenn ich Morphs zusammensetze: Welche Koordinate verwende ich?
>  >     Offensichtlich verwendet man in drawOn absolute Screenkoordinaten.
>  >     Wenn ich aber mit addMorph einen Morph hinzufüge, erscheint dieser
>  >     an einer 'position' relativ zur oberen linken Ecke des Morphs.
>
> Das scheint nur so. Wenn du deinem Morph *keine* layoutPolicy zuweist
> und ihn *vor* dem addMorph:xyz schon verschiebst, erscheint der neu
> hinzugefügte xyz an 0/0 auf dem Screen.
> Im Morph-Protokoll geometry findest du alles, was du für
> relative/globale Koordinaten brauchst.
Danke!
>
>  >  - Wie kann ich eigenes Vokabular definieren? Ich will einen Morph
>  >    (z.B. "Koordinatensystem") definieren. Der soll "skalieren" u.ä.
>  >    "verstehen"
>
> Zuerst mal geht's doch darum, eine *Message* "skalieren: faktor" zu
> implementieren?
Das ist ja kein Problem. Ich kann den Morph leicht schreiben. Aber wie
"redet" der mit dem Player / mit dem Viewer?
>
> Schon mal Diego Gomez' Plotmorph probiert (bekommst du über
> Weltmenü->Öffnen->SqueakMap-Packageloader)
Danke für den Tipp
>
> Was hast du eigentlich vor?
> Willst du mit EToy einen Graph-Editor bauen? KRASS...
Eigentlich will ich Bausteine, die die Kinder zusammensetzen können, um
beispielsweiese Säulendiagramme, "Tortendiagramme", ... zu konstruieren.
Außerdem "riecht" Squeak danach, dass man hier eine gute
Geometriesoftware zusammenschreiben könnte.

Gerade eine Geometriesoftware darf nicht nur interaktiv sein. Die
Schüler müssen auch eine Konstruktion eintippen können, die vom System
dann ausgeführt wird.
> Mich würd auch interessieren, wo, mit welcher Altersgruppe etc. du
> Squeak einsetzt.
Ich habe das bereits in der 12 eingesetzt. Da haben wir "normal" in
einem Browser programmiert.  Jetzt will ich es in der 7 einsetzen in
einer Programmier-AG, in der viele Mädchen sind.

Viele der amerikanischen Beispiele sind mir zu simpel / zu sehr auf
Grundschulniveau. Ich fange (morgen oder am Mittwoch nächste Woche) mit
EToys an und verwende eine Auto-Simulation o.ä. Aber die Lerngruppe ist
(zwar chaotisch aber) sehr interessiert und die Kinder werden schnell
versuchen, mathematische Themen auf Squeak zu übertragen (ich bin auch
deren Mathematiklehrer). Das ist auch meine Absicht. Ich möchte, dass
sie sich in einem "Mathe-Land" bewegen und intuitiv lernen können.

Das bedeutet hier aber lernen auf höheren (PISA-) Niveaus. Es geht nicht
um Rechentrainer o.ä.; es geht darum, Proportionalität oder Funktionen
oder Statistik oder Geometrie zu "erfahren".

Die Beispiele, die ich auf Squeakfoundation etc finde, überzeugen mich
nicht immer. Sie enthalten vom Konzept her noch zu viel des gleichen
(zeichne einen Sketch und lasse ihn rumlaufen).


Reply | Threaded
Open this post in threaded view
|

RE: Praktische Fragen zu EToys

Christian Grune
Hallo Klaus,

> > Was hast du eigentlich vor?
> > Willst du mit EToy einen Graph-Editor bauen? KRASS...
> Eigentlich will ich Bausteine, die die Kinder zusammensetzen
> können, um beispielsweiese Säulendiagramme,
> "Tortendiagramme", ... zu konstruieren.
> Außerdem "riecht" Squeak danach, dass man hier eine gute
> Geometriesoftware zusammenschreiben könnte.
>
> Gerade eine Geometriesoftware darf nicht nur interaktiv sein.
> Die Schüler müssen auch eine Konstruktion eintippen können,
> die vom System dann ausgeführt wird.

Das klingt spannend - ich will mich an solche Dinge im nächsten Jahr wagen.
In Sachen Geometriesoftware bin ich bisher von geonext
(http://geonext.uni-bayreuth.de/) und Cinderella (http://www.cinderella.de)
inspiriert und ehrlich gesagt auch verwöhnt, weil das wirklich gute Sachen
sind.

Mich würde interessieren, wie Du da rangehst - und sicher auch Rita
Freudenberg, die so etwas in Schulen in Sachsen-Anhalt macht/plant.

Gruss, Christian Grune