Table of Contents

Die Raster-Klasse

Download: raster-minimal.zip. Achtung Das zip-Archiv muss entpackt werden, bevor damit gearbeitet wird. Wenn nicht 100% klar ist, was damit gemeint ist, unbedingt nachfragen. You have been warned!

Die Rasterklasse beinhaltet:

Wichtigste HTML-Elemente

Folgende Elemente werden erwartet:

<body>
    <div class="menu topleft"></div>
    <div id="gridcontainer"></div>
    <div class="menu bottomright"></div>
</body>

Wobei die divs mit Klasse menu je nach Fensterverhältnis darüber und darunter, oder links und rechts angegezeigt werden und für Kontroll-Elemente gedacht sind.

Das div mit id gridcontainer wird von der Raster-Klasse mit den Raster-Elementen (ebenfalls divs befüllt).

Wichtigste CSS-Einträge

Die ganze Seite sowie die Menüs werden mit display:flex formatiert, siehe https://css-tricks.com/snippets/css/a-guide-to-flexbox/

Das Raster selbst ist mir display:grid formatiert, wobei die Anzahl Spalten in einer CSS-Variablen mit Namen –spalten festgelegt wird, siehe https://css-tricks.com/snippets/css/complete-guide-grid/

JavaScript

Einbinden von Knöpfen

In HTML, den Knopf mit einer ID versehen:

  <button id="startknopf">Start</button>

In JavaScript, den Knopf via ID auslesen und mit einem eventListener versehen:

    let startKnopf = this.document.getElementById('startknopf');
    startKnopf.addEventListener('click', function() {
        console.log("Hat Start gedrückt");
    });

Bilder speichern und laden

HTML-Knopf

  <button id="speichernknopf">Speichern</button>
  <input type="text" id="bildtext">
  <button id="ladenknopf">Laden</button>

JavaScript:

   let speichernKnopf = this.document.getElementById('speichernknopf');
    speichernKnopf.addEventListener('click', speichern);
 
    function speichern() {
        let bild = "";
        for (let y=0; y<meinRaster.height; y++) {
            for (let x=0; x<meinRaster.width; x++) {
                let wert = meinRaster.getValue(x,y);
                bild += String(wert);
            }
        }
        console.log(bild);
        document.getElementById('bildtext').value = bild;
    }
 
 
      let ladenKnopf = this.document.getElementById('ladenknopf');
    ladenKnopf.addEventListener('click', laden);
 
    function laden() {
        let bild = document.getElementById('bildtext').value;
        console.log(bild);
        for (let i=0; i<bild.length; i++) {
            let wert = Number(bild[i]);
            let x = i % meinRaster.width;
            let y = Math.floor(i/meinRaster.width);
            meinRaster.setValue(x,y, wert)
        }
    }

Schachbrettmuster:

    function schach() {
        for (let y=0; y<meinRaster.height; y++) {
            for (let x=0; x<meinRaster.width; x++) {
                let wert = (x+y)%2+1; // Hier geheime Formel einfügen
                meinRaster.setValue(x,y,wert);
            }
        }
    }