This is a read-only archive of the old Scratch 1.x Forums.
Try searching the current Scratch discussion forums.

#1 2013-02-18 08:18:01

willie_the_pimpf
New Scratcher
Registered: 2013-01-25
Posts: 54

Liste - Listen - Array for Dummies

Also Arrays sind mir grundsätzlich nicht unbekannt. Bei Scratch habe ich allerdings damit so meine Probleme.
Noch vorweg: Ich hab zu Array und Listen schon das Wiki durch und mir einige Projekte angeschaut. Das hilft nichts.
Es geht mir schlicht darum, zum Beispiel Karten auszulegen. Es gibt nur zwei Bilder bzw. Kostüme. Eins weiß (mal genannt "1"), eins schwarz (mal genannt "0").
Dazu teile ich die Scratchbühne in eine 3x3 Liste auf. Also 9 Felder.
Die 9 Felder sollen dann mit 2 Kostümen versehen und zu einem Bild werden.

Siehe Beispiel einer einfachen "Welt":
http://imageshack.us/photo/my-images/407/welt1.jpg/

Meine Liste (Array) würde nach meinem Verständnis so aussehen.
myArray = newArray [1,1,1,1,1,0,0,0,0]

Untereinander geschrieben kann man das Bild schon fast sehen:
[1,1,1,
1,1,0,
0,0,0]

So in der Art ist mir das bekannt. Wie würde das in Scratch aussehen? Das ist mir bisher relativ schleierhaft.

Danke
Willie

Offline

 

#2 2013-02-18 09:35:33

Dadiwiki
Scratcher
Registered: 2012-05-08
Posts: 100+

Re: Liste - Listen - Array for Dummies

Hallo willie_the_pimpf,

Arrays erstellt man im Bereich "Listen". Um auf dein Beispiel einzugehen könntest du nun diese Programmierung in einem beliebigen Objekt einfügen.

Code:

Wenn grüne Fahne angeklickt
entferne alles aus Liste [Name der Liste]
Füge (1) zur Liste [Name der Liste] hinzu
Füge (1) zur Liste [Name der Liste] hinzu
Füge (1) zur Liste [Name der Liste] hinzu
Füge (1) zur Liste [Name der Liste] hinzu
Füge (1) zur Liste [Name der Liste] hinzu
Füge (0) zur Liste [Name der Liste] hinzu
Füge (0) zur Liste [Name der Liste] hinzu
Füge (0) zur Liste [Name der Liste] hinzu
Füge (0) zur Liste [Name der Liste] hinzu

So werden die Zahlen in die Liste eingefügt. du kannst sie natürlich auch manuell über das + unten links an der Liste einfügen. Nun wird diese Programmierung in jedes der Karten hinzugefügt:

Code:

Wenn grüne Fahne angeklickt
wiederhole fortlaufend
ziehe Kostüm ((1) Element von Liste + (1))

Das Element der Liste wird auf die Nummer des Kärtchens gesetzt. Und das + 1 wird benötigt da es kein Nulltes Kostüm gibt so ist 0=1 und 1=2. So wird das Kostüm auf das Nummer der Karte Element der Liste + 1 gesetzt.

Ich hoffe ich konnte dir helfen  wink

Last edited by Dadiwiki (2013-02-18 09:38:18)

Offline

 

#3 2013-02-18 11:12:29

willie_the_pimpf
New Scratcher
Registered: 2013-01-25
Posts: 54

Re: Liste - Listen - Array for Dummies

Jaaaaa, das bringt mich der Sache schon näher.

Bis jetzt hatte ich die Liste tatsächlich so geschrieben: http://imageshack.us/photo/my-images/189/testlbf.jpg/
Gut das war dann falsch ^^ Alles in eine neue Zeile.

Wenn ich also jetzt alles per Fensterchen eingabe brauchte ich, so wie ich das verstehe die 9 Zeilen/Blockzeilen nicht!?

Code:

Füge (1) zur Liste [Name der Liste] hinzu

Stehen ja dann schon in der Liste.
Sinnvoll wäre das scheinbar - weiß nicht ob ich richtig liege, bitte verbessern - wenn ich die Welt nach Leveln verändere. Beispiel (einfachheithalber mit 1 Zeile, 2 Spalten):

Level 1

Code:

Wenn Level = 1
entferne alles aus Liste [Name der Liste]
Füge (1) zur Liste [Name der Liste] hinzu
Füge (0) zur Liste [Name der Liste] hinzu

Level 2:

Code:

Wenn Level = 2
entferne alles aus Liste [Name der Liste]
Füge (0) zur Liste [Name der Liste] hinzu
Füge (1) zur Liste [Name der Liste] hinzu

Nun tut sich aber noch nichts. Die Karten müßen ja ausgelegt werden (Tile based Games).
WENN 3 nebeneinander liegen, DANN neue Zeile.
WENN 3 Zeilen voll, DANN stop.
Bisher sehe ich ja nur immer nur eine Karte, die liegt schon durchs importieren dort rum wo sie eigentlich nicht hin soll, und das Arrayfenster auf der Bühne flackert bissl. da könnte ich nochmal einen Hinweis vertragen.

Danke
Willie

Offline

 

#4 2013-02-18 14:09:44

willie_the_pimpf
New Scratcher
Registered: 2013-01-25
Posts: 54

Re: Liste - Listen - Array for Dummies

Gut das Array auslegen in seiner simpelsten Form, d bleib ich dran, aber ich denke in der Form wie ich es gedacht habe hat es sich erledigt. Bin mir noch nicht ganz sicher, aber es scheint mir so.

Ich hab nun bei Scratch so ein Objekt mehrmals auf der X-Richtung kopiert und mein Männeken fällt bei allen durch, außer beim letzten Objekt. Die anderen, vorherigen sind wohl nur Malspuren und werden nicht als "feste" Objekte erkannt.

Insofern bräuchte ich in meiner Scratch Bibliothek für 20 Steine entlang X auch 20 - gleiche -Bilder!?
Seh ich das richtig?
Dann kann ich eigentlich auch den Boden für jedes Level direkt ausmalen. Spar ich mir doch Arbeit fürs Array? Erhöh einfach die Variable des Level und lad dann (damit) das nächste Kostüm/Welt. Nix mit Kacheln. das wöre ja dann nur eine Kür, aber irgendwie nutzlos.

Falls ich hier wo Fehler mach beim denken bitte Bescheid sagen  smile

Danke und Gruß
Willie

PS: Ich denk wohl zu sehr in Flash, dort kann man Objekt beliebig oft kopieren und zu eigenständigen Objekten machen.

Offline

 

#5 2013-02-19 08:21:28

Dadiwiki
Scratcher
Registered: 2012-05-08
Posts: 100+

Re: Liste - Listen - Array for Dummies

Also ich verstehe das jetzt so als willst du den ganzen Boden ausfüllen und ein Männchen darauf laufen lassen. Dann wäre es ja auch eigentlich einfacher die Bühne, also die Kostüme des Hintergrundes, für jedes Level neu zu malen und das Kostüm des Hintergrundes auf die Variable Level zu setzen. So bräuchte man ja gar keine Arrays oder Listen. Falls ich das jetzt falsch verstehe könntest du ja mal dein Projekt hochladen.

Offline

 

#6 2013-02-19 09:00:10

willie_the_pimpf
New Scratcher
Registered: 2013-01-25
Posts: 54

Re: Liste - Listen - Array for Dummies

Dadiwiki wrote:

Also ich verstehe das jetzt so als willst du den ganzen Boden ausfüllen und ein Männchen darauf laufen lassen.

Genau! Im Falle von Malspuren/Stamps fällt das Männlein ja durch alle durch, bis auf das letzte Objekt, denn das wird ja als Original "Objekt" abgelegt.

Dadiwiki wrote:

Dann wäre es ja auch eigentlich einfacher die Bühne, also die Kostüme des Hintergrundes, für jedes Level neu zu malen und das Kostüm des Hintergrundes auf die Variable Level zu setzen. So bräuchte man ja gar keine Arrays oder Listen. Falls ich das jetzt falsch verstehe könntest du ja mal dein Projekt hochladen.

Das hast du richtig verstanden.
Das ist auch soweit okay für mich. Die Sprite-Elemente "male" ich sowieso extern, dann kann ich sie auch gleich in Größe der Bühne arrangieren/als Map anlegen. Unter Umständen macht das die Scratchdatei natürlich größer.

KÖNNTE man die Stamps begehbar machen, wäre ein Array natürlich platzsparend weil ich nur die Liste brauche und 2 Sprites (einen für Gras, der andere als Begrenzung für Mauer(n))

Ich finde gerade die Quelle nicht wieder, ich glaub es war im Wiki!? Dort stand das sich das aber bei 2.0 ändern soll. Also Stamps begehbar gemacht werden können. Ich fänd das extrem sinnvoll. "Tile based Games" aus einem Array aufgebaut, sind ja immer und überall Thema. Standard sozusagen.

Gut aber bis dahin werde ich Kostume wechseln, kein Problem.
Projekt hab ich leider noch nicht wirklich, das ist alles nur Stückwerk bisher. Tests (WalkCycles, Counter, Timer, Feinde, Hindernisse) usw, die dann später zusammen gefügt werden.
...sollen.   smile

Danke nochmal für die Bestätigung,so weiß ich endgültig das ich nicht falsch lag!
Grüße
Willie

Offline

 

#7 2013-02-19 09:14:43

willie_the_pimpf
New Scratcher
Registered: 2013-01-25
Posts: 54

Re: Liste - Listen - Array for Dummies

willie_the_pimpf wrote:

Ich finde gerade die Quelle nicht wieder, ich glaub es war im Wiki!? Dort stand das sich das aber bei 2.0 ändern soll. Also Stamps begehbar gemacht werden können. Ich fänd das extrem sinnvoll. "Tile based Games" aus einem Array aufgebaut, sind ja immer und überall Thema. Standard sozusagen.

Da ich als Beginner meine Posts scheinbar nicht editieren kann muß ich mich selbst zitieren ^^

Ich habe mich geirrt! Die Veränderung zu Stamps in 2.0 betraf wohl einen Bug in 2.0 prealpha, der behoben wurde.

Nun schade. Bleibt das also gültig: http://wiki.scratch.mit.edu/wiki/Stamps

Willie

Offline

 

#8 2013-02-19 13:09:50

fabius
Scratcher
Registered: 2011-09-11
Posts: 100+

Re: Liste - Listen - Array for Dummies

willie_the_pimpf wrote:

willie_the_pimpf wrote:

Ich finde gerade die Quelle nicht wieder, ich glaub es war im Wiki!? Dort stand das sich das aber bei 2.0 ändern soll. Also Stamps begehbar gemacht werden können. Ich fänd das extrem sinnvoll. "Tile based Games" aus einem Array aufgebaut, sind ja immer und überall Thema. Standard sozusagen.

Da ich als Beginner meine Posts scheinbar nicht editieren kann muß ich mich selbst zitieren ^^

Ich habe mich geirrt! Die Veränderung zu Stamps in 2.0 betraf wohl einen Bug in 2.0 prealpha, der behoben wurde.

Nun schade. Bleibt das also gültig: http://wiki.scratch.mit.edu/wiki/Stamps

Willie

wenn ich das richtig verstehe,meinst du so etwas wie klone...
klone gibt's in 2.0 noch immer  wink

Offline

 

#9 2013-02-19 15:05:11

willie_the_pimpf
New Scratcher
Registered: 2013-01-25
Posts: 54

Re: Liste - Listen - Array for Dummies

Also ich bin jetzt sowieso leicht verwirrt von dem Thread...
Da ich nicht editieren konnte/kann steht da eigentlich was das der Diskussion nicht förderlich ist.

Okay mal egal. Das Array Problem als solches ist so gut wie gelöst. Auch wenn ich sie nicht anwenden kann,weil eben die Männekens durchsausen, bau ich schon eifrig Level damit ^^ Nur so, nebenbei, als Knobelaufgabe.

Jetzt irritiert mich aber:

fabius wrote:

...klone gibt's in 2.0 noch immer  wink

Wieso noch immer? Gibts Clone in 1.4?
Meines Wissens nicht! Nicht in meiner Version  big_smile
Hier steht das es das erst ab 2.0 geben wird: http://wiki.scratch.mit.edu/wiki/Cloning

Gruß
Willie

Offline

 

#10 2013-02-20 01:20:19

fabius
Scratcher
Registered: 2011-09-11
Posts: 100+

Re: Liste - Listen - Array for Dummies

willie_the_pimpf wrote:

Also ich bin jetzt sowieso leicht verwirrt von dem Thread...
Da ich nicht editieren konnte/kann steht da eigentlich was das der Diskussion nicht förderlich ist.

Okay mal egal. Das Array Problem als solches ist so gut wie gelöst. Auch wenn ich sie nicht anwenden kann,weil eben die Männekens durchsausen, bau ich schon eifrig Level damit ^^ Nur so, nebenbei, als Knobelaufgabe.

Jetzt irritiert mich aber:

fabius wrote:

...klone gibt's in 2.0 noch immer  wink

Wieso noch immer? Gibts Clone in 1.4?
Meines Wissens nicht! Nicht in meiner Version  big_smile
Hier steht das es das erst ab 2.0 geben wird: http://wiki.scratch.mit.edu/wiki/Cloning

Gruß
Willie

ich dchte du meinst mit dem stempel bug das klonen.

Offline

 

#11 2013-02-20 07:57:53

willie_the_pimpf
New Scratcher
Registered: 2013-01-25
Posts: 54

Re: Liste - Listen - Array for Dummies

@Fabius - ja das meinte ich wahrscheinlich (hab grad keine Zeit zum nachschauen) ........, war mein Irrtum und hat für Verwirrung gesorgt, sorry  sad

Ja, im Grunde ist der Thread leicht ausgeartet, auch durch Denkfehler und Irrtümer von mir (hatte mich verlesen, falsch überflogen) - ....wie gesagt hätte den Abschnitt auch gern wieder raus genommen, aber ich kann nicht editieren. Die Forumregeln machen mir leicht zu schaffen. Grobe Tippfehlerkann man nicht beseitigen, Gedankenblitze, Erleuchtungen kurz nach dem posten nicht ergänzen/editieren, BB-Code-Links nicht erlaubt usw. Ist echt Arbeit hier zu posten  big_smile

NEUSTART:
Also: Array. Der Umgang von Scratch mit Arrays scheint einfach, ...aber nach genauerem hinschauen doch mühselig bis kompliziert. Das mag für Spielereien mit Wörtern ganz nett sein, aber mir hat sich der Sinn, im klassischen Sinne,  letztendlich noch nicht erschlossen. Im klassischen Sinn wie ich es sonst wo anwende zumindest nicht.

Paradebeispiel: Tile based Games, siehe hier: http://www.tonypa.pri.ee/tbw/tut02.html

Very simple Array, very effective  wink
Ist eigentlich eine einfache Geschichte. Wenn mans mal drin hat, möchte man es nicht missen. Um so was ähnliches in Scratch hin zu bekommen sind tatsächlich endlos Scripte nötig. Wie Dadawiki schon schrieb geht es nur so (ich geh hier von einer Kachel/Kostum aus das 30x30Pixel hat):

Code:

Wenn grüne Fahne angeklickt
entferne alles aus Liste [Name der Liste]
Füge (1) zur Liste [Name der Liste] hinzu
Füge (1) zur Liste [Name der Liste] hinzu
Füge (1) zur Liste [Name der Liste] hinzu
Füge (1) zur Liste [Name der Liste] hinzu
Füge (1) zur Liste [Name der Liste] hinzu
Füge (0) zur Liste [Name der Liste] hinzu
Füge (0) zur Liste [Name der Liste] hinzu
Füge (0) zur Liste [Name der Liste] hinzu
Füge (0) zur Liste [Name der Liste] hinzu

Dann kann/könnte ich das auch gleich in "Klartext schreiben, dazu brauch ich kein Array:

Code:

Wenn grüne Fahne angeklickt
gehe x puls 30
hinterlasse Malspur
Ist Reihe1 größer als 15 dann y +30 und x= Startwert (also neue Reihe)
usw. usw. usw.

Nun hab ich zwar einen Weg gefunden ein Array, bzw. Malspuren auch in 1.4, begehbar zu machen!
Aber das ist leicht schräg und quer gedacht und ich find auch gar nicht Sinn der Sache. Mein Kid ist beispielsweise gerade 9 und hat nach 2 Tagen, nach der Beschreibung des Link (Tile based Games: http://www.tonypa.pri.ee/tbw/tut02.html) das Array schon verstanden (im Großen und Ganzen) und baut das in Flash FAST eigenständig, ich korrigiere dann nur eben bissl die Syntax.
In Scratch hat er (and Friends) keinen Bock drauf. In der gleichen Zeit hab ich das bei Scratch nicht verstanden UND muss mich noch um die Begehbarkeit der Klötze kümmern.
Mag sein das sich das in 2.0 ändert... Bis MINDESTENS dahin scheint mir aber der weitere Umgang mit Array sinnlos... Wenn es sich sowieso ändert durch Clone, macht jedes ältere Script und dessen Analyse keinen Sinn mehr  sad

Dabei war ich schon drauf und dran, in Flash als *.swf-Datei, einen Map-Editor zu schreiben. Aber nach dem ganzen Hier und Da, durchsickernden Informationen zu Scratch2.0 usw. hab ich das erstmal auf Eis gelegt.

Gut, meine Array funktionieren, sind auch BEGEHBAR (etwas tricky) in 1.4. Aber wie gesagt, ich kann das auch gleich im Klartext schreiben. Der Scriptaufwand und zeilenmäßig ist der gleiche. Klartext könnte sogar kleiner sein, müsste ich testen. Dafür hab ich aber dann endlos Objekte in der Bibliothek.

Wozu das Ganze überhaupt? Nun, ich hab hier zwei Dateien. Einmal Text und zwei mal Kostüme. Beides zusammen hat ca. 2,5Kb (Kilobyte). Die MAP als Text hat davon ca. 1 Kb. Bei Zehn Leveln macht das gerade mal max. 10 Kilo Text plus 2 Köstume = ca. 15Kb.

Kleine Map, transparentes GIF
http://imageshack.us/photo/my-images/546/maptransparentgif.gif/
Etwas größere Map Vollbild
http://imageshack.us/photo/my-images/577/tile1.gif/

Bau ich eine Map fertig in einem Grafikprogramm hat die erste (als trensparentes GIF), mit gaaaaanz wenig Pixel ca. 4Kb die etwas aufwändigere (Bild 2) hat schon 40 Kb. Mal 10 Leveln sind das schon 400Kb. Und "Bild2" ist noch nicht mal wirklich detailiert ausgearbeitet. Da geht noch einiges! Und dann ist man  schnell im Megabyte-Bereich  wink
Lange Rede kurzer Sinn, bin nur auf dem Sprung: Arrays in Scratch sind sch*****, wenn man die Unbegehbarkeit der Kopien mit zählt.
Ich lass das Thema erstmal ruhen bis 2.0 offiziell ist (Stichwort "Clone") und meld mich dann wieder, mit einem Tutorial dazu. Wenn 2.0 besser geeignet ist, ...was ich noch testen muss.

Bis dahin, befürchte ich aber fast, das mein Sohn (nur deswegen hab ich mit Scratch angefangen, ansonsten unterrichte ich Flash und 3D Blender, Cinama 4D usw.) und Freunde in Flash schon fortgeschritten sind und Scratch fast nicht mehr anwenden möchten  smile  Ich hatte angefangen Flash immer parallel zu demonstrieren um deutlich zu machen welchen Schreibaufwand man hat, aber mittlerweile schreiben sie schon fleißig selbst Flash-Scripte, vor allem die grafischen Vorteile, beliebige Bühnengröße, Möglichkeiten der Veröffentlichung (Flash-Player, EXE-Datei usw.) und und und schätzen sie sehr. Die sind schon sehr anspruchsvoll, spielen sie doch schon alle Galaxy-Life, Zombies, Stickman Varianten usw. Da sehen sie Scratch fast schon als Downgrade an. Klingt hart, ist aber leider so.

Ok, ich bleib dran. Ich bin ja selbst erst grad mal paar Tage dabei (und das nicht täglich). Zu gegebener Zeit werd ich mich mit Tuts (für ab 6-8 jährige) zurück melden. 2.0 muß ich jetzt noch abwarten, sonst macht das keinen wirklichen Sinn, weil meine Tuts bisher alle aufeinander aufbauen.

So richtig versteh ich die Politik und auch die (Fort-)Schritte vom Kindergarten Team nicht. Es gäbe so viele Baustellen in den Grundelementen von Scratch, aber ich finde nicht mal eine richtige Roadmap (To-Do-Liste) oder so, sondern nur den Thread "Suggestions", wo man gar nicht schreiben mag wegen der Einsilbigkeit des Teams. Man liest immer nur "is supported"....."coming with 2.0" Andere Arbeitsgruppen, bei z.B. "Blender" diskutieren und kollaborieren mehr mit den Communities.
However, ...ich schweife ab...  smile

Schöne Grüße und scratchen macht trotzdem Spaß!
(Wenn meinen Kiddies nicht mehr ganz so viel, da hat sich gerade eine Seniorengruppe (Einrichtung) gemeldet die gerne eine Einführung hätte... und ich hab durch das posten hier viel gelernt bzw. bin auf vieles gestoßen, das kann ich wuppen)
Willie

Offline

 

#12 2013-02-21 08:56:39

TM_
Scratcher
Registered: 2010-07-22
Posts: 500+

Re: Liste - Listen - Array for Dummies

Es gibt verschiedene Möglichkeiten Malspuren begehbar zu amchen:
1. die leichte Farbberührungsvariante.
Doch dabei muss der Boden eine einheitliche Farbe haben und diese Farbe darf sonst nirgendswo vorkommen.

2. Die Kollision wird mit den einzelenen Listen elementen erzeugt.
Schau dir mal in meinem Minecraft Projekt das Script des männchens an. Alles besteht aus malspuren, doch man kann trotzdem nicht durch wände gehen oder durchfallen, da das element in der liste nicht dem wert der "Luft" entspricht.

Außerdem  sind diese "Arrays" doch ganz nützlich. Das problem liegt ja eher an den Malspuren. Du musst deshalb einfahc die gewöhnlichen "fühlblöcke" vergessen und eigene Methoden entwickeln.

Ich habe zum Beispiel in Scratch 2.0 ein Towerdefense Game gemacht. Alle Türme und alle Gegner sind einfach nur Malspuren, doch trotzdem können die Türme auf die Gegner zielen und schießen un diese können dann auch eine kollision mit einem Projektil feststellen, obwohl alles Malspuren sind. Das funktioniert ja alles nur weil es diese Arrays gibt. Und wenn man weiß, wie man sie richtig einsetzt, sind sie ja doch sehr praktisch, vorallem da sie endlos sind und sich nicht auf Integer, double oder string beschränken.


http://scratch.mit.edu/static/projects/TM_/2323675_sm.pnghttp://scratch.mit.edu/static/projects/TM_/2822911_sm.pnghttp://scratch.mit.edu/static/projects/TM_/2489524_sm.png

Offline

 

#13 2013-02-23 05:45:12

willie_the_pimpf
New Scratcher
Registered: 2013-01-25
Posts: 54

Re: Liste - Listen - Array for Dummies

Der Sinn und Zweck von Arrays, sowie die Erleichterungen und Vorteile sind mir durchaus bewußt.

Genau darum ging es ja!

Vielleicht hab ich mich missverständlich ausgedrückt, .... Die Begehbarkeit war auch nicht PRIMÄR das Problem...

Aber egal es ist ja geklärt. Man muß es nehmen wie es ist  wink

Schönen Gruß
Willie

Offline

 

Board footer