mirror of
https://github.com/Cametendo/EMVs-Creative-coding.git
synced 2026-06-20 17:45:02 +02:00
commit.sh
This commit is contained in:
3
week-4/apfel.txt
Normal file
3
week-4/apfel.txt
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
Das ist ein Haus.
|
||||||
|
Das ist ein Hund
|
||||||
|
Das könnte sein.
|
||||||
29
week-4/benutzerliste.txt
Normal file
29
week-4/benutzerliste.txt
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
BENUTZERLISTE
|
||||||
|
|
||||||
|
1. PRIMÄRE NUTZER (Main Target Group)
|
||||||
|
- Alltags-Organisierer
|
||||||
|
Nutzen die App täglich oder fast täglich, brauchen schnelle Erfassung und verlässliche Erinnerungen.
|
||||||
|
- Strukturierte Listen-Nutzer
|
||||||
|
Arbeiten gern mit einfachen Listen und Kategorien, möchten Übersicht ohne Komplexität.
|
||||||
|
- Deadline-/Reminder-Nutzer
|
||||||
|
Nutzen die App vor allem für „Erinnere mich rechtzeitig“, weniger für grosse Strukturen.
|
||||||
|
|
||||||
|
2. SEKUNDÄRE NUTZER (gelegentliche Nutzer)
|
||||||
|
- Gelegenheits-Planer
|
||||||
|
Öffnen die App nur ein paar Mal pro Woche, nutzen Basisfunktionen.
|
||||||
|
- Kalender-Fokus-Nutzer
|
||||||
|
Denken zeitbasiert, nutzen die App als Ergänzung zum Kalender.
|
||||||
|
- Projekt-orientierte Nutzer
|
||||||
|
Nutzen die App temporär für grössere Schul-/Arbeitsprojekte.
|
||||||
|
|
||||||
|
3. SONSTIGE (nicht Hauptzielgruppe, aber real vorhanden)
|
||||||
|
- Interessierte Test-Nutzer
|
||||||
|
Installieren → testen → eventuell behalten.
|
||||||
|
- Minimalisten
|
||||||
|
Nutzen selten ToDos, brauchen aber manchmal schnelle Erinnerungen oder kurze Notizen.
|
||||||
|
|
||||||
|
4. NICHT-NUTZER
|
||||||
|
- Bewusste Nicht-Nutzer
|
||||||
|
Organisieren alles im Kopf oder auf Papier, wollen keine App.
|
||||||
|
- Technische Pflichtrollen
|
||||||
|
Devs, Support, Admins – gehören nicht zur echten Produktzielgruppe.
|
||||||
18
week-4/index.html
Normal file
18
week-4/index.html
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
|
||||||
|
<title>Sketch</title>
|
||||||
|
|
||||||
|
<link rel="stylesheet" type="text/css" href="style.css" />
|
||||||
|
|
||||||
|
<script src="/libraries/p5.min.js"></script>
|
||||||
|
<script src="/libraries/p5.sound.min.js"></script>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<script src="markov-chain.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
68
week-4/l-system.js
Normal file
68
week-4/l-system.js
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
let angle;
|
||||||
|
let axiom = "F";
|
||||||
|
let sentence = axiom;
|
||||||
|
let len = 100;
|
||||||
|
let rules = [];
|
||||||
|
rules[0] = {
|
||||||
|
a: "F",
|
||||||
|
// b: "FF-[-F-F-F]+[+F+F+F]",
|
||||||
|
c: "FF*[*F/F/F]/[/F*F*F]",
|
||||||
|
};
|
||||||
|
|
||||||
|
function generate() {
|
||||||
|
len *= 0.5;
|
||||||
|
let nextSentence = "";
|
||||||
|
for (let i = 0; i < sentence.length; i++) {
|
||||||
|
let current = sentence.charAt(i);
|
||||||
|
let found = false;
|
||||||
|
for (let j = 0; j < rules.length; j++) {
|
||||||
|
if (current == rules[j].a) {
|
||||||
|
found = true;
|
||||||
|
nextSentence += rules[j].b;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!found) {
|
||||||
|
nextSentence += current;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sentence = nextSentence;
|
||||||
|
createP(sentence);
|
||||||
|
turtle();
|
||||||
|
}
|
||||||
|
|
||||||
|
function turtle() {
|
||||||
|
background(51);
|
||||||
|
resetMatrix();
|
||||||
|
translate(width / 2, height);
|
||||||
|
stroke(255, 100);
|
||||||
|
for (let i = 0; i < sentence.length; i++) {
|
||||||
|
let current = sentence.charAt(i);
|
||||||
|
if (current == "F") {
|
||||||
|
line(0, 0, 0, -len);
|
||||||
|
translate(0, -len);
|
||||||
|
} else if (current == "+") {
|
||||||
|
rotate(angle);
|
||||||
|
} else if (current == "-") {
|
||||||
|
rotate(-angle);
|
||||||
|
} else if (current == "*") {
|
||||||
|
rotate(angle * 2);
|
||||||
|
} else if (current == "/") {
|
||||||
|
rotate(angle / 2);
|
||||||
|
} else if (current == "[") {
|
||||||
|
push();
|
||||||
|
} else if (current == "]") {
|
||||||
|
pop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function setup() {
|
||||||
|
createCanvas(400, 400);
|
||||||
|
angle = radians(10);
|
||||||
|
background(51);
|
||||||
|
createP(axiom);
|
||||||
|
turtle();
|
||||||
|
let button = createButton("generate");
|
||||||
|
button.mousePressed(generate);
|
||||||
|
}
|
||||||
67
week-4/markov-chain.js
Normal file
67
week-4/markov-chain.js
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
let myData;
|
||||||
|
const amountOfWords = 100;
|
||||||
|
let uniqueArray = [];
|
||||||
|
let sentenceArray = [];
|
||||||
|
let exist = false;
|
||||||
|
|
||||||
|
function preload() {
|
||||||
|
myData = loadStrings("apfel.txt");
|
||||||
|
}
|
||||||
|
|
||||||
|
function setup() {
|
||||||
|
createCanvas(400, 300);
|
||||||
|
console.log(myData);
|
||||||
|
background(200);
|
||||||
|
|
||||||
|
const myDataSplit = myData.flatMap((str) => str.split(" ")).filter(Boolean);
|
||||||
|
//console.log(myDataSplit);
|
||||||
|
|
||||||
|
for (let i = 0; i < myDataSplit.length; i++) {
|
||||||
|
for (let j = 0; j < uniqueArray.length; j++) {
|
||||||
|
if (myDataSplit[i] === uniqueArray[j]) {
|
||||||
|
exist = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!exist) {
|
||||||
|
uniqueArray.push(myDataSplit[i]);
|
||||||
|
}
|
||||||
|
exist = false;
|
||||||
|
}
|
||||||
|
console.log(uniqueArray);
|
||||||
|
|
||||||
|
let map = new Map();
|
||||||
|
let nextWords = [];
|
||||||
|
for (let i = 0; i < uniqueArray.length; i++) {
|
||||||
|
nextWords = [];
|
||||||
|
for (let j = 0; j < myDataSplit.length; j++) {
|
||||||
|
if (uniqueArray[i] === myDataSplit[j]) {
|
||||||
|
nextWords.push(myDataSplit[j + 1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
map.set(uniqueArray[i], nextWords);
|
||||||
|
// map.set("nextWords", uniqueArray[i + 1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
map.set("abc", ["a", "b", "g"]);
|
||||||
|
|
||||||
|
console.log(map);
|
||||||
|
|
||||||
|
// Select a random line from the text.
|
||||||
|
/*let phrase = "";
|
||||||
|
for (let i = 0; i < amountOfWords; i++) {
|
||||||
|
let phrasePart = random(myDataSplit);
|
||||||
|
phrase = phrase + " " + phrasePart;
|
||||||
|
}
|
||||||
|
console.log(phrase); */
|
||||||
|
|
||||||
|
textAlign(LEFT, CENTER);
|
||||||
|
textFont("Courier New");
|
||||||
|
textSize(12);
|
||||||
|
|
||||||
|
// text(phrase, 20, 100, 300);
|
||||||
|
|
||||||
|
// describe(`${phrase}`);
|
||||||
|
text("- William Shakespeare", 20, 250);
|
||||||
|
}
|
||||||
|
|
||||||
|
function generateWords() {}
|
||||||
36
week-4/markovtest.js
Normal file
36
week-4/markovtest.js
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
// An array of lines from a text file
|
||||||
|
let lines;
|
||||||
|
// The Markov Generator object
|
||||||
|
let markov;
|
||||||
|
// An output element
|
||||||
|
let output;
|
||||||
|
|
||||||
|
// Preload some seed data
|
||||||
|
function preload() {
|
||||||
|
lines = loadStrings("shakespere.txt");
|
||||||
|
}
|
||||||
|
|
||||||
|
function setup() {
|
||||||
|
// Join everything together in one long string
|
||||||
|
// Keep carriage returns so these will show up in the markov generator
|
||||||
|
let text = lines.join("\n");
|
||||||
|
|
||||||
|
// N-gram length and maximum length
|
||||||
|
markov = new MarkovGenerator(8, 400);
|
||||||
|
markov.feed(text);
|
||||||
|
//console.log(markov);
|
||||||
|
|
||||||
|
// Make the button
|
||||||
|
let button = createButton("generate");
|
||||||
|
button.mousePressed(generate);
|
||||||
|
|
||||||
|
noCanvas();
|
||||||
|
}
|
||||||
|
|
||||||
|
function generate() {
|
||||||
|
// Generate some text
|
||||||
|
let result = markov.generate();
|
||||||
|
// Put in HTML line breaks wherever there was a carriage return
|
||||||
|
result = result.replace("\n", "<br/><br/>");
|
||||||
|
createP(result);
|
||||||
|
}
|
||||||
121753
week-4/shakespeare.txt
Normal file
121753
week-4/shakespeare.txt
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user