Impressum
Datenschutz
   Projekte die vielleicht auch interessant für andere sind
   + deren Ergebnisse nicht nur mir nützen können.

Private Homepage

Auch eine "unendliche Geschichte" ... Der Grund für eine Homepage war, meine Bewerbungsunterlagen abzulegen und per Name und Passwort den Interessenten freizugeben. Das Ziel ist erreicht, alles weitere wird wachsen und gedeihen. Mittlerweile bin ich im "Unruhestand".

Mittlerweise ist viel Zeit vergangen und einiges ist nicht mehr aktuell, da die IT-Landschaft sich weiterentwickelt hat. Aus diesem Grund werden die neuen und aktuellen Projekte zuerst angezeigt und die anderen als Archiv in absteigender zeitlicher Reihenfolge.



Kann man ein Spiel mit Javascript programmieren

Es ist Corona-Zeit, das Wetter ist 'bescheiden', um in den Kleingarten zu gehen und sonstige Aktivitäten sind auch nicht wirklich möglich. Da bleibt nur Zocken am PC. Dabei kam die Frage auf: Kann man (zum Beispiel ich) nur mit Javascript Mittel in einer Webseite ein Spiel programmieren?? Das Konzept (nicht neu!): Bälle, die Klötze abschießen. Hier taucht sofort der Begriff Reflexion auf. Einfacher gesagt als getan: Einfallwinkel = Ausfallwinkel. Eine schiefe Ebene ist auch dabei. Und schon ging es los. Mit Papier, Geodreieck, Winkelfunktionen und Radiergummi. Der Pythagoras musste auch wieder bemüht werden. Nicht zu vergessen die Tabellenkalkulation, um die Formeln und die Testfälle für die Richtungsquadranden zu finden. War kniffelig, machte aber Laune, besonders die Fehlersuche, wenn ein Ball mal das Spielfeld verließ oder sich in eine Ecke verkroch und nicht wieder raus kam. Das Ergebnis ist HIER

Das Prinzip funktionierte, nur die Überprüfung der Formeln mit den Winkelfunktionen und das Finden der Tippfehler dauerte etwas.

Ein Nachtrag im August: Es wurde die Strategie von 'vielen sensiblen Rechtecken' in 'eine sensible Fläche' geändert. Das reduziert die Abfragen. Damit gibt es die Prüfungen Punkt in Rechteck, Punkt in Dreieck und Punkt in Kreis. Bei Betreten der Fläche wird weiter geprüft, in welchen Bereich der Punkt gelandet ist. An einen bösen Fehler hatte ich nicht mehr gedacht und etwas länger suchen müssen, ist aber logisch. Bei der Flächenberechnung von Dreiecken wird die Fläche mehrerer Dreiecke berechnet und die Summe auf Gleichheit geprüft. Da zwei berechnete Werte verglichen werden, muss man die absolute Differenz bilden und mit einer kleinen Konstante vergleichen (kleiner 0,0000001 ist 0). Theoretisch sind die berechneten Werte gleich ( == ) doch durch die begrenzte Anzahl der Nachkommastellen beim Berechnungsvorgang entstehen Rundungsfehler. Die Differenz betrug 'irgendwas' mit 10-13. Zusätzlich wurde ein Zufallswert beim Treffer für die Ball-Richtung eingebaut, um die mathematischen Schleifen zu verhindern. Und noch ein BUG: Gelegendlich wurden mehr als zwei neue Reihen am Ende der Runde erzeugt und zwar doppel so viele, was zum vorzeitigen Spielende führte. Grund war, das die Logik von zwei Ereignissen aufgerufen wurde, ein Ball erreicht unteren Rand und ein gelber Ball wurde verschluckt. Wenn es jeweils der letzte Ball war, ist die Runde beendet. Im Fall, dass beide Ereignisse gleichzeitig eintreffen, wurde die Logik zweimal durchlaufen. Eine Verriegelung beseitigte den Fehler.

Der Effekt der langsamen Bälle und dem Debugger ist geklärt. Laut Bugzilla@Mozilla (Bug 1661471) soll man statt "setIntervall" die Funktion "requestAnimationFrame" benutzen. Grund: Unter Windows kann die System-Timer-Auflösung sehr grob sein und von anderen Programmen auf dem Computer angepasst werden, sodass man möglicherweise sehr widersprüchliche Ergebnisse bekommt. Lösung: Umstellung auf "requestAnimationFrame" mit dem Ergebnis, auch langsam (aber Systemkonform). Eine Erhöhung der Inkrementwerte für die x- und y-Richtung (4px) funktioniert nicht, weil dann der Kollisionsalgorithmus nicht mehr funktioniert. Deshalb habe ich als Ersatz für die Erhöhung des Inkrementwertes den Kollisionsalgorithmus in der Animationsschleife vier mal aufgerufen. Nur nach dem letzten Aufruf ich der Schleife wird der Bildschirm aktualisiert. Ein bisschen am Inkrementwert 'geschraubt' und schon funktioniert es mit der Geschwindigkeit. Bei dieser Gelegenheit habe ich die Inkrementwerte auf eine konstante Distanz der Positionen umgerechnet, damit die Geschwindigkeit in allen Richtungen gleich bleibt.

Während die Bälle laufen kann man jetzt die Blöcke mit der Maus fixieren, wodurch die Treffer nicht mehr gezählt werden. Für die schwarz-roten Kugeln wurde der Algorithmus - Ball prallt von Kugel ab - implementiert. Dieser wurde dann auf die Bälle übertragen - Ball prallt von Ball ab. Die Ballkollision kann wahlweise eingeschaltet werden.

Ton gibt es jetzt auch mit Lautstärkeeinstellung.

Damit man sich die Einstellungen nicht merken muss und bei jedem Start neu setzen, kann man einen Link generieren, der die Einstellungen automatisch setzt.

SOOOO: Das Umeinander-Tanzen der Bälle habe ich auch reduziert und die Ursache, das die Bälle gelegentlich außerhab des Spielfeldes landen - einer von 300 Bällen nach einer Stunde im fast geschossenen Spielfeld - ist auch gefunden. Hat ein paar Tage gedauert!!! Zum Abschluss gibt es dann noch drei Geschwinigkeitsstufen für die Bälle.

März-April 2021: Manchmal hätte ich gerne das Spiel unterbrochen und später weiter gespielt. Aber das Speichern ist das so eine Sache mit dem Datenschutz. Um das Speichern zu vermeiden, kam ich auf die Idee, einen Link mit dem Spielstand zu erzeugen und im Adressfeld des Browsers anzuzeigen. Also wird nichts vom Spiel selbst gespeichert, nur ein Link angezeigt. Das Speichern des Links obliegt dann dem Spieler.


Ein frei positionierbares SCROLL Knopf

Manche Web-Seiten kann man sehr weit nach unten scrollen aber einen Knopf, um zum "TOP" zu kommen, fehlt. Oft ist auch das Menü beim Scrollen weg. Hier hilft das Firefox Addon "Free Scroll Button". Der Knopf ist frei positionierbar und die Position kann für die Domain oder für die Seite abgepeichert werden. Die Position landet im "localStorage" vom Browser. Die F1 Taste zeigt eine kleine Hilfe.


Nur ein Bild zoomen, eine Alternative zur Lightbox

Manchmal möchte man kleine dekorative Bilder in die Webseite einbauen und doch eine größere Version des Bildes anzeigen können. Wenn dann das Bild eine Karte ist und man sensitive Flachen (Areas) nutzen möchte, kommt man mit der Lightbox nicht weiter. Aber hier!


Web Rahmen einfach gestalten - aber wie ... und mehr wie Gradieneten (Farbverläufe) und Schatten

Manchmal ist es nicht einfach einen Rahmen für ein Bild in der Webseite zu gestalten - nach dem Prinzip "Try and Error". Hier ein Weg, wie man die Auswirkungen der HTML-Parameter direkt in der Webseite sehen kann. Zusätzlich erhält man Unterstützung für harmonische Farben.


Die Sache mit den Image-Maps

Nach langer Zeit sollte nun die Hobby-Seite mal gestaltet werden. Meine Idee war ein Hintergrundbild mit sensitiven Flächen. Im Prinzip eigentlich einfach - man nutzt Image Maps (<map> mit <area>). Und da waren wieder die Probleme!





Ab hier sich die Projekte als Archiv abgelegt.


Verzögerter Autostart beim Booten

Manchmal wünscht man sich beim Booten, dass ein Programm beim Autostart erst später los läuft.


DIV Scrollbar links

Mit 3 DIVs, den richtigen Stylesheeds und ein bisschen Javascript steht der Scrollbalken auf der linken Seite.


Registry Keys einfacher setzen

Die Sammlung von Registry Keys mit ausführbaren Batch - Dateien ohne lästiges Tippen.


CheckedListBox

Die standard CheckedListBox wird nur alphabetisch sortiert. Mit kleinen Erweiterungen wird eine Sortierung nach dem Checked Status möglich.


MultiColumnTree

Ein primitiver MultiColumnTree implementiert als UserControl unter Visual Studio .NET in C#.


Sitemaps Generierung für Google

Es gibt einige Sitemap Generatoren im Netz.... aber .... ich hatte eigene Vorstellungen. Es sollte ein Offline - Tool sein, welches auf Basis der lokal gehaltenen Homepagestruktur die Sitemaps generiert und hochläd. Bei der Gelegenheit fielen zwei Controls ab, ein MultiColumnTree und eine CheckedList mit Sortierung nach dem Check-Status.


Tool zum Verwalten der Accounts

Um komfortabel die Accounts für mein Profil zu verwalten, habe ich mir ein Programm in C# gestrickt. Es ist z. Z. auf das Format für Homepages bei Arcor zugeschnitten, lässt sich aber leicht auf andere Provider anpassen (hoffe ich doch).

Für das vergeben eines Namens und Passwortes für den Zugriff auf ein Verzeichnis bieten die Provider browsergestützte Verwaltungstools.


zurück zurück