[Squeak-ev] FW: EToys-Fragen ...

Harald M. Müller harald_m_mueller at gmx.de
Sam Mai 28 13:57:59 UTC 2005


Hallo allerseits ... ich komme nicht richtig weiter mit meinen Fragen
unten - gibt's nicht jemand, der da was weiß? Oder soll ich die Fragen
lieber woanders stellen (englische Listen o.ä.)?
Danke!
Harald M.

 -----Original Message-----
From: 	Harald M. Müller [mailto:harald_m_mueller at gmx.de] 
Sent:	Saturday, May 21, 2005 7:28 PM
To:	'Squeak in Germany / Squeak in Deutschland'
Subject:	EToys-Fragen ...

Hallo -

nach längerem "Durchhänger" wollen wir wieder mit EToys weitermachen -
aber was ich jetzt dringend will, um dir Kinderprojekte sinnvoll
weiterzutreiben, ist mehrerlei:

(a) Ich verstehe viele der Skripts noch nicht. Z.B. gibt es da
"overlaps". Dort bringe ich es erstens nicht fertig, dass ein Overlap
mit was anderem als "mir selbst" (demselben Morph) da drin steht - ich
habe alles mögliche draufgezogen, geklickt usw. - nichts ist passiert
:-( Bei mir steht z.B. immer "Zeichnungs berührt Zeichnung", und im Code
zeigt er mir das als "Zeichnung touchesA: Zeichnung".

(b) Dann gibt es da ein zweites vordefiniertes Skript namens "berührt".
Dort kann man rechts auch was reintun (wie? ;-) ). Aber hier ist im
Kommentar plötzlich von einem "Typ" die Rede: "Überprüft, ob ein Objekt
des angegebenen Typs berührt wird". Wie bekommen Objekte "Typen"? was
ist das?

(c) Skripts mit Parameter: Man kann ja einem Skript (maximal einen)
Parameter hinzufügen. Nach längerem Probieren habe ich es geschafft,
einen Parameter in einem Test zu verwenden - tatsächlich scheint hinter
EToys (und Squeak?) ein Typ-Konzept zu stehen, wonach Skripts nur
bestimmte Objekttypen akzeptieren. Wenn ich z.B. einen Parameter als
"Player" (wohl sowas wie ein "bewegter Morph in EToys") definiere, dann
kann ich ihn auf einen "berühre"-Test ziehen; wenn ich ihn als "Number"
lasse, passiert einfach gar nichts ... Ein Skript mit Parameter hat dann
kein "normal/angehalten/laufend" mehr, weil Squeak/Etoys den Parameter
nicht mit einem aktuellen Wert belegen kann. Damit nun bei einem
Berühren was passiert (z.B. "Quietsch"), habe ich das Skript in ein
"normales" parameterloses Skript getan, um es dort laufend auszuführen -
und bin wieder bei Problem a): Wie übergebe ich dort ein bekanntes
Objekt, das einen Namen hat, nun an das parametrisierte Skript???


Ein Ding ("Ball") soll folgendes Skript erhalten:

Test [ball] [berührt von oben] [ein Objekt der Art Ziegel]
	Ja	[balls Richtung] <- ... // kein Problem
		[getroffenes Objekt] [] 

Dazu brauche ich:
(d) Neue Tests schreiben - hier "berührt von oben". Dazu gibt es zwei
Möglichkeiten - beide will ich verstehen:
(d.1) Auf EToys-Level ein parametrisiertes Skript schreiben - aber nun
muss das Skript nicht nur "tun", sondern auch etwas zurückgeben, nämlich
true/false. Wie geht das? [das ist sinnvoll, um den Kindern das
Schreiben eigener Tests beizubringen - "functional decomposition",
"abstraction", "modularization", "conceptualization", ...]

(d.2) Auf Squeak-Level eine neue Methode schreiben. Dazu müsste dann
wohl eine neue "Kategorie" bei den Skripts erscheinen. Ich habe den
Slider/Regler einmal mit Browsern abgesucht, woher diese zusätzliche
Kategorie kommt und wie man da die Einträge hineinbekommt (beim Slider:
"Schiebers Breite", "Schiebers Farbe", "Schiebers Abrunden", "Schiebers
Reglerwert", ... "Schiebers Absteigend"). Ich habe nichts gefunden :-(
[das ist sinnvoll, um relativ komplexe und mächtige Abstraktionen, die
aber einer Art von Objekten "natürlicherweise zukommen", von vorneherein
anzubieten.]

(e) Eine generische Prüfung "ein Objekt der Art Ziegel". Dazu vielleicht
zuerst die Frage (g) unten lesen - dann ist das vielleicht klarer: Wenn
ich die 15 "Klone" erzeugt habe, will ich fragen können, ob unser Ball
einen der Klone getroffen hat (eine Möglichkeit dafür wäre, den Klonen
eine bestimmte Farbe zu geben - das wollen wir aber nicht, weil später
die Farben verschiedenen Punktewerte bedeuten sollen; das generelle
"Abprallverhalten" soll aber immer das gleiche sein).

(f) Ich möchte, dass das Objekt, auf das die Prüfung "ein Objekt der Art
Ziegel" zugeschlagen hat, dann zugreifbar ist, weil ich dieses Objekt
löschen/umbringen/killen/zum Verschwinden bringen will.

(g) Ich will die Kinder ein Skript erstellen lassen (nicht in Smalltalk
programmieren!), dass von einem vorhandenen Ding ("Ziegel") z.B. 15
Kopien zieht und diese in einem 3x5-Raster anordnet. Geht das überhaupt
sinnvoll? (wahrscheinlich würde es über eine Rekursion mit einem
numerischen Parameter gehen - aber das ist wirklich nicht das, was ich
momentan machen möchte ... ...).
[Das Skript soll dann hinter einen "Start-Button" gelegt werden, der
auch den Ball mit einer zufälligen Geschwindigkeit und Richtung starten
lässt].

(h) Vorletztens muss ich gestehen, dass ich zu EToys kaum Doku finde -
im Squeak-Wiki wird auf squeakland.org verwiesen, dort ist aber kaum was
zu finden außer Beispielen, die mit den vorhandenen Funktionen
auskommen. Oder suche ich an der falschen Stelle?

(i) Und zuletzt bin ich schon wieder böse geworden auf den falschen
Ausdrucksparser/generator - was ist da der Stand? Vor einem halben Jahr
hieß es, dass in Amerika eine Neuimplementierung von EToys passiert,
viel besser und ordentlicher als die aktuelle - gibt's da schon was?

Besten Dank!
Harald M. Müller


-------------- nächster Teil --------------
Ein Dateianhang mit HTML-Daten wurde abgetrennt...
URL: http://lists.squeakfoundation.org/pipermail/squeak-ev/attachments/20050528/c4466ac8/attachment.htm