Discuss Scratch

fuenf
Scratcher
44 posts

Studio: Schrift, Text, Strings, Listen

Bei allem Lob und wachsende Begeisterung für mein aktuelles Hobby Scratch:

Textfunktionen werden in Scratch ja ziemlich stiefmüttelich behandelt. Insbesondere fehlen mir die üblichen Stringfunktionen und eine dynamische Textein-/ausgabe. … OkOk … als pädagogisch ausgerichtete Programmiersprache bietet sie hier die minimalen Basisfunktionalität, um so einiges nach zu programmieren. Bei anspruchsvolleren Programmideen möchte man aber dennoch nicht gerade JEDES Rad neu erfinden müssen.

Aber Genial: Manche Lösungen engagierter Scratcher liegen ja schon zur Wiederverwendung vor. Habe zum Themen-Cluster Text eine Sammlung mit aktuellen Lösungsansätzen angelegt. Einige Fundstellen sind überaus nützlich, sehenswert und z.T überraschend tricky. Manches Projekt dürstet geradezu nach Beachtung durch Herzchen, Sternchen oder gar Remixing:

http://scratch.mit.edu/studios/407647/projects/

Viel Spass und es möge nützen …

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Collaboration in english: http://scratch.mit.edu/discuss/topic/38619/

Last edited by fuenf (May 12, 2014 08:19:43)

fuenf
Scratcher
44 posts

Studio: Schrift, Text, Strings, Listen

Kleine Übersicht zum Themen-Cluster 'Schrift, Text, Strings, Listen …'


Dynamische Textausgabe, Text-Engines
+ Standard: sage(), denke(), frage()
+ Textanzeige via Variablen und Listen
+ Schriftzeichen und Symbole als Kostüm stempeln
+ Zeichenausgabe via Stift
++ Plotterausgabe, Zeichen als Vektor definiert
++ Zeichen und Symbole als Bitmap definiert
+ Verwendung von Steuerzeichen im Ausgabetext! z.B CRLF=\n Textfarbe=\c(255,0,0)

Texteingabe
+ Unterscheidung von Groß- Kleinschreibung http://wiki.scratch-dach.info/wiki/Case_Sensing
+ Sondertasten erkennen http://scratch.mit.edu/projects/19204741

Zeichen und Symbole
+ Hack: Zeichencode über Kostümnamen identifizieren (ASCII-Liste) http://scratch.mit.edu/projects/2639962
+ Verwendung von Unicode-Symbolen
++ Unicodeblock U+2600 “256 verschiedene Symbole / Miscellaneous Symbols” in Liste importiert

Strings
+ Funktions-Sammlung http://scratch.mit.edu/projects/18838153/
+ Hack: Gross/Kleinschreibung mit Kostümen unterscheiden: http://scratch.mit.edu/discuss/topic/15324
+ String Hashing http://scratch.mit.edu/projects/2639962
+ Tipp: Listen zur Stringbearbeitung verwenden!
++ Listenwerte lassen sich schnell und komfortabel zu einem String zusammenführen String=Liste mit interessantem Verhalten:
+++ Liste von Einzelzeichen werden ohne Lehrzeichen zusammengeführt
+++ Liste von Stings werden mit Leerzeichen zusammengeführt (sobald mindest eine Zelle einen String der Länge > 1 enthält)

Listen http://wiki.scratch-dach.info/wiki/Listen
+ Listen sortieren
+ Datenstrukturen in Listen realisieren
++ Stack = Last in first out
++ mehrdimensionale Arrays
+++ Liste in Listen mit Trennzeichen z.B: a/b/c/d http://scratch.mit.edu/projects/18975708/
+++ mehrdimensionale Arrays mit Indexformel auf lineare Liste abbilden http://scratch.mit.edu/projects/10122815
+++ lokale Listen in Klons verwalten (Hack?) http://scratch.mit.edu/projects/17960850/
++ hierarchische Datenhaltung / Ordnerstruktur http://scratch.mit.edu/projects/12066786
+ Listenbasierter Computer

Konverter / Translator / Generator
+ Morsecode http://scratch.mit.edu/projects/780120
+ ASCII-Konverter http://scratch.mit.edu/projects/10667037
+ Scratch-HTML http://scratch.mit.edu/projects/20964954

Cloud-Daten
+ Wer darf?
+ No Chat!
+ No Listen

E-books! http://scratch.mit.edu/sttudios/260135

List based games =Games without sprites (back to the roots! ) Sammlung

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Was fehlt noch?

Last edited by fuenf (May 12, 2014 17:21:41)

TM_
Scratcher
1000+ posts

Studio: Schrift, Text, Strings, Listen

Bei Sonderzeichen erkennen könntest du das hier verlinken und zum Studio hinzufügen: Griffpatch's ASCII-Key-Detector
Sonst wüsste ich nicht was noch fehlt, scheint allees da zu sein
Samueldora
Scratcher
100+ posts

Studio: Schrift, Text, Strings, Listen

fuenf wrote:

Textfunktionen werden in Scratch ja ziemlich stiefmütterlich behandelt. Insbesondere fehlen mir die üblichen Stringfunktionen und eine dynamische Textein-/ausgabe. …


1. Du hast völlig recht!
2. Es ist Absicht!

Textfunktionen wie von Dir beschrieben habe ich auch immer vermisst in Scratch. Ich bin bekennender Text-Junkie! Hier und da konnte ich es mir auch nicht verkneifen, textorientiert zu scratchen und mir meinen kleinen Bedarf dafür selbst zu schreiben.

Aber ich bin der Meinung, dass Scratch genau solchen Text-Junkies mit Absicht Grenzen setzt. Und das ist auch gut so. Weil man damit gezwungen wird, grafikorientierter zu denken. Mit zu starker Textorientierung nutzt man Scratch sozusagen gegen den Strich. Genau wie es bequem ist, Präsentationen mit viel Text zu machen, einem die Leute dabei aber einschlafen, ist es bequem, mit viel Text zu programmieren, aber die Programme arbeiten damit nicht auf der eigentlichen Scratch-Ebene.

Ein Bild sagt mehr als tausend Worte, aber einen einfachen Satz in eine gute Animation umzusetzen, ist schwieriger, als ihn einfach hinzuschreiben. Genau für dieses Denken in nicht-perfekten, aber ansprechenden Bildern und Animationen ist Scratch ausgelegt.

Samueldora

P.S.: Dein Studio finde ich trotzdem Klasse und sehe mich darin auch immer wieder einmal um.
fuenf
Scratcher
44 posts

Studio: Schrift, Text, Strings, Listen

TM_ wrote:

Bei Sonderzeichen erkennen könntest du das hier verlinken und zum Studio hinzufügen: Griffpatch's ASCII-Key-Detector
Sonst wüsste ich nicht was noch fehlt, scheint allees da zu sein
Danke Dir, in der Sammlung hatte ich's schon. Ist ne nützliche Anwendung, die ich nun auch in der Übersicht verlinkt habe. Mehr von solchem …

Last edited by fuenf (May 12, 2014 17:29:47)

fuenf
Scratcher
44 posts

Studio: Schrift, Text, Strings, Listen

Samueldora wrote:

fuenf wrote:

Textfunktionen werden in Scratch ja ziemlich stiefmütterlich behandelt. Insbesondere fehlen mir die üblichen Stringfunktionen und eine dynamische Textein-/ausgabe. …

1. Du hast völlig recht!
2. Es ist Absicht!

OkOk … pädagogisch ausgerichtet eben.

Neben dem niederschwelligen Einstieg, und der intuitive Zugang zu aktuellen Techniken (Klones, Parallelverarbeitung usw) ist Scratch für mich einfach ein hervorragendes Ad-Hoc-Werkzeug um ‘mal eben’ was zu visualisieren … sich selbst oder dem Nächsten. Als Denk- und Vorstellungshilfe sozusagen.

Eine schöne Text-Engine modular und skalierbar - danach stünde derzeit mein Sinn. Es wurde ja, wie ich feststellen durfte, schon Tolles vorgelegt. Das muss nicht zwangsläufig in Textwüsten ausarten. Auch Grafik und Klingeling kann öde werden, wenn das gewisse Etwas fehlt.

Da einige Möglichkeiten ausgebremst sind (was unbestritten die erfrischende Leichtigkeit von Scratch aus macht) ist es gut zu wissen, wo man auf nützliche Vorarbeiten von Vorgängern aufbauen kann. Diese zu recherieren und ‘griffbereit’ zu verlinken, darum geht es mir.

Also Thema Text, String, Zeichen und Symbole - es freut mich wenn es auch anderen nützt.

Last edited by fuenf (May 12, 2014 18:13:48)

forth
Scratcher
15 posts

Studio: Schrift, Text, Strings, Listen

forth
Scratcher
15 posts

Studio: Schrift, Text, Strings, Listen

Wie ein 2-dimensionales Array auf eine lineare Liste abbilden?
broadcast [HowTo: 2D-Array To List?] and wait

Lösung_1: 2d array based on ½*(n+m-2)*(n+m-1)+n: http://scratch.mit.edu/projects/1807313 von @roijac Mai 2011

Ein reizvoller Ansatz, erfordert aber überflüssige Leerfelder, es werden mindestens (n+1)² Felder benötigt. Z.B. (4+1)²=25 für 4 Zeilen, 4 Spalten
Schade, weil im Beispiel die Liste nur mit n² (z.B. 4²=16) Feldern initialisiert ist, so gehen Feldwerte verloren. Mit wenigen Handgriffen ließe sich immerhin aus dem Fix-Array ein zuverlässiges dynamisches Array basteln, das bei Bedarf mit den Arrayparametern wächst (just in time):
repeat until <not < (index) > (length of (myList))>>       
add [-leer-] to (myList)
end
replace item (last) of (myList) with (myValue)

~~~~~~~~~~~~~~~~~~~~~~~~~~~
2D-Arrays können viele Anwendungen vereinfachen. Mal schau'n, vielleicht hat schon längst wer die passende Formel bei der Hand …

Last edited by forth (May 14, 2014 15:15:12)

koDoz
Scratcher
42 posts

Studio: Schrift, Text, Strings, Listen

Scratch-Listen sortieren - siehe Studio Sorting

Last edited by koDoz (May 13, 2014 20:53:55)

gabriel6803
New Scratcher
1 post

Studio: Schrift, Text, Strings, Listen

hi
forth
Scratcher
15 posts

Studio: Schrift, Text, Strings, Listen

gabriel6803 wrote:

hi
Hi zurück, und Willkommen auf Scratch!
forth
Scratcher
15 posts

Studio: Schrift, Text, Strings, Listen

forth wrote:

Wie ein 2-dimensionales Array auf eine lineare Liste abbilden?
broadcast [HowTo: 2D-Array To List?] and wait

Lösung_2: @Zro716 schlägt am 14.5.2014 http://scratch.mit.edu/discuss/topic/38798/ diese Formel vor:

  • index = a + ((a-size * (b-1)) * ((a-size * b-size) * (c-1)))

Pro: Schön, das hier sogar schon in Richtung 3D-Arrays gedacht wird. Werde ich gleich mal ausprobieren.

Contra: Vorab, A-size, b-size usw weisen auf ein Fix-Array hin, das vor der Verwendung komplett initialisiert werden muss. Das kostet bereits beim Programmstart Zeit und erfordert besonders bei höherdimensionalen Arrays sorgfältige Kalkulation des tatsächlichen Datenbedarfs. Z.B. ein 3D-Array 100*100*100 benötigt bereits 1 Millionen Speicherzellen. Leicht blockiert man so wertvollen Speicher der dann wohlmöglich woanders fehlt.

Bei Scratch bevorzuge Ich letztendlich eine dynamische Lösung, die Listenfelder erst bei Bedarf anlegt. Das macht die Formel leider schwieriger …


Last edited by forth (May 14, 2014 10:24:50)

forth
Scratcher
15 posts

Studio: Schrift, Text, Strings, Listen

forth wrote:

Wie ein 2-dimensionales Array auf eine lineare Liste abbilden?
broadcast [HowTo: 2D-Array To List?] and wait

Lösung_3: Naja, erst mal nur ein Ansatz:

Listen-Index ermitteln für ein dynamisches 2D-Array nach Zwiebelschalenprinzip

Spalten: 1 | 2 | 3 | 4 | 5 | …
———————————————
Zeile 1 1 | 2 | 5 | 10 | …
——————- | | |
Zeile 2 3 . 4 | 6 | 11 | …
————————- | |
Zeile 3 7 . 8 . 9 | 12 | …
——————————- |
Zeile 4 13 . 14 . 15 . 16 | …
————————————-
Zeile 5 .. . .. . .. . .. . 25 = Listenindex für (Zeile=5,Spalte=5)

Die Feldwerte des Arrays(Zeile, Spalte) werden danach in der Scratch-Liste in dieser Reihenfolge gespeichert:

Nr Listenelementes: 1 : 2 3 4 : 5 6 7 8 9 : 10 11 12 13 14 15 16 : …
Array-Index-2D (1,1) : (1,2) (2,1) (2,2) : (1,3) (2,3) (3,1) (3,2) (3,3) : (1,4) (2,4) (3,4) (4,1) (4,2) (4,3) (4,4) : …


Fallunterscheidung für Ermittlung Listenindex:
  • wenn: Zeile = Spalte –> Index = Zeile²

    1 2 3 4 5
    ———————————————
    1 1 2 5 10 …
    2 3 4 6 11 …
    3 7 8 9 12 …
    4 13 14 15 16
    5 … … … … 25

  • wenn: Zeile < Spalte –> Index = (Spalte-1)² + Zeile

    1 2 3 4 5
    ———————————————
    1 1 2 5 10
    2 3 4 6 11
    3 7 8 9 12
    4 13 14 15 16
    5 … … … … 25

  • wenn: Zeile > Spalte –> Index = Zeile² - (Zeile - Spalte) = Zeile² - Zeile + Spalte

    (2,1) -> 3 = 4 - 1 = Zeile² - (Zeile - Spalte)
    (3,1) -> 7 = 9 - 2 = Zeile² - (Zeile - Spalte)
    (3,2) -> 8 = 9 - 1 = Zeile² - (Zeile - Spalte)
    (4,1) -> 13 = 16 - 3 = Zeile² - (Zeile - Spalte)
    (4,2) -> 14 = 16 - 2 = Zeile² - (Zeile - Spalte)
    (4,3) -> 15 = 16 - 1 = Zeile² - (Zeile - Spalte)

Für die Umsetzung in Scratch läßt sich das etwas vereinfachen:
if <(z) < (s)> then   
set (i) to (((z)*(z))-((z)-(s)))
else
set (i) to ((((s)-(1))*((s)-(1)))+(z))
end


Aaaaber, glaub nix, was Du nicht selber getestet hast: …….

Last edited by forth (May 16, 2014 05:32:32)

fuenf
Scratcher
44 posts

Studio: Schrift, Text, Strings, Listen

forth wrote:

Aaaaber, glaub nix, was Du nicht selber getestet hast: …….

OK, hab dazu eine kleine Anwendung gemacht: Dynamisches 2D-Array


Last edited by fuenf (Sept. 2, 2016 18:11:17)

forth
Scratcher
15 posts

Studio: Schrift, Text, Strings, Listen

fuenf wrote:

forth wrote:

Aaaaber, glaub nix, was Du nicht selber getestet hast: …….

OK, hab dazu eine kleine Anwendung gemacht: Dynamisches 2D-Array


Habe noch einen drauf gesetzt: Dynamisches 2D-Array mit 0-Option
- das selbe Prinzip, aber mit 0-Option. Wenn die Option True ist, dann darf Zeile und/oder Spalte wie in einigen anderen Programmen 0 sein.
Manche Algorithmen lassen sich damit leichter implementieren.

Definiere Array (Zeile) (Spalte) = (Wert) <0-Option>

Last edited by forth (Sept. 6, 2016 12:21:49)

chromer4
New Scratcher
5 posts

Studio: Schrift, Text, Strings, Listen

Man sollte Scratch verbessern.
Arnie1_0
Scratcher
100+ posts

Studio: Schrift, Text, Strings, Listen

fuenf wrote:

Kleine Übersicht zum Themen-Cluster 'Schrift, Text, Strings, Listen …'


Dynamische Textausgabe, Text-Engines
+ Standard: sage(), denke(), frage()
+ Textanzeige via Variablen und Listen
+ Schriftzeichen und Symbole als Kostüm stempeln
+ Zeichenausgabe via Stift
++ Plotterausgabe, Zeichen als Vektor definiert
++ Zeichen und Symbole als Bitmap definiert
+ Verwendung von Steuerzeichen im Ausgabetext! z.B CRLF=\n Textfarbe=\c(255,0,0)

Texteingabe
+ Unterscheidung von Groß- Kleinschreibung http://wiki.scratch-dach.info/wiki/Case_Sensing
+ Sondertasten erkennen http://scratch.mit.edu/projects/19204741

Zeichen und Symbole
+ Hack: Zeichencode über Kostümnamen identifizieren (ASCII-Liste) http://scratch.mit.edu/projects/2639962
+ Verwendung von Unicode-Symbolen
++ Unicodeblock U+2600 “256 verschiedene Symbole / Miscellaneous Symbols” in Liste importiert

Strings
+ Funktions-Sammlung http://scratch.mit.edu/projects/18838153/
+ Hack: Gross/Kleinschreibung mit Kostümen unterscheiden: http://scratch.mit.edu/discuss/topic/15324
+ String Hashing http://scratch.mit.edu/projects/2639962
+ Tipp: Listen zur Stringbearbeitung verwenden!
++ Listenwerte lassen sich schnell und komfortabel zu einem String zusammenführen String=Liste mit interessantem Verhalten:
+++ Liste von Einzelzeichen werden ohne Lehrzeichen zusammengeführt
+++ Liste von Stings werden mit Leerzeichen zusammengeführt (sobald mindest eine Zelle einen String der Länge > 1 enthält)

Listen http://wiki.scratch-dach.info/wiki/Listen
+ Listen sortieren
+ Datenstrukturen in Listen realisieren
++ Stack = Last in first out
++ mehrdimensionale Arrays
+++ Liste in Listen mit Trennzeichen z.B: a/b/c/d http://scratch.mit.edu/projects/18975708/
+++ mehrdimensionale Arrays mit Indexformel auf lineare Liste abbilden http://scratch.mit.edu/projects/10122815
+++ lokale Listen in Klons verwalten (Hack?) http://scratch.mit.edu/projects/17960850/
++ hierarchische Datenhaltung / Ordnerstruktur http://scratch.mit.edu/projects/12066786
+ Listenbasierter Computer

Konverter / Translator / Generator
+ Morsecode http://scratch.mit.edu/projects/780120
+ ASCII-Konverter http://scratch.mit.edu/projects/10667037
+ Scratch-HTML http://scratch.mit.edu/projects/20964954

Cloud-Daten
+ Wer darf?
+ No Chat!
+ No Listen

E-books! http://scratch.mit.edu/sttudios/260135

List based games =Games without sprites (back to the roots! ) Sammlung

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Was fehlt noch?

Du könntest noch das Text engine von djpro dazunehmen.

Ich weiß, das passt jetzt vielleicht nicht zum aktuellen Thema … aber ich finde es ist wichtig, es auch dabei zu haben!

Powered by DjangoBB