Commit Graph

182 Commits

Author SHA1 Message Date
d5abd4ef68 Biases im NeuronLayer eingeführt 2022-07-15 19:42:01 +02:00
9cd37fdce0 Merge branch 'main' into ml 2022-07-14 23:03:08 +02:00
7e023026ce Klasse FileLoader um Textdateien zu laden 2022-07-14 23:02:26 +02:00
005f8299ac Testklasse für Perlin Noise 2022-07-14 19:27:47 +02:00
763d9eff22 Bugfix beim setzen des StrokeType 2022-07-14 19:27:36 +02:00
b244a6e094 arrange und align Funktionen 2022-07-14 18:04:01 +02:00
4597fb411a DrawingLayer.pixel zeichnet nun direkt in den Puffer 2022-07-14 18:03:23 +02:00
9634d11842 Reihenfolge der Richtungs-Enum geändert 2022-07-14 18:02:48 +02:00
e6882fcbf7 WindowAdapter beendet die ZM nun direkt, und wartet nicht auf den Thread
Bisher hat ein Schließen des Fensters dazu geführt, dass `running = false` gestzt wurde und die Maschine den aktuellen Frame noch beenden konnte. Da ein Frame durch die Verwendung von `delay(int)` aber auch lange dauern kann, hatte man als Nutzer dann den Eindruck, dass der Klick nicht registriert wurde.
Nun beendet das Programm direkt, ruft aber trotzdem vorher `teardown()` und `cleanup()` auf.
2022-07-14 18:02:30 +02:00
c0831688ba Test für Noise-Klasse 2022-07-14 17:59:48 +02:00
1e4b865492 Color refactored 2022-07-14 17:59:32 +02:00
0098621ebe Klasse für Perlin Noise implementiert
Die Klasse erzeugt Zuffalswerte nach dem von Ken Perlin erfundenen „Improved Perlin Noise“ Algorithmus.
2022-07-14 17:59:17 +02:00
949f058b5d Fehlenden Klassenkommentar ergänzt 2022-07-12 23:33:38 +02:00
740bb37279 Klasse Constants kommentiert und refactored 2022-07-12 23:22:35 +02:00
f8550ceae5 Projekt an Gradle Struktur angepasst 2022-07-11 22:12:11 +02:00
ec8e5cea91 API angepasst und Javadoc verbessert 2022-07-11 13:53:15 +02:00
6a2adc9d4d Mehr Javadoc Korrekturen 2022-07-11 08:22:47 +02:00
9088e6eceb Merge branch 'main' into ml 2022-07-11 08:19:41 +02:00
2c322eb678 Javadocs angepasst und Fehler behoben 2022-07-11 08:18:52 +02:00
b60ffa9ef3 Projektstruktur an Gradle angepasst 2022-07-10 22:46:55 +02:00
0a72b97d56 Gradle initialisiert 2022-07-10 22:46:27 +02:00
4ea526b239 Erste Implementation eines einfachen neuronalen Netzes
Vorbild zur Implementation: https://github.com/wheresvic/neuralnet
2022-07-10 22:33:21 +02:00
54762cb3e6 enabelGlobalDebugging verbessert 2022-07-09 21:01:56 +02:00
2e5d5d7e83 Debug Nachricht beim shutdown 2022-07-09 21:01:39 +02:00
43c5b9f28e Fehler beim erstellen eines AudioStreams behoben 2022-07-09 21:01:01 +02:00
62f221e18e BlueJ Testprojekt entfernt 2022-07-09 21:00:11 +02:00
b3ff1a507e Tests auf Junit5 angepasst 2022-07-08 16:36:33 +02:00
3030445dcf Changelog 2022-07-07 09:21:39 +02:00
b6b8263e5e Reference auf TextBox entfernt 2022-07-07 09:20:36 +02:00
49ad98fd82 Namen der Threads gesetzt, für leichteres Debugging 2022-07-07 09:20:01 +02:00
1e552d6bc2 Changelog 2022-07-07 08:08:36 +02:00
4e147586e4 Audio Interface ud Mixer Klasse 2022-07-07 08:08:28 +02:00
5213dbb7e9 Formatierung 2022-07-06 22:18:00 +02:00
ed2c14a143 Dokumentation 2022-07-06 22:17:50 +02:00
f9f1cfed24 LineChart auf ChartValue interface umgestellt 2022-07-06 22:17:42 +02:00
e78ec53a53 Merge branch 'main' into charts 2022-07-06 21:29:58 +02:00
c5dd889406 Refactoring der Package-Struktur 2022-07-06 21:27:52 +02:00
a94194daf1 Beispielprojekte zur ZM entfernt
Die Projekte werden in einem eigenen Repository (zeichenmaschine-examples) neu veröffentlicht.
2022-07-06 21:23:44 +02:00
4ad24fc523 Changelog angepasst 2022-07-06 21:15:47 +02:00
e42b02763a width / height umbenannt, damit Constants nicht überschrieben werden
Dies ist ein generelles Problem. Wenn in Objekten die von Constants erben width und height als Objektvariablen genutzt werden sollen, ist die Größe der Zeichenleinwand nicht mehr direkt abrufbar.

Ggf. sollten die Variablen in Constants spezifischer benannt werden (z.B. `zmwidth` oder `canvaWidth`).
2022-07-06 21:15:23 +02:00
df335c8ff2 Weitere Methoden zum hinzufügen und entfernen von Shapes 2022-07-06 21:13:18 +02:00
28d996859a Versionsnummer angepasst 2022-07-06 21:12:57 +02:00
a400829594 updateGame als globale update Methode der Spielemaschine 2022-07-06 21:12:41 +02:00
b5faf202b8 Klassen Sound und Music zur Audiowiedergabe
Sound spielt kurze Clips (z.B. Soundeffekte) ab.
Music für längere Hintergrundmusik.

MP3s werden nur über die Einbindung der externen Abhängigkeiten jlayer, tritonus-share und mp3spi ermöglicht.
2022-07-06 20:46:49 +02:00
950098110f Eine TaskQueue in der Tasks geplant werden können
Es können Tasks (Runnables) für die geplante Ausführung (z.B. in 100 ms) übergeben werden. Die Tasks werden dann jeweils am Ende eines Frames abgearbeitet. Bei Bedarf auch parallel mit dem TaskRunner.

Das System sollte noch einmal Refactored werden. (Und ggf. auch auf seine Sinnhaftigkeit geprüft werden.)
2022-07-06 20:41:34 +02:00
ffe9bef5fd Synchronisierte EventQueue für InputEvents
Eingaben der Swing Componente werden nun in eine interen EventQueue einsortiert, die einmal pro Frame abgearbeitet wird. Das verhindert Probleme bei der Synchronisierung der ZM mit dem EDT von Swing.

Im Moment werden die Originalen InputEvent gespeichert und verarbeitet. In Zukunft könnte eine eigene Event-Klasse sinnvoll sein, die die Events für die Nutzer vereinfacht (siehe Processing).
2022-07-06 20:39:34 +02:00
81624e3a7a Setter für FPS verhindert das setzen auf weniger als 0 frames 2022-07-06 20:36:27 +02:00
1a26afb1ae Fehlende Imports in der Zeichenmaschine gefixt 2022-07-06 20:33:57 +02:00
264552c8b7 Neue Klasse TaskRunner
TaskRunner ist eine statische Klasse, die einen ThreadPool verwaltet und es anderen KLassen ermöglicht, Parallele Prozesse auszuführen. Die ZM ist grundsätzlich erstmal nicht auf Parallelität ausgelegt, da alle im „GameLoop“ (Zeichenmaschine$Zeichenthread) pro Frame synchron läuft. Einige Aufgaben erfordern aber eigene Therad (z.B. das Abspielen von Musikdateien oder zukünftige Animationen).

Der TaskRunner ist eine erste Verison einer Klasse, die zukünftig in der ZM an Bedeutung gewinnen könnte, wenn Parallelität wichtiger wird (z.B. in der Spielemaschine).
2022-07-06 20:33:10 +02:00
bb330c81b8 Reafactoring des ImageLoader
ImageLoader nutz nun den ResourceStreamProvider und die Logging API
2022-07-06 20:29:50 +02:00