Sechs Kursabende à vier Stunden an der EB Zürich
Kurskonzeption und Leitung Hanna Züllig
//____Visualisierung von Text____ PFont font; // intiale Text-Liste String [] unfilteredTextList; // ungefilterte Word-Liste mit Einträgen vom Typ String String [] unfilteredWordList; // gefilterte Word-Liste, ohne Definition des Datentyps und der Grösse ArrayList filteredWordList = new ArrayList(); PVector dotList[]; int dotAmount = 200; float maxDistance = 500; float minDistance = 30; //____Setup____ void setup() { size(800, 800); smooth(); font = createFont("Franklin Gothic Demi Cond", 24); // Arbeitsschritte loadText(); prepareText(); analyzeText(); noLoop(); } //____Text einlesen____ void loadText() { // Dateiname String url = "sketches/kurstag07/Nadja/data/sampleText.txt"; // Befehl zum Laden der Text-Datei und Befüllen der initialen Liste unfilteredTextList = loadStrings( url ); } //____Text aufbereiten____ void prepareText() { // den Text zu einem String zusammenfassen String joinedText = join(unfilteredTextList, " "); // Definition der Trennzeichen String delimiters = ", .?!;:/{}"; // Teilen des gesamten joinedText in einzelne Wörter unfilteredWordList = splitTokens(joinedText, delimiters); } //____Text analysieren____ void analyzeText() { int count = 0; int maxCount = unfilteredWordList.length; // Ein Wort aus der Liste mit den anderen Wörtern vergleichen while(count < maxCount) { // aktuelles Wort aus der Liste String currentWord = unfilteredWordList[count]; int count2 = 0; int wordCount = 0; // Vergleichen der Wörter while(count2 < maxCount) { // aktuelles Vergleichswort String wordInList = unfilteredWordList[count2]; // println( "currentWord: " + currentWord + " wordInList: " + wordInList ); // Vergleich if(currentWord.equals(wordInList)) { wordCount++; } count2++; } // Wort in der Liste ablegen, soweit es noch moeglich ist addWordToFilteredList(currentWord, wordCount); count++; } } //____Gefundenes Wort und dessen Häufigkeit im Datencontainer WordElement festhalten____ void addWordToFilteredList(String word, int wordCount) { // neue Instanz von WordElement erstellen WordElement newElement = new WordElement(); // Zuweisung der Daten newElement.wordCount = wordCount; newElement.title = word.toLowerCase(); int count = 0; int amount = filteredWordList.size(); boolean foundInList = false; // Überpruefung, ob es ein neues Element ist while(count < amount) { // Element aus Liste auslesen, Typ muss angegeben werden WordElement newElementInList = (WordElement) filteredWordList.get(count); // Überpruefung, ob das Element bereits in der Liste ist if(newElementInList.title.equals(newElement.title)) { foundInList = true; } count++; } // wenn es ein neues Element ist, in Liste einfuegen if(foundInList == false) { filteredWordList.add(newElement); } } //____Eigentliches Zeichnen____ void draw() { background(255); smooth(); visualizeText(); } //____Text visualisieren____ void visualizeText() { int count = 0; int amount = filteredWordList.size(); while(count < amount) { // Element aus Liste lesen, Typ muss angegeben werden WordElement newElementInList = (WordElement) filteredWordList.get(count); // Titel des Elements String title = newElementInList.title; // Anzahl des Elements String wordCount = str(newElementInList.wordCount); // Schriftgröße auf Basis der Häufigkeit des newElements textFont( font, newElementInList.wordCount * 5 ); int circleSize = newElementInList.wordCount * 8; int nextAlpha = 255/10; fill(255, 200, 0, nextAlpha*6); strokeWeight(1.5); stroke(255, 200, 0, nextAlpha*9); ellipse(random(width), random(height), circleSize, circleSize); // Text anzeigen fill(255, 200, 0, nextAlpha*8); text(title, random(width)+20, random(height)+10); count++; } } //____Datencontainer WordElement____ //Name der Classe class WordElement { int wordCount; String title; // Konstruktor WordElement() { } }