====== Die Raster-Klasse ====== Download: {{lehrkraefte:blc:informatik:ffprg1-2024: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: * Eine HTML-Datei mit einigen HTML-Elementen, die mit bestimmten Klassen und/oder IDs versehen sind. * Eine CSS-Datei, die das Layout definiert * Eine JS-Datei, die das Raster als Objekt initialisiert und womit dann interagiert werden kann. ===== Wichtigste HTML-Elemente ===== Folgende Elemente werden erwartet:
Wobei die ''div''s 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 ''div''s 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 ===== * Der ''constructor'' wird beim Anlegen eines Rasters (z.B. mit ''meinRaster = new Raster(3,3)'') aufgerufen und generiert alle Einträge. * Die Methoden (Funktionen) ''getValue(x,y)'' und ''setValue(x,y,v)'' um Werte (Zahlen) der einzelnen Rasterfelder zu erfahren, bzw. zu setzen. * Die Methode ''isOn(x,y)'' ergibt ''true'' oder ''false'', je nachdem, ob die Korrdinaten $(x,y)$ auf dem Spielfeld liegen oder nicht. * Die Klassen-Methode ''Raster.addColorRules'', die für ein Array von Farben entsprechende CSS-Klassen anlegt. * Das Attribut ''clickCallback'' kann auf eine Funktion gesetzt werden, die mit den Koordinaten eines geklickten Felds aufgerufen werden soll. ===== Einbinden von Knöpfen ===== In HTML, den Knopf mit einer ID versehen: 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 JavaScript: let speichernKnopf = this.document.getElementById('speichernknopf'); speichernKnopf.addEventListener('click', speichern); function speichern() { let bild = ""; for (let y=0; y Schachbrettmuster: function schach() { for (let y=0; y